Page 1 sur 1

Détection PortCom et Bauds possible

Publié : mar. 27/déc./2016 18:37
par GallyHC
Bonjour,

Déjà je ne sais pas si ce bout de code sera utile a beaucoup, mais je poste a tout hasard. Ce code permet de détecté les Ports Com actif sur l'ordinateur et les nombres de bauds possible par ce Port Com. Même si la bibliothèque "Serial Port" est compatible avec tout les OS, je ne garantie pas le fonctionnement autre que sur "Windows", si certains peuvent faire le test "Linux" et "MacOS", merci d'avance.

Cela donne en capture (via Debug) :

Image

Le code-source:

Code : Tout sélectionner

  #SERIAL_PORTCOM_MIN = 1
  #SERIAL_PORTCOM_MAX = 256
  
  Define.i i, j, iPortCom, iPortBaud
  Define.s sPortCom, sPortBaud = "50;75;110;150;300;600;1200;1800;2400;4800;9600;19200;38400;57600;115200;128000;153600;230400;256000;460800;921600"

  
  For i=#SERIAL_PORTCOM_MIN To #SERIAL_PORTCOM_MAX
    sPortCom = "COM" + Str(i)
    iPortCom = OpenSerialPort(#PB_Any, sPortCom, 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 512)
    If iPortCom And IsSerialPort(iPortCom)
      CloseSerialPort(iPortCom)
      ;
      Debug sPortCom + " : PASS"
      ;
      For j=0 To CountString(sPortBaud, ";")
        iPortCom = OpenSerialPort(#PB_Any, sPortCom, Val(StringField(sPortBaud, j + 1, ";")), #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 512)
        If iPortCom And IsSerialPort(iPortCom)
          CloseSerialPort(iPortCom)
          Debug ">>>>>>>>>>>>>>> " + StringField(sPortBaud, j + 1, ";") + " Baud PASS"
        EndIf
      Next j
      ;  
    EndIf
  Next i
Cordialement,
GallyHC

Re: Détection PortCom et Bauds possible

Publié : mer. 28/déc./2016 8:23
par Micoute
Fonctionne très bien, merci pour le partage.

Re: Détection PortCom et Bauds possible

Publié : mer. 28/déc./2016 11:24
par Ar-S
Pas de Linux ou Mac pour te répondre.

Re: Détection PortCom et Bauds possible

Publié : mer. 28/déc./2016 15:21
par Ollivier
Bonjour GallyHC,

je ne peux pas, non plus te répondre pour Linux et MacOSX. En tout cas, je te remercie pour ton partage de code.

Je suis un peu surpris par le numéro de Com ainsi que les valeurs de débit (les grandes valeurs) : tu as une interface branchée, ou bien est-ce un simple test à vide?

Re: Détection PortCom et Bauds possible

Publié : mer. 28/déc./2016 17:46
par GallyHC
Bonjour,

Ollivier> C'est juste avec une interface USB/Serial à vide, mais j'ai aussi 2 switch qui sont paramétrables par le rs232 (je suis en train de voir a faire une interface pour mes tests) (si tu regarde y a juste le 50 Bauds qui n'est pas accepter).

Après si tu branche par exemple un Samsung Galaxy, tu as aussi un port Com actif.

Cordialement,
GallyHC

PS: je vais faire le test pour MacOS car j'en ai un, mais juste la flemme de le rebrancher ^^.

Re: Détection PortCom et Bauds possible

Publié : mer. 28/déc./2016 19:40
par Jackymb
Bonjour à tous

Pour Linux, les ports "série" sont nommés : /dev/ttyS0, /dev/ttyS1, /dev/ttyS0..

Donc pour le code rajouter:

Code : Tout sélectionner

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  #PortName = "COM"
CompilerElse
  #PortName = "/dev/ttyS"
CompilerEndIf
Et Modifier la ligne:

Code : Tout sélectionner

sPortCom = #PortName + Str(i)
Je ne peux pas tester car soucis avec machine virtuelle.

Jacky

Re: Détection PortCom et Bauds possible

Publié : jeu. 29/déc./2016 12:15
par GallyHC
Bonjour,

Jackymb > Merci pour cette information (donc ce sera possible sur linux), par contre d'après ce que j'ai vu sur le net pour MacOS, ça donne pas envi de rendre compatible.

Cordialement,
GallyHC

Re: Détection PortCom et Bauds possible

Publié : jeu. 29/déc./2016 14:59
par Jackymb
Bonjour,

Testé sur Ubuntu 16.04LTS, sous virtualbox

https://1drv.ms/i/s!AiEBAUWrCd5FmSNdm3dgvgkq9jAv

Copie écran résultat.

Jacky

Re: Détection PortCom et Bauds possible

Publié : jeu. 29/déc./2016 22:51
par GallyHC
Bonjour,

Jackymb> un grand merci et j'ai bien pris note pour linux et je ferais pour que ce soit compatible avec alors (et je mettrais à jour le code en tête du topic).

Cordialement,
GallyHC

Re: Détection PortCom et Bauds possible

Publié : jeu. 29/déc./2016 23:48
par falsam
Sur mon desktop i3 sous windows10 (Oui j'ai un pc en carton) je n'ai aucun résultat.

Ce qui est normal car je n'ai pas de port RS232 ^^

Re: Détection PortCom et Bauds possible

Publié : jeu. 29/déc./2016 23:53
par GallyHC
falsam a écrit :Sur mon desktop i3 sous windows10 (Oui j'ai un pc en carton) je n'ai aucun résultat.

Ce qui est normal car je n'ai pas de port RS232 ^^
Merci Falsam, donc si je comprend sans Com, on a pas d'info sur que l'on a pas. ces bon a savoir.

Cordialement,
GallyHC

PS: sort ton i3 du carton ce sera mieux pour la ventilation ^^.

Re: Détection PortCom et Bauds possible

Publié : sam. 31/déc./2016 17:24
par Patrick88
salut,

je viens d'essayer avec une carte arduino connecté en 115200

Code : Tout sélectionner

COM3 : PASS
>>>>>>>>>>>>>>> 50 Baud PASS
>>>>>>>>>>>>>>> 75 Baud PASS
>>>>>>>>>>>>>>> 110 Baud PASS
>>>>>>>>>>>>>>> 150 Baud PASS
>>>>>>>>>>>>>>> 300 Baud PASS
>>>>>>>>>>>>>>> 600 Baud PASS
>>>>>>>>>>>>>>> 1200 Baud PASS
>>>>>>>>>>>>>>> 1800 Baud PASS
>>>>>>>>>>>>>>> 2400 Baud PASS
>>>>>>>>>>>>>>> 4800 Baud PASS
>>>>>>>>>>>>>>> 9600 Baud PASS
>>>>>>>>>>>>>>> 19200 Baud PASS
>>>>>>>>>>>>>>> 38400 Baud PASS
>>>>>>>>>>>>>>> 57600 Baud PASS
>>>>>>>>>>>>>>> 115200 Baud PASS
>>>>>>>>>>>>>>> 128000 Baud PASS
>>>>>>>>>>>>>>> 153600 Baud PASS
>>>>>>>>>>>>>>> 230400 Baud PASS
>>>>>>>>>>>>>>> 256000 Baud PASS
>>>>>>>>>>>>>>> 460800 Baud PASS
>>>>>>>>>>>>>>> 921600 Baud PASS
je me suis construit une petite cnc et je teste plusieurs programme de control
la plupart n'ont besoin comme paramètre que de la vitesse et le port com (ugsplatform64, UniversalGcodeSende, bCNC, le kit de dev arduino)
mais un autre JCNC , a besoin de ces autres paramètres
-Data bits
-Parity
-Stop bits
-Flow control

comment les obtenir avec ton code purebasic... (pas trouvé dans les autres programmes + la flemme d'aller fouiner dans les fichiers :roll: )

oublie ma question, je viens de regarder l'aide de purebasic, et cela m'a fait comprendre comment cela fonctionnait
la parité vitesse etc sont définie au moment de l'ouverture du port com....

Patrick