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
Mal abgesehen davon, dass da 2 getrennte Adapter RS422<->RS232 am PC2 haengen sollten, ist die Software stark vom OS abhaengig. Blackbird
Die Software soll auf einem Laptop mit WindowsXP laufen. Die beiden Adapter werden auch als zwei Com-Schnittstellen ohne Probleme erkannt. Michael
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.