Emulator-Programm
Emulator-Programm
Hallo Forum,
vielleicht habt ihr mal wieder einen guten Tipp für mich.
Ich möchte gerne ein Gerät emulieren, welches normalerweise über die RS-232 mit dem PC verbunden ist.
Programm und Gerät kommunizieren mit 19200kBaud miteinander. Das Programm für den normalen Gebrauch funktioniert bereits und ist natürlich in Lazarus geschrieben. Programm und Gerät tauschen 10-20 mal pro Sekunde Daten aus.
Es wäre durchaus möglich das über zwei Dateien zu machen, aber die Lösung finde ich nicht besonders elegant.
Das Emulatorprogramm soll plattformunabhängig sein.
Vielen Dank
BerLin
vielleicht habt ihr mal wieder einen guten Tipp für mich.
Ich möchte gerne ein Gerät emulieren, welches normalerweise über die RS-232 mit dem PC verbunden ist.
Programm und Gerät kommunizieren mit 19200kBaud miteinander. Das Programm für den normalen Gebrauch funktioniert bereits und ist natürlich in Lazarus geschrieben. Programm und Gerät tauschen 10-20 mal pro Sekunde Daten aus.
Es wäre durchaus möglich das über zwei Dateien zu machen, aber die Lösung finde ich nicht besonders elegant.
Das Emulatorprogramm soll plattformunabhängig sein.
Vielen Dank
BerLin
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Such mal nach IPC - Inter Prozess Kommunikation. Das geht in die Richtung
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
RS-232 ist ein strom von Bytes. Ersatzweise kann also alles verwendet werden, was einen Strom von Bytes darstellt.
Am verbreitetsten ist da sicherlich TCP/IP ("Telnet"). Vorteil: man kann sogar eine kleine Kistze ("COM-Server" genannt und von vielen Herstellern lieferbar) verwenden um das RS-232 "Gerät" an ein TCP/IP - Kommunikationsprogramm anzuschließen oder umgekehrt das RS-232 - Kommunikationsprogramm an das TCP/IP-basierten Emulatorprogramm anzubinden.
-Michael
Am verbreitetsten ist da sicherlich TCP/IP ("Telnet"). Vorteil: man kann sogar eine kleine Kistze ("COM-Server" genannt und von vielen Herstellern lieferbar) verwenden um das RS-232 "Gerät" an ein TCP/IP - Kommunikationsprogramm anzuschließen oder umgekehrt das RS-232 - Kommunikationsprogramm an das TCP/IP-basierten Emulatorprogramm anzubinden.
-Michael
Hallo,
danke für eure Tipps! Vielleicht habe ich vergessen ein wichtiges Detail zu erwähnen. Die Emulation soll bei potenziellen Kunden laufen und einen ersten Eindruck über die Fähigkeiten des Gerätes vermitteln.
Ist da TCP/IP wirklich eine gute Lösung? Da alle W32 Syteme und Linux unterstützt werden sollen.
Ich vermute mal das ich mit IPC besser zu Recht kommme.
Viele Grüße
BerLin
danke für eure Tipps! Vielleicht habe ich vergessen ein wichtiges Detail zu erwähnen. Die Emulation soll bei potenziellen Kunden laufen und einen ersten Eindruck über die Fähigkeiten des Gerätes vermitteln.
Ist da TCP/IP wirklich eine gute Lösung? Da alle W32 Syteme und Linux unterstützt werden sollen.
Ich vermute mal das ich mit IPC besser zu Recht kommme.
Viele Grüße
BerLin
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
TCP/IP ist dafür schon eine gute Idee. Wobei das mit dem COM-Server nicht so einfach ist da müsste man schon noch einiges beachten.
Ich seh 4 Möglichkeiten
1. kein 2. Programm es gibt einen Demo Mode oder in der Schnittstellenauswahl eine Demo Schnittstelle wo das Programm in bestimmten Zyklen Daten aus ner Datei liest und Der verarbeitungsroutine übergibt. Der Aufwand ist minimal.
2. 2. Programm das ü ber TCP/IP daten schickt. Du musst ne 2. Schnittstelle implemenieren und das 2. Programm schreiben wär mir zu aufwendig für den Zweck
3. Das selbe per IPC im Tab System findest du IPCServer und IPCClient hat aber die selben Nachteile wie TCP/IP und TCP/IP kannst du zur not auch über Netzwerke hinweg benutzen.
4. Das 2. Programm sendet die Daten einfach an eine RS232 Schnittstelle und du verbindest die schnittstellen über ein Nullmodem Kabel hat den Vorteil das du nur noch ein Programm schreiben musst und dein Hauptprogramm nicht ändern.
Ich seh 4 Möglichkeiten
1. kein 2. Programm es gibt einen Demo Mode oder in der Schnittstellenauswahl eine Demo Schnittstelle wo das Programm in bestimmten Zyklen Daten aus ner Datei liest und Der verarbeitungsroutine übergibt. Der Aufwand ist minimal.
2. 2. Programm das ü ber TCP/IP daten schickt. Du musst ne 2. Schnittstelle implemenieren und das 2. Programm schreiben wär mir zu aufwendig für den Zweck
3. Das selbe per IPC im Tab System findest du IPCServer und IPCClient hat aber die selben Nachteile wie TCP/IP und TCP/IP kannst du zur not auch über Netzwerke hinweg benutzen.
4. Das 2. Programm sendet die Daten einfach an eine RS232 Schnittstelle und du verbindest die schnittstellen über ein Nullmodem Kabel hat den Vorteil das du nur noch ein Programm schreiben musst und dein Hauptprogramm nicht ändern.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Gerade wenn mehrere Plattformen unterstützt werden sollen, ist TCP/IP vorzuziehen. TCP/IP ist auf allen Systemen in ähnlicher weise verfügbar und wenn Du eine einfache systemunabhängige Library benutzt (z.B. Synapse), brauchgst Du Duch um die Systemn-API nicht zu kümmern. Für IPC gibt es (leider) soweit eich weiß keine systemunabhängige Library.BerLin hat geschrieben:Ist da TCP/IP wirklich eine gute Lösung? Da alle W32 Syteme und Linux unterstützt werden sollen.
Ich vermute mal das ich mit IPC besser zu Recht kommme.
Ich halte es auch für einen großen Vorteil von TCP/IP, dass Du, wenn es nötig ist, damit die beiden Programme auch auf zwei unterschiedlichen Rechnern installieren kannst und wenn Du willst die Verbindung auch über Internet routen kannst.
-Michael
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Welche fpc/Lazarus-Komponenten können eine Datenübertragung zwischen zwei laufenden Programmen machen ? Das müsste RPC (= remote procedure call), (named) Pipe, shared Memory und Messages, oder etwas ähnliches sein. Und das auch noch mit einer Plattfom-unabhängigen Schnittstelle zum User-Code...Christian hat geschrieben:Und was ist mit den fpc/Lazarus Komponenten ?
Mir kommt da RemObjects in den Sinn (ist für FPC, aber nicht für Lazarus spezifiziert). Das kostet aber Geld.
-Michael
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Lese doch ab und zu mal meine Antworten bevor du was dahinterpflasterst oder Schau ab und zu mal in deine Komponentenpalette. Dort findest du dann IPCServer und IPCClient. Die implementieren Plattformübergreifende IPC auf vielen Plattformen sogar mit mehreren Methoden (Memory mapped Files, Pipes, Messages...)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Hallo Leute,
vielen Dank für eure Vorschläge!
Ich habe mich für zwei Lösungswege entschieden, welche ich mal probieren werde.
Der Lösungsvorschlag mit dem Nullmodemkabel ist technisch möglich, aber welcher neue PC hat überhaupt noch eine, wenn nicht sogar zwei Schnittstellen?
Einfach eine Programmerweiterung zu programmieren wäre auch möglich, aber der Emulator soll im Gegensatz zum Programm Closed Source sein.
Verbleiben noch TCP/IP und IPC.
Ich werde mal mit den IPC-Lazarus Komponenten anfangen.
Ihr hört von mir, danke
BerLin
vielen Dank für eure Vorschläge!
Ich habe mich für zwei Lösungswege entschieden, welche ich mal probieren werde.
Der Lösungsvorschlag mit dem Nullmodemkabel ist technisch möglich, aber welcher neue PC hat überhaupt noch eine, wenn nicht sogar zwei Schnittstellen?
Einfach eine Programmerweiterung zu programmieren wäre auch möglich, aber der Emulator soll im Gegensatz zum Programm Closed Source sein.
Verbleiben noch TCP/IP und IPC.
Ich werde mal mit den IPC-Lazarus Komponenten anfangen.
Ihr hört von mir, danke
BerLin
Hallo Leute,
ich stehe gerade etwas auf dem Schlauch.
Ich versuche mich gerade an der simpleipc.
Ich habe zwei Testprogramme geschrieben eines läuft als Server, das andere als Client. Die Verbindung zwischen beiden Programmen besteht.
Auf beiden Programmen läuft jeweils ein Server und Client. Richtig?
Im Verzeichnis /tmp sehe auch 2 pipes.
Wie tausche ich nun einfache Strings zwischen Server und Client aus?
Wenn es klappt veröffentliche ich auch ein Demoprogramm!
Merci
BerLin
ich stehe gerade etwas auf dem Schlauch.
Ich versuche mich gerade an der simpleipc.
Ich habe zwei Testprogramme geschrieben eines läuft als Server, das andere als Client. Die Verbindung zwischen beiden Programmen besteht.
Auf beiden Programmen läuft jeweils ein Server und Client. Richtig?
Im Verzeichnis /tmp sehe auch 2 pipes.
Wie tausche ich nun einfache Strings zwischen Server und Client aus?
Wenn es klappt veröffentliche ich auch ein Demoprogramm!
Merci
BerLin