seit einigen Stunden versuche ich einen String vom Mikrocontroller zu emfangen. Leider vergebends bei der Auswertung. Schicke ich meinem Kontroller ein Befehl antwortet er darauf. Die Zeichen werden auch emfangen, aber nicht geordnet in einem String. Ich habe jetzt schon über das Forum einige Codes ausprobiert und umgeschrieben. Allerdings klappt es noch immer nicht.
Ich möchte am nach dem Auslesen des SerialPorts einen fertigen String haben, den ich mit einem Command-Befehl vergleichen kann und danach weitere Aktionen tätigen kann bzw. mein Programm später die Rückmeldung gibt, ob der gesendete Befehl an den Kontroller erfolgreich war.
Hier mein zu letzt getesteter Code:
Code: Alles auswählen
SPort$ = "Com33"
SBaud = 9600
*SPuffer = AllocateMemory(501)
#SerialPort = 1
Procedure.s RSString(port.i)
length.i = AvailableSerialPortInput(port.i)
If length > 0
If Not ReadSerialPortData(port.i, *SPuffer, length)
;Debug "Error while reading input data"
ProcedureReturn "ERROR"
Else
result.s = PeekS(*SPuffer, length)
buffer.s + result
i = CountString(buffer, Chr(13)+Chr(10))
If i > 0 ; check for newline
For x.i = 1 To i
line.s = StringField(buffer, x, Chr(13)+Chr(10))
Debug line
ProcedureReturn line
Next
buffer = StringField(buffer, x+1, Chr(13)+Chr(10)) ; add the new line to the buffer
EndIf
EndIf
EndIf
ProcedureReturn line
EndProcedure
If OpenSerialPort(#SerialPort, SPort$, SBaud, #PB_SerialPort_NoParity, 8 ,1 ,#PB_SerialPort_NoHandshake, 500, 500)
WriteSerialPortString(#SerialPort, "/help"+Chr(13)+Chr(10))
y=0
Repeat
y=y+1
Emf$ = RSString(#SerialPort)
If Emf$ <> "ERROR"
Debug Emf$
EndIf
;Debug Buffer
Delay(1)
Until y > 300
CloseSerialPort(#SerialPort)
EndIf
End
L.G. Kai