Seite 1 von 1
serielle Schnittstelle
Verfasst: 21.07.2008 11:27
von HoDam
Hallo zusammen,
wie kann ich in PB 4.2 mit Hilfe des internen Befehlsatzes für den SerialPort ein
Carriage Return und ein Line Feed übergeben
Danke
Verfasst: 21.07.2008 13:01
von Falko
Z.B. so:
Code: Alles auswählen
Puffer.s=Space(2) ; Puffer mit zwei leeren Bytes belegen.
PokeB(@Puffer,Asc(#CR$)) ; schreibe Carriage Return in den Puffer
PokeB(@Puffer+1,Asc(#LF$));schreibe ein Line Feed an zweiter Position in den Puffer
Debug PeekB(@Puffer); Testausgabe erstes Byte
Debug PeekB(@Puffer+1);Testausgabe zweites Byte
WriteSerialPortData(0, @Puffer, 2); hiermit dann die zwei Bytes zur vorher geöffneten OpenSerialPort() absenden
Ich habe es aber noch nicht getestet
Gruß Falko
Verfasst: 21.07.2008 16:32
von HoDam
erstmal Danke,
werde es morgen austesten.
Grüße
HoDam
Verfasst: 21.07.2008 17:00
von ts-soft
Oder so (ist aber fast dasselbe
Code: Alles auswählen
Macro MakeWord(low,high)
(low | (high << 8))
EndMacro
Puffer.w = MakeWord(Asc(#CR$), Asc(#LF$))
;Puffer.w = 2573 ; noch einfacher :)
WriteSerialPortData(0, @Puffer, 2)
Mit der auskommentierten Zeile spart man noch Codezeilen
Verfasst: 21.07.2008 18:50
von Falko
Ich habe es nun auch mal mit com0com getestet. Somit geht es auch
kürzer, wenn man z.B. nur einen String mit dem CR LF senden will

.
Dieser Codeschnipsel für das Senden von Strings mit CR LF ist somit
komplett
Code: Alles auswählen
Puffer.s="Test"+#CRLF$
;Debug Puffer
If OpenSerialPort(0,"COM1",2400,#PB_SerialPort_EvenParity,8,1,#PB_SerialPort_NoHandshake,1024,1024); Hier bitte die korrekte RS232-Schnittstelle wählen (COM1)
WriteSerialPortData(0,@Puffer,Len(Puffer)); hiermit dann die sechs Bytes absenden
Else
MessageRequester("Achtung","Bitte überprüfen sie die COM-Einstellungen")
EndIf
CloseSerialPort(0)
Für das Einlesen wird wohl ein Gegenstück von der angeschlossen
Hardware vorhanden sein müssen. Oder soll das auf einen anderen PC per
Nullmodemkabel empfangen werden?