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
serielle Schnittstelle
serielle Schnittstelle
PB 4 Final
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Z.B. so:
Ich habe es aber noch nicht getestet
Gruß Falko
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
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Oder so (ist aber fast dasselbe
Mit der auskommentierten Zeile spart man noch Codezeilen

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)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
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
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?
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?