Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   RS232 Schnittstelle Daten senden (https://www.delphipraxis.net/216447-rs232-schnittstelle-daten-senden.html)

lucy 31. Dez 2024 09:13


RS232 Schnittstelle Daten senden
 
Hallo,
ich habe ein Funksender (POCSAG), womit ich Daten versenden möchte. Zur Verfügung steht eine RS232 Schnittstelle.
Ich experimentiere mit Delphi 11 und der Komponente (nrComm) herum.
Leider habe ich keine Ahnung von RS232 Schnittstellen und dem beigefügten Protokoll.
Kann mir vielleicht einer weiterhelfen?
Möchte über ein Memo (Text) und Button (Senden) Daten versenden.

Hier das Protokoll :

By sending data to serial port.

PC serial port : 9600 BPS
8 bits data
1 stop bit
NO Parity
Receive data format of transmitter:
0x19-------->Start of message

1byte ------>'R'

7 bytes ---->capcode ( ascii format '0'-->0x30,'1'--->0x31 )

1 byte ---->control bit ( bit 7----> 1
bit 6----> 1---->Chinese,0--->not Chinese
bit 5,4--> 00-->A TONE,01-->B TONE,10-->C TONE,11-->D TONE,
bit 3----> 0---->numeric message,1---->Alpha message
bit 2,1--> POCSAG baud 00->512,01--->1200,10-->2400
bit 0----> Polarity 0--->normal, 1--->reverse

N Bytes ---->Content of message , not more than 300 characters,8bit ascii.

0X18-------->Message end

Attention:
When a message succed, the transmitter will reply 0x19,"RXOK",0X18 to PC

Example: Using capcode 1234567,normal,1200BPS,A call send "ABCDEFGH"
Send by serial port of PC: 0x19,"R1234567",0X8A,"ABCDEFGH",0X18
HEX DATA: 19 52 31 32 33 34 35 36 37 8A 41 42 43 44 45 46 18

zeras 31. Dez 2024 16:58

AW: RS232 Schnittstelle Daten senden
 
Ich kenne nrComm nicht, da ich mit TMS Async32 arbeite. Kostet ein wenig, ist aber gut.
Da musst du zuerst die Parameter zuweisen

PC serial port : 9600 BPS
8 bits data
1 stop bit
NO Parity


und bei Async32 geht das dann so:
Delphi-Quellcode:
 VaComm1.WriteChar(c);
Damit kann man einzelne Zeichen an die Schnittstelle senden. Im Protokoll ist das aber auch ganz gut beschrieben.

TurboMagic 1. Jan 2025 20:29

AW: RS232 Schnittstelle Daten senden
 
Auch TComPortDrv sollte das können. Ist in GetIt frei verfügbar.
Besitzt sowohl Methoden zum binären Datenversand als auch für Textprotokolle.

Und ja, auch da muss man zuerst 9600 Baud einstellen, 8 Datenbits und 1 Stoppbit
und keine Parität.

Die Komponente hat auch ein Event in dem die Empfangenen Daten eingehen.
Und ein kleines Terminalprogramm als Beispiel kommt auch mit.
Dein Protokoll scheint ja ein ASCII basiertes zu sein, richtig?
Da solltest du mit diesem Testterminal das mal testhalber eintippen können...

fred42 2. Jan 2025 14:02

AW: RS232 Schnittstelle Daten senden
 
Beachten sollte man auch die Datenflusssteuerung:

Hardware (TxD, RxD, GND, RTS und CTS)
Software Xon/Xoff (Xon=0x19/Xoff=0X18)

kann man bei 'nrcomm' mit der Eigenschaft 'StreamProtokol' angeben.

als Bps.(Baud) würde ich 512,1200 oder 2400 probieren.

einige Links zu Info

https://ipc2u.de/artikel/wissenswert...22-und-rs-485/
https://de.wikipedia.org/wiki/Steuerzeichen
https://eterlogic.com/products.vspe.html

ein eifaches Programm

Delphi-Quellcode:
 for i:=0 to memo1.Lines.count-1 do
    begin
     nrComm1.SendString(Memo1.Lines[i]);
     nrComm1.SendChar(#13);
     nrComm1.SendChar(#10);
    end;
     nrComm1.SendChar(#4);

DaCoda 2. Jan 2025 20:45

AW: RS232 Schnittstelle Daten senden
 
Ich benutze AsycPro : https://tpapro.sourceforge.net/ApdComPort.html
Ist kostenfrei und funktioniert sehr zuverlässig.

TurboMagic 2. Jan 2025 21:15

AW: RS232 Schnittstelle Daten senden
 
Ja auch dass gibt's im GetIt.
Jetzt bleibt halt die Frage ob dem OP die bisher gegebenen Tipps schon was geholfen haben.

lucy 5. Jan 2025 16:12

AW: RS232 Schnittstelle Daten senden
 
hallo, vielen dank für die vielen antworten! hatte leider noch keine zeit, alles zu lesen und zu testen.
ich werde aber die tage mal alles ausprobieren und testen.

hier und da werde ich bestimmt noch fragen haben!

danke :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz