jean_debord
Nombre de messages : 1250 Age : 69 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: ArduinoCroco Dim 1 Aoû 2021 - 11:28 | |
| | |
|
jean_debord
Nombre de messages : 1250 Age : 69 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: ArduinoCroco Sam 4 Sep 2021 - 8:26 | |
| | |
|
Marc
Nombre de messages : 2389 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: ArduinoCroco Sam 4 Sep 2021 - 16:34 | |
| Bonjour et merci Jean !
Effectivement la "toile" est riche d'enseignements sur le sujet Arduino.
FreeBasic gère très bien le port série et probablement que le Crocodile en fera de même très bientôt.
Bonne continuation !
| |
|
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: ArduinoCroco Sam 4 Sep 2021 - 17:53 | |
| Et bien voila un partenariat qui risque d'être fort intéressant ! J'attends la suite avec impatience... | |
|
jean_debord
Nombre de messages : 1250 Age : 69 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: ArduinoCroco Dim 5 Sep 2021 - 11:07 | |
| Voici les mots-clés que je prévois d'ajouter dans la prochaine version de FBCroco : OPENCOM / CLOSECOM pour ouvrir ou fermer la liaison (sur le modèle de OPENIN/CLOSEIN et OPENOUT/CLOSEOUT pour les fichiers). FreeBASIC traite la liaison série comme un fichier. - Code:
-
opencom #1, "COM3" .................. closecom #1
Note : les autres paramètres de OPENCOM sont optionnels et ont des valeurs par défaut (BaudRate = 9600, Parity = "N", DataBits = 8, StopBits = 1) SERIAL_PRINT pour envoyer une chaîne de caractères à l'Arduino SERIAL_INPUT_BYTE pour lire un caractère sur Arduino SERIAL_INPUT pour lire une chaîne de caractères Mais je suis très ignorant dans ce domaine, d'où l'intérêt du partenariat ! | |
|
Marc
Nombre de messages : 2389 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: ArduinoCroco Dim 5 Sep 2021 - 13:50 | |
| Bonjour Jean, C’est parfait ! Je viens de regarder sous FreeBasic la commande du port COM. Voici le lien que j’ai consulté : https://www.freebasic.net/wiki/KeyPgOpenComIl est dit que par défaut, les principales caractéristiques de la liaison série sont : - 300 bauds ; - parité paire ; - 7 bits ; - Le nombre de bits de stop variable suivant la vitesse sélectionnée. Effectivement, comme tu l’as écrit et prévu, il est plus usuel d’opter par défaut les valeurs suivantes : - 9600 bauds ; - sans parité ; - 8 bits ; - 1 bit de stop. Pour le contrôle de flux matériel, tout est à désactiver : CTS (Clear To Send) DSR (Data Set Ready) DCD (Data Carrier Detect) RTS (Request To Send) Dans la commande OPEN COM de FreeBasic ce sont les options CS0, DS0,CD0 et RS à ajouter. Remarque : Deux mots-clés présents dans Panoramic sont très pratiques : - La fonction SERIAL_PORT_EXISTS() - La commande évènement ON_RECEIVE Merci pour tout et bonne continuation ! | |
|
jean_debord
Nombre de messages : 1250 Age : 69 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: ArduinoCroco Dim 5 Sep 2021 - 15:44 | |
| Pour plus de précision, voici le code de ces commandes (en FreeBASIC) : - Code:
-
' ********************************************************************* ' Liaison serie / Arduino ' D'apres "coderJeff" sur le forum FreeBASIC ' https://www.freebasic.net/forum/viewtopic.php?f=18&t=27764#p262916 ' *********************************************************************
const MAX_BUFFER = 40 ' Taille max de la chaine de caracteres
function opencom (n as long, _ COM_Port as string = "COM1", _ BaudRate as long = 9600, _ Parity as string = "N", _ DataBits as long = 8, _ StopBits as long = 1) as boolean dim as string s dim as long res s = COM_Port & ":" & BaudRate & "," & Parity & "," _ & DataBits & "," & StopBits & "," _ & "CS0,DS0,CD0,RS" res = open com(s as #n) return cbool(res = 0) end function
function closecom (n as long) as boolean return cbool(close(n) = 0) end function
sub serial_print (n as long, s as string) print #n, s; end sub
function serial_input_byte (n as long) as string if loc(n) > 0 then return input(1, #n) end function
function serial_input (n as long, byref buffer as string) as boolean dim r as string ' read any response from Arduino do r = serial_read_byte(n) select case r
' end of response/string? case chr(10) return TRUE
' otherwise add to the buffer case else if len(buffer) < MAX_BUFFER then buffer &= r end select loop until r = ""
return FALSE end function
| |
|