Voici un exemple pour afficher sous PB une chaine reçue par le port série.
Pour simuler un périphérique série, j'ai utilisé une carte Arduino (nano)
et lui ai uploadé un programme qui écrit "Hello World!" une fois par seconde
Le code Arduino
Code : Tout sélectionner
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello World!");
delay(1000);
}
Le code PB qui écoute
Code : Tout sélectionner
; Read Arduino speaking: "Hello World!" eternally
; Based on the infratec proposed solution on topic: RS-232 receive data
; http://www.purebasic.fr/english/viewtopic.php?f=13&t=64875&hilit=ReadSerialPortData
Enumeration
#Win
#List
#hPort
#Sec
EndEnumeration
Port$ = "COM3"
OpenWindow(#Win, 0, 0, 500, 300, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(#List, 10, 10, 480, 280)
AddWindowTimer(#Win, #Sec, 1000)
If OpenSerialPort(#hPort, Port$, 9600,
#PB_SerialPort_NoParity, 8, 1,
#PB_SerialPort_NoHandshake, 1024, 1024)
AddGadgetItem(#List, -1, "OK, open")
; Delay(2000)
Else
AddGadgetItem(#List, -1, "Can't open " + Port$)
End
EndIf
Procedure Read_Arduino()
While AvailableSerialPortInput(#hPort)
If ReadSerialPortData(#hPort, @Byte, 1)
Text$ + Chr(Byte)
EndIf
Wend
AddGadgetItem(#List, -1, Text$)
EndProcedure
Repeat
Select WaitWindowEvent()
Case #PB_Event_Timer
Read_Arduino()
Case #PB_Event_CloseWindow
CloseSerialPort(#hPort)
End
EndSelect
ForEver
End
À toi d'adapter Port, Vitesse etc puis d'ajouter les commandes d'envoi (WriteSerialPortString( ) et le traitement des réponses.
GQ-RFC1201.txt
