Détection PortCom et Bauds possible

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Détection PortCom et Bauds possible

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Détection PortCom et Bauds possible

Message par Micoute »

Fonctionne très bien, merci pour le partage.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Détection PortCom et Bauds possible

Message par Ar-S »

Pas de Linux ou Mac pour te répondre.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Détection PortCom et Bauds possible

Message 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?
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Détection PortCom et Bauds possible

Message 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 ^^.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Jackymb
Messages : 17
Inscription : mer. 04/août/2004 10:09
Localisation : Aix en Provence

Re: Détection PortCom et Bauds possible

Message 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
Windows 10 x64 & x86 - PB 5.62 (x86 & x64) - PB 5.46.LTS (x86 & x64) - PB 5.70 Beta4 (x86 & x64)
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Détection PortCom et Bauds possible

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Jackymb
Messages : 17
Inscription : mer. 04/août/2004 10:09
Localisation : Aix en Provence

Re: Détection PortCom et Bauds possible

Message par Jackymb »

Bonjour,

Testé sur Ubuntu 16.04LTS, sous virtualbox

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

Copie écran résultat.

Jacky
Windows 10 x64 & x86 - PB 5.62 (x86 & x64) - PB 5.46.LTS (x86 & x64) - PB 5.70 Beta4 (x86 & x64)
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Détection PortCom et Bauds possible

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Détection PortCom et Bauds possible

Message 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 ^^
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Détection PortCom et Bauds possible

Message 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 ^^.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Détection PortCom et Bauds possible

Message 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
Répondre