Dein Code im ersten Post ist fast richtig.
Du musst nur die Zeile mit Puffer.s entfernen, weil die nicht nötig ist, und dann auch *Puffer nutzen: WriteSerialPortData(0, *Puffer, 7)
*Puffer und Puffer sind nicht die gleiche Variable!
Außerdem kann man keine Strings mit Nullzeichen erstellen. Das Nullzeichen steht immer implizit am Ende.
Hier noch zwei Alternativen für dich:
Mit einem ArrayCode:
Dim daten.a(7)
Port$ = "COM5"
If OpenSerialPort(0, Port$, 19200, #PB_SerialPort_EvenParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
daten(0) = 2
daten(1) = 0
daten(2) = 4
daten(3) = 0
daten(4) = 6
daten(5) = 10
daten(6) = 3
WriteSerialPortData(0, @daten(0), 7)
Delay(3000)
Else
MessageRequester("Error", "Can't open the serial port: " + Port$)
EndIf
CloseSerialPort(0)
Mit DataSection und StructureCode:
EnableExplicit
Structure Daten
length.i
d.a[0]
EndStructure
Define Port$ = "COM5"
If OpenSerialPort(0, Port$, 19200, #PB_SerialPort_EvenParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Define *daten.Daten = ?daten
WriteSerialPortData(0, @*daten\d, *daten\length)
Delay(3000)
CloseSerialPort(0)
Else
MessageRequester("Error", "Can't open the serial port: " + Port$)
EndIf
DataSection
daten:
Data.i 7
Data.a 2, 0, 4, 0, 6, 10, 3
EndDataSection