Forum: PC-Programmierung RS232 Daten durchschleifen und analysieren


von Michael A. (ivolein)


Lesenswert?

Hallo Zusammen,

ich habe ein Frage zur Programmierung von Seriellen Schnittstellen
unter C++. Hier mein eine kurze Beschreibung von meinem "Aufbu".

PC 1 [com1] ---> [adapter:com1] PC2 [adapter:com2] ---> Steuergerät

Die Kommunikation zwischen PC1 und Steuergerät erfolgt über eine RS422
Schnittstelle. Ich möchte mit Hilfe von einem zweiten PC (PC2) die
Kommunikation zwischen PC1 und Steuergerät überwachen und evt.
aufzeichnen. Dazu habe ich eine Adapterkarte RS422-> USB gekauft. Diese
Adapterkarte stellt zwei Serielle Schnittstellen zur verfügung.
Ich möchte jetzt auf PC2 ein Programm laufen lasse, dass die Daten von
COM1 liest und dann  evt. auswertet, mitloggt, verändert und danach die
Daten wieder über den Adapter (com2) zum Steuergerät schickt. Das
Datenprotokoll das mit Hilfe der RS422 überträgen wird ist mir
bekannt.
Sowas müsste doch machbar sein.
Nun zu meiner Frage...
Wie realisiere ich so was Softwäretechnisch ?
Daten empfängen und Puffern ? Ohne Puffern ? Daten.....

Vielen Dank... Michael

von Blackbird (Gast)


Lesenswert?

Mal abgesehen davon, dass da 2 getrennte Adapter RS422<->RS232 am PC2
haengen sollten, ist die Software stark vom OS abhaengig.

Blackbird

von Michael A. (ivolein)


Lesenswert?

Die Software soll auf einem Laptop mit WindowsXP laufen.
Die beiden Adapter werden auch als zwei Com-Schnittstellen ohne
Probleme erkannt.

Michael

von Blackbird (Gast)


Lesenswert?

Eine (mögliche) Lösung könnte so aussehen:
Ein WinMain-Prog erstellt ein Windows (die CALLBACK-Prozedur) mit
Deiner GUI, den Menüs, Buttons, Edits, Comboboxes oder was auch immer
Du haben möchtest um die Daten zu kontrollieren, zu speichern, zu
verändern ...

Dort werden auch, z.B.: via Menü, die COM-Ports ausgewählt und Dein
voreingestelltes oder ausgewähltes gewünschtes Prozessing gestartet,
indem 2 Threads erstellt und gestartet (mit den entsprechenden
Schnittstellen- und Protokoll-Parametern) werden, je eine für jede
COM.

Die machen nichts weiter als ständig an den COMs lauschen und alle
Empfangenen Daten sofort an Deine CALLBACK-Prozedur zu senden.
Wie es hier weitergehen soll, konnte ich aus Deinem Post nicht so
richtig entnehmen. Wenn Du sie nur monitoren willst, können sie nach
der Darstellung in z.B.: einem Editfenster, gleich per WriteFile an die
jeweils andere COM gesendet werden. Willst Du sie aber ändern, so mußt
Du sie solange verzögern, bis Du sie (verändert und) abgeschickt hast.
Oder Du läßt sie durch einen konfigurierbaren Filter laufen.

Gepuffert werden sie unter Windows 2 mal, einmal in der Hardware (meist
16 Byte) und im (einstellbaren) Read- /Write-Buffer der COM-Treiber.

Wenn Du weißt, was geändert werden soll und Du das nicht on-the-fly
ändern willst, so reicht auch ein DOS32-Programm. Drei Threads wirst Du
aber trotzdem brauchen (2x für die COMS und einen für den Filter).

Blackbird

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.