Page 2 sur 2

Re: [RESOLU]Communication Port COM

Publié : ven. 28/sept./2018 13:42
par GallyHC
Bonjour,

J'avais fait ce code alors si ça peut aidé quelqu'un ^^ (j'avais commencer pour qu'il soit multi-OS, mais pas encore tester sur Linux) :

Code : Tout sélectionner

#SERIAL_PORTCOM_MIN = 1
#SERIAL_PORTCOM_MAX = 127

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    #PortName = "COM"
  CompilerCase #PB_OS_Linux
    #PortName = "/dev/ttyS"
  CompilerCase #PB_OS_MacOS
    #PortName = #Null$
    End
CompilerEndSelect

Procedure SERIAL_FindPort()
;
;
;
  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 = #PortName + Str(i)
    iPortCom = OpenSerialPort(#PB_Any, sPortCom, 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 512, 512)
    If 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, 512, 512)
        If IsSerialPort(iPortCom)
          CloseSerialPort(iPortCom)
          Debug ">>>>>>>>>>>>>>> " + StringField(sPortBaud, j + 1, ";") + " Baud PASS"
        EndIf
      Next j
      ;  
    EndIf
  Next i
  
EndProcedure

SERIAL_FindPort()
Cordialement,
GallyHC

Re: [RESOLU]Communication Port COM

Publié : ven. 28/sept./2018 16:01
par Ekim
Merci pour ce petit cours) maintenant je comprends mieux :wink:

Re: [RESOLU]Communication Port COM

Publié : ven. 28/sept./2018 20:47
par venom
Tu voulais communiquer avec quel module ?







@++

Re: [RESOLU]Communication Port COM

Publié : sam. 29/sept./2018 9:12
par GallyHC
Bonjour,

En gros c'été pour faire un hyper-terminal car j'avais besoin de communiquer avec par exemple des switch 3Com, ect... (j'avais déjà fait la partie de décodage VT100).

Voila en gros ce que cela donne pour le moment (si un jour j'ai le temps ^^.....) :
Image

GallyHC

Re: [RESOLU]Communication Port COM

Publié : sam. 29/sept./2018 9:39
par venom
Ah oui
Sympa l'interface GallyHC, un peu "oldscool" 8)






@++

Re: [RESOLU]Communication Port COM

Publié : lun. 01/oct./2018 0:46
par Ollivier
Euh... Question !

C'est l'USB tout seul qui peut être vu comme un port série ? Ou bien c'est le matériel que l'on connecte qui va s'officialiser "authentique port série" ?

Re: [RESOLU]Communication Port COM

Publié : lun. 01/oct./2018 6:27
par Marc56
Ollivier a écrit :C'est l'USB tout seul qui peut être vu comme un port série ? Ou bien c'est le matériel que l'on connecte qui va s'officialiser "authentique port série" ?
C'est un des 127 ports port usb que Windows va faire reconnaitre comme un port série normal (COM1 à 127)
Ceci grâce au driver que tu installes (sous Windows) et qui doit correspondre au chipset situé dans le périphérique distant (ex: carte Arduino) ou dans le câble lui-même (ex: FTDI).
Windows affectera ensuite un port COMxx à chaque nouvelle connexion permettant ainsi de piloter plusieurs périphériques ensembles, sans te soucier des adresses comme on devait le faire en changeant la position des jumpers sur les cartes séries.
Tu peux parfois via Windows fixer ce numéro de port si ton application ne sais pas le détecter à chaque connexion.

Re: [RESOLU]Communication Port COM

Publié : mar. 02/oct./2018 22:59
par Ollivier
Merci pour ton complément d'information (info en page 1). J'ai posé cette question, parce que sur le plan technique, un port USB, fait circuler ses données en série. Et en relisant les fréquences (en bauds), qui sont nettement supérieures aux fréquences standard RS232, je me suis demandé si une substitution logicielle n'avait pas été créée pour traiter directement un port USB comme un port série ancestral.

Re: [RESOLU]Communication Port COM

Publié : mer. 03/oct./2018 6:21
par Marc56
Ollivier a écrit :Merci pour ton complément d'information (info en page 1). J'ai posé cette question, parce que sur le plan technique, un port USB, fait circuler ses données en série. Et en relisant les fréquences (en bauds), qui sont nettement supérieures aux fréquences standard RS232, je me suis demandé si une substitution logicielle n'avait pas été créée pour traiter directement un port USB comme un port série ancestral.
La bande passante est partagée ce qui fait qu'un périphérique à 300 bauds ne ralentira pas les autres.
Il y a une puce qui règle la sérialisation et le partage. Pour le programmeur c'est donc transparent.
https://fr.wikipedia.org/wiki/Universal ... e_passante
C'est aussi pour cela qu'il existe des câbles Série/USB pour connecter directement des périphéries série sans passer par une carte.
Le chipset est alors dans la prise elle-même
https://www.ftdichip.com/Products/Cable ... Serial.htm