Entwickler-Ecke
Internet / Netzwerk - Serial Line Internet Protocol - Implementation
Trazom - Do 13.10.11 20:26
Titel: Serial Line Internet Protocol - Implementation
Hallo zusammen,
nachdem ich vor einigen Jahren einige Socket-Anwendungen mit der Hilfe von Narses' Tutorial geschrieben (danke nochmal an dieser Stelle dafür), konnte ich also Zeichenketten via TCP/IP übertragen.
Aktuell muss ich auch Zeichenketten über die serielle Schnittstelle übertragen. Dazu habe ich mir serialng geholt und habe damit das Werkzeug, um die Schnittstelle anzusprechen.
Die Daten sollen mit dem "Serial Line Internet Protocol" übertragen werden und als Quelle dient mir dieses hier
http://www.rfc-editor.org/rfc/rfc1055.txt
Nachdem ich erfolglos bei GOogle und in diesem Forum gesucht habe, wüsste ich gern, ob das schon mal jemand in Delphi implementiert hat, d.h. das Parsing, das passende Ersetzen der Zeichen ESC und END usw.
Vielleicht kennt jemand schon ein Stück Code dazu oder ein Tutorial.
Vielen Dank und viele Grüße,
Trazom
chrisw - Mo 17.10.11 13:04
Mmmh, ich glaube du mischt hier Äpfel und Birnen !
Das SLIP-Protokoll (ebenso wie z.Bsp. auch das besser bekannte PPP-Protokoll) dient dazu TCP/IP Pakete über eine serielle
Leitung zu übertragen.
Heisst: Auf beiden Seiten der Leitung ein TCP-Stack.
Hierzu musst du nichts in Delphi schreiben, sondern lediglich einen SLIP Treiber für dein Betriebssystem finden, und schon kannst du TCP-IP über die serielle Schnittstelle schicken. (SLIP Treiber sind z.Bsp. bei älteren UNIX Derivaten bereits vorhanden. Ich bin der Meinung gelesen zu haben, dass es von WIN7 allerdings standardmässig nicht mehr unterstützt wird).
Ich denke, was du möchtest ist lediglich das Übertragen von Zeichenkettn über eine serielle Schnittstelle, hierzu sind mir bekannte Delphi Komponenten z.Bsp.: SerialNG, TComport oder AsyncPro.
Hiermit kannst du Zeichenketten über die (asynchrone) serielle Schittstelle deines PC's übertragen.
Christian
Trazom - Do 10.11.11 21:37
Hallo,
ich glaube die Verwirrung entstand, weil die Anwendung etwas ungewöhnlich ist. Aber ich habe die Routinen mittlerweile selbst geschrieben. Viellecht kann sie noch jemand gebrauchen, darum kopier ich sie hier rein.
Die erste Routine ersetzt das Zeichen 192, damit es bei der Übertragung als Terminator verwendet werden kann. Die zweite Routine macht die Rückumwandlung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| function StrToSlip (const a: String): String; var i, l: Integer; b: String; begin l:= length(a); b:=''; for i:=1 to l do begin case ord(a[i]) of 192: b:= b + #219#220; 219: b:= b + #219#221; else b:= b + a[i]; end; end; result:= b; end;
function SlipToStr (const a: String): String; var i, l: Integer; b: String; jump: boolean; begin l:= length(a); b:=''; jump:= false; for i:=1 to l do begin if not jump then begin case ord(a[i]) of 219: begin case ord(a[i+1]) of 220: begin jump:= true; b:= b + #192; end; 221: begin jump:= true; b:= b + #219; end; else b:= b + a[i]; end; end; else b:= b + a[i]; end; end else jump:= false; end; result:= b; end; |
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
chrisw - Fr 11.11.11 12:05
Da hätte ich, glaub ich, "Stringreplace" verwendet !
Christian
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!