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 :mrgreen:

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 :mrgreen:

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?