PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [WD14] Retrouver un port série
[WD14] Retrouver un port série
Iniciado por guest.a-j, 02,dic. 2009 18:37 - 6 respuestas
Publicado el 02,diciembre 2009 - 18:37
Bonjour à tous !

Voilà, j'ai une petite interrogation.

J'ai un PC avec plusieurs port série mais un seul m'intéresse.

"L'avantage" c'est que son fabricant est différent (c'est un cable usb - série utilisant un driver FTDI ).

Comment faire pour le retrouver ?

J'ai bien penser à lister les ports séries et retrouver lequel utilise un driver de tel fabricant, mais je n'ai aucune idée comment faire en Windev...

Merci de vos lumières !

A Bientôt
Publicado el 09,diciembre 2009 - 10:31
Bonjour
Difficile en utilisant que du code Windev !

Si il n'y a rien du côté de dot net, as tu regardé du côté de la base de
registre ou WMI car Windev sait très bien s'interfacer avec.

Si tu en as toujours besoin je peut t'envoyer une collection de procédure où
il y a quelques fonctions exploitant WMI pour les principales classe dont
Win32_SerialPort
dont tu peut trouver la description ici
http://msdn.microsoft.com/en-us/library/aa394413%28VS.85%29.aspx
Je ne suis pas sur du résultat sur ta config...



Alex a écrit dans le message de news:
396e427da6688c674ba1f2e2e3966487@news.pcsoft...

Bonjour à tous !

Voilà, j'ai une petite interrogation.

J'ai un PC avec plusieurs port série mais un seul m'intéresse.

"L'avantage" c'est que son fabricant est différent (c'est un cable usb -
série utilisant un driver FTDI ).

Comment faire pour le retrouver ?

J'ai bien penser à lister les ports séries et retrouver lequel utilise un
driver de tel fabricant, mais je n'ai aucune idée comment faire en
Windev...

Merci de vos lumières !

A Bientôt
Publicado el 09,diciembre 2009 - 14:06
Bonjour,
Merci beaucoup d'avoir répondu au message.
En cherchant un peu dans l'aide de windows et autre je n'avais pas trouvé, par contre le fournisseur du câble fourni une DLL très pratique.
Je met le code si jamais ça peut intéresser quelqu'un :
Procedure FTDI_Recupère_numero_com()

ETaskhandle est un entier sans signe sur 4 octets
nNumero_port_com est un entier=-1
nGnId_dll est un entiersystème =ChargeDLL("ftd2xx.dll")

SI AppelDLL32("ftd2xx.dll","FT_Open",0,&ETaskhandle) <> FT_OK ALORS
Erreur("FTDI : Erreur d'ouverture")
DéchargeDLL(nGnId_dll)
RENVOYER -1
FIN

SI AppelDLL32("ftd2xx.dll","FT_GetComPortNumber",ETaskhandle,&nNumero_port_com) <> FT_OK ALORS
Erreur("FTDI : Erreur d'aquisition du numéro de port COM")
DéchargeDLL(nGnId_dll)
RENVOYER -1
FIN

SI nNumero_port_com=-1 ALORS
Erreur("FTDI : Pas de port COM associé")
DéchargeDLL(nGnId_dll)
RENVOYER -1
FIN

AppelDLL32("ftd2xx.dll","FT_Close",ETaskhandle)

DéchargeDLL(nGnId_dll)

RENVOYER nNumero_port_com


Bien entendu ça ne fonctionne qu'avec le module FTDI.

A Bientôt
Publicado el 21,agosto 2013 - 08:25
Salut Alex, je suis tombé sur ton code trés intéressant. Je dois communiquer avec un périphérique usb avec puce ftdi donc ça c'est ok. Cependant quand je branche mon périphérique et que je tente ton code ( avec la correction "FT_OK" et non FT_OK) le retour de l'apple DLL32 me renvoie 0 pour iDevice = 0 (comme ton exemple) et 2 pour iDevice>0.

Je ne comprend pas ce qui se passe. Mon périphérique est bien connecté et je suis en v17. Merci par avance
Publicado el 21,agosto 2013 - 10:38
Salut,
Si, si le FT_OK etait bon, par contre il te manque la déclaration des constantes :
(en fait celle donnée par le constructeur)

CONSTANT
//
// Device status
//

FT_OK=0
FT_INVALID_HANDLE=1
FT_DEVICE_NOT_FOUND=2
FT_DEVICE_NOT_OPENED=3
FT_IO_ERROR=4
FT_INSUFFICIENT_RESOURCES=5
FT_INVALID_PARAMETER=6
FT_INVALID_BAUD_RATE=7
FT_DEVICE_NOT_OPENED_FOR_ERASE=8
FT_DEVICE_NOT_OPENED_FOR_WRITE=9
FT_FAILED_TO_WRITE_DEVICE=10
FT_EEPROM_READ_FAILED=11
FT_EEPROM_WRITE_FAILED=12
FT_EEPROM_ERASE_FAILED=13
FT_EEPROM_NOT_PRESENT=14
FT_EEPROM_NOT_PROGRAMMED=15
FT_INVALID_ARGS=16
FT_NOT_SUPPORTED=17
FT_OTHER_ERROR=18
FT_DEVICE_LIST_NOT_READY=19


//
// FT_OpenEx Flags
//

FT_OPEN_BY_SERIAL_NUMBER =1
FT_OPEN_BY_DESCRIPTION =2
FT_OPEN_BY_LOCATION=4

//
// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
//

FT_LIST_NUMBER_ONLY=0x80000000
FT_LIST_BY_INDEX=0x40000000
FT_LIST_ALL=0x20000000

// FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)

//
// Baud Rates
//

FT_BAUD_300=300
FT_BAUD_600=600
FT_BAUD_1200=1200
FT_BAUD_2400=2400
FT_BAUD_4800=4800
FT_BAUD_9600=9600
FT_BAUD_14400=14400
FT_BAUD_19200=19200
FT_BAUD_38400=38400
FT_BAUD_57600=57600
FT_BAUD_115200=115200
FT_BAUD_230400=230400
FT_BAUD_460800=460800
FT_BAUD_921600=921600

//
// Word Lengths
//

FT_BITS_8=8
FT_BITS_7=7
FT_BITS_6=6
FT_BITS_5=5

//
// Stop Bits
//

FT_STOP_BITS_1=0
FT_STOP_BITS_1_5=1
FT_STOP_BITS_2=2

//
// Parity
//

FT_PARITY_NONE=0
FT_PARITY_ODD=1
FT_PARITY_EVEN=2
FT_PARITY_MARK=3
FT_PARITY_SPACE=4

//
// Flow Control
//

FT_FLOW_NONE =0x0000
FT_FLOW_RTS_CTS =0x0100
FT_FLOW_DTR_DSR =0x0200
FT_FLOW_XON_XOFF =0x0400

//
// Purge rx and tx buffers
//
FT_PURGE_RX =1
FT_PURGE_TX =2

//
// Events
//

//typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);

FT_EVENT_RXCHAR =1
FT_EVENT_MODEM_STATUS =2

//
// Timeouts
//

FT_DEFAULT_RX_TIMEOUT =300
FT_DEFAULT_TX_TIMEOUT =300

FIN


A+
Publicado el 21,agosto 2013 - 15:49
Rhaaaaaa ça marche !!!! tu gères. Merci énormément.
Maintenant je dois m'atteler à faire l'appli pour tablette android..
Tu as déja fais ? Je dois utiliser le nouveau driver fournis par ftdi et implémenter la partie communication port com avec JAVA (car les fonction slit et sEcrit n'existe pas sur android).

Merci en tout cas.
Publicado el 27,abril 2020 - 20:15
Bonjour Alexandre,

je suis tombé sur votre code en cherchant a manipuler la dll ftd2xx.dll.

j'ai tester votre code qui fonctionne parfaitement mais j'ai besoin d'utiliser d'autres fonctions que je n'arrive pas à faire fonctionner.

mon problème est de convertir correctement les exemples dans la doc en C vers WinDev et là j'ai beaucoup de lacunes.

Avez-vous du temps pour échanger avec vous sur le sujet svp ?

mon objectif final est d'identifier les port com des devices connectés via ftdi sur la machine par rapport à leur nom, et il peut y en avoir plusieurs de connectés en même temps.

Merci d'avance.