serielle Schnittstelle

Anfängerfragen zum Programmieren mit PureBasic.
HoDam
Beiträge: 82
Registriert: 19.11.2004 13:57
Wohnort: Köln, Cologne

serielle Schnittstelle

Beitrag 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
PB 4 Final
Benutzeravatar
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:

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
HoDam
Beiträge: 82
Registriert: 19.11.2004 13:57
Wohnort: Köln, Cologne

Beitrag von HoDam »

erstmal Danke,
werde es morgen austesten.


Grüße

HoDam
PB 4 Final
Benutzeravatar
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

Beitrag 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
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.
Bild
Benutzeravatar
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:

Beitrag 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?
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten