Page 2 sur 2

Re: probleme lecture Eeprom FT230XS

Publié : dim. 11/janv./2026 21:17
par ebelouet
voila ce que j ai avec un FT230XS
0
1
䉅刲㜹ㅕ
䉅刲㜹ㅕ
䉅刲
䉅刲㜹ㅕ
-1
2

Re: probleme lecture Eeprom FT230XS

Publié : dim. 11/janv./2026 23:31
par ebelouet
voici ce que j ai dans la fenetere en reponce
0
1
䉅刲㜹ㅕ
䉅刲㜹ㅕ
䉅刲
䉅刲㜹ㅕ
-1
2

Re: probleme lecture Eeprom FT230XS

Publié : jeu. 15/janv./2026 0:11
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