probleme lecture Eeprom FT230XS

Codes specifiques à Windows
ebelouet
Messages : 9
Inscription : dim. 04/janv./2026 19:21

Re: probleme lecture Eeprom FT230XS

Message par ebelouet »

voila ce que j ai avec un FT230XS
0
1
䉅刲㜹ㅕ
䉅刲㜹ㅕ
䉅刲
䉅刲㜹ㅕ
-1
2
ebelouet
Messages : 9
Inscription : dim. 04/janv./2026 19:21

Re: probleme lecture Eeprom FT230XS

Message par ebelouet »

voici ce que j ai dans la fenetere en reponce
0
1
䉅刲㜹ㅕ
䉅刲㜹ㅕ
䉅刲
䉅刲㜹ㅕ
-1
2
Bruce33
Messages : 22
Inscription : dim. 10/sept./2023 14:02

Re: probleme lecture Eeprom FT230XS

Message par Bruce33 »

Les chaînes de caractères sont fournies en ASCII par la librairie FTD2XX.dll alors que PureBasic travaille en Unicode.
Il faut donc faire attention au traitement des chaînes de caractères sinon on obtient des caractères inopportuns, comme vous en avez fait l'expérience.

J'ai testé le programme ci-dessous pour lire les informations de base. Il fonctionne chez moi avec PureBasic 6.21 64-bit, le driver FTDI en version 2.12.28, les puces FT232R et FT232AM.

Code : Tout sélectionner

; Test d'utilisation du driver D2XX des appareils FTDI (composants de communication série)

EnableExplicit

; Nom du fichier de librairie DLL fourni par FTDI (même nom en 32 bits et en 64 bits)
#FT_D2XX_DLL = "ftd2xx.dll"
; Status OK renvoyé par les fonctions
#FT_OK = 0
; Liste des appareils
Global Dim FT_DeviceType.s(32) ;{
	FT_DeviceType(0) = "FT_DEVICE_232BM"
	FT_DeviceType(1) = "FT_DEVICE_232AM"
	FT_DeviceType(2) = "FT_DEVICE_100AX"
	FT_DeviceType(3) = "FT_DEVICE_UNKNOWN"
	FT_DeviceType(4) = "FT_DEVICE_2232C"
	FT_DeviceType(5) = "FT_DEVICE_232R"
	FT_DeviceType(6) = "FT_DEVICE_2232H"
	FT_DeviceType(7) = "FT_DEVICE_4232H"
	FT_DeviceType(8) = "FT_DEVICE_232H"
	FT_DeviceType(9) = "FT_DEVICE_X_SERIES"
	FT_DeviceType(10) = "FT_DEVICE_4222H_0"
	FT_DeviceType(11) = "FT_DEVICE_4222H_1_2"
	FT_DeviceType(12) = "FT_DEVICE_4222H_3"
	FT_DeviceType(13) = "FT_DEVICE_4222_PROG"
	FT_DeviceType(14) = "FT_DEVICE_900"
	FT_DeviceType(15) = "FT_DEVICE_930"
	FT_DeviceType(16) = "FT_DEVICE_UMFTPD3A"
	FT_DeviceType(17) = "FT_DEVICE_2233HP"
	FT_DeviceType(18) = "FT_DEVICE_4233HP"
	FT_DeviceType(19) = "FT_DEVICE_2232HP"
	FT_DeviceType(20) = "FT_DEVICE_4232HP"
	FT_DeviceType(21) = "FT_DEVICE_233HP"
	FT_DeviceType(22) = "FT_DEVICE_232HP"
	FT_DeviceType(23) = "FT_DEVICE_2232HA"
	FT_DeviceType(24) = "FT_DEVICE_4232HA"
	FT_DeviceType(25) = "FT_DEVICE_232RN"
	FT_DeviceType(26) = "FT_DEVICE_2233HPN"
	FT_DeviceType(27) = "FT_DEVICE_4233HPN"
	FT_DeviceType(28) = "FT_DEVICE_2232HPN"
	FT_DeviceType(29) = "FT_DEVICE_4232HPN"
	FT_DeviceType(30) = "FT_DEVICE_233HPN"
	FT_DeviceType(31) = "FT_DEVICE_232HPN"
	FT_DeviceType(32) = "FT_DEVICE_BM_A"   ;}

; Structure utilisée pour passer les informations de l'appareil depuis la fonction FT_GetDeviceInfoList
Structure FT_Device_List_Info_Node
  Flags.l 
  Type.l
  ID.l
  LocId.l
  SerialNumber.a[16]
  Description.a[64]
  ftHandle.i
EndStructure

;- Chargement de la librairie
Global FT_Library.i = OpenLibrary(#PB_Any, #FT_D2XX_DLL)
If Not FT_Library
  Debug "Echec du chargement de " + #FT_D2XX_DLL
  End
EndIf

;- Déclaration des fonctions de la DLL
Prototype.l proto_FT_CreateDeviceInfoList (*NumDevs)
Global FT_CreateDeviceInfoList.proto_FT_CreateDeviceInfoList = GetFunction(FT_Library, "FT_CreateDeviceInfoList")

Prototype proto_FT_GetDeviceInfoList(*Dest.FT_Device_List_Info_Node, *NumDevs)
Global FT_GetDeviceInfoList.proto_FT_GetDeviceInfoList = GetFunction(FT_Library, "FT_GetDeviceInfoList")


Define Status.l ; Valeur de status renvoyée par les appels des fonctions
Define NumDevs.l = 0 ; Nombre d'appareils connectés
Define i

;- Appel de la fonction FT_CreateDeviceInfoList obligatoire avant de récupérer les informations
Status = FT_CreateDeviceInfoList (@NumDevs)
Debug "Nombre d'appareils détectés : " + NumDevs
;- Récupération des infos de chaque appareil
If NumDevs > 0
  ; Tableau contenant les infos des appareils
  Dim DeviceInfo.FT_Device_List_Info_Node(NumDevs-1)
  Status  = FT_GetDeviceInfoList(@DeviceInfo(), @NumDevs)
  If Status = #FT_OK
    For i = 0 To NumDevs-1
        Debug #CRLF$ + "--- Infos sur l'appareil n°" + Str(i+1) + " ---"
        Debug "Type : " + FT_DeviceType(DeviceInfo(i)\Type)
        Debug "Numéro de série : " + PeekS(@DeviceInfo(i)\SerialNumber, -1, #PB_Ascii)
        Debug "Description : " + PeekS(@DeviceInfo(i)\Description, -1, #PB_Ascii)
    Next
  EndIf
EndIf
Répondre