Hallo, ich habe nun meine eigene Programmiersoftware für die NXP LPC2xxx MCUs fertig. Nun ist es mir wichtig, dass ich den UART, der für den Bootloader verwendet wird auch gleichzeitig für die PC (Windows) Kommunikation genutzt werden kann. Um zu Programmieren öffnet die Programmiersoftware die Schnittstelle, programmiert den LPC2xxx und gibt die serielle Schnittstelle (FTDI FT232) wieder frei. Problem: Die PC Anwendung weiß natürlich nichts davon, dass ich (während der Entwicklung) öfter mal "so eben" neue Firmware in die MCU laden möchte. Ich unterstelle dabei, dass PC Anwendung und die MCU permanent miteinander kommunizieren. Also wird die serielle Schnittstelle dauerhaft offengehalten. Nun ist es mir zu aufwendig jedes mal vor dem Firmware Update die PC Anwendung zu beenden. Schön wäre es nun, wenn die Programmiersoftware die PC-Anwendung hierzu darüber informieren würde, dass ein MCU Update ansteht, damit diese die Kommunikation vorübergehend abbricht und nach dem Programmieren wieder neu initialisiert. Ideal wäre es natürlich, wenn sich die Programmieranwendung "virtuell" zwischen die PC Anwendung und die serielle Schnittstelle schalten liese. Dann könnte ein Kommunikationsabbruch durch Unterterbrechung des Datenflusses erfolgen (virtuelle Stecker ziehen). Nun 3 Fragen: Ist es schwierig einen virtuellen COM-Port unter Windows anzulegen? Gibt es unter Windows Möglichkeiten einen seriellen Kommunikationskanal zwischen 2 Anwendungen aufzubauen, ähnlich, als wenn die beiden Anwendungen über einen COM-Port kommunizieren würden? Was wäre die einfachste Möglichkeit einer anderen Windowsanwenung eine Nachricht zu schicken. Ich programmiere mit C++/CLI und dem .NET-Framework 2.0.
Bernd M. wrote: > Problem: Die PC Anwendung weiß natürlich nichts davon, dass ich (während > der Entwicklung) öfter mal "so eben" neue Firmware in die MCU laden > möchte. Die PC Anwendung ist auch von dir geschrieben? Wenn ja: Kannst du nicht die Programmiersoftware über die Anwendung starten, dann weiss die Anwendung davon? > Ideal wäre es natürlich, wenn sich die Programmieranwendung "virtuell" > zwischen die PC Anwendung und die serielle Schnittstelle schalten liese. > Dann könnte ein Kommunikationsabbruch durch Unterterbrechung des > Datenflusses erfolgen (virtuelle Stecker ziehen). Du kannst mal versuchen über den D2XX Treiber den USB zu resetten (Stichwort: Cycle), aber ich befürchte dass wird nicht funktionieren wenn die Anwendung den Port geöffnet hat. > Nun 3 Fragen: > Ist es schwierig einen virtuellen COM-Port unter Windows anzulegen? Alles wo man tiefer ins Windows rein muss ist von Windows verbaut worden. Das wird sicher schwierig. > Gibt es unter Windows Möglichkeiten einen seriellen Kommunikationskanal > zwischen 2 Anwendungen aufzubauen, ähnlich, als wenn die beiden > Anwendungen über einen COM-Port kommunizieren würden? Keine Ahnung. Das .net Framework machts dir da aber nicht leichter, sondern versperrt dir noch mehr den Weg. > Was wäre die einfachste Möglichkeit einer anderen Windowsanwenung eine > Nachricht zu schicken. Einfach, sicher, aber langsam ist es eine Nachricht in eine Datei zu schreiben, die von der anderen Anwendung gepollt wird.
Grundsätzlich ist beides von mir. Es ging mir nur darum, eine möglichst komfortable Lösung zu finden.
Bernd M. wrote: > Grundsätzlich ist beides von mir. Es ging mir nur darum, eine möglichst > komfortable Lösung zu finden. Auf http://www.gmbsg.com/works/index.php?title=Remote_Events_mit_.NET_2.0:_Generische_L%C3%B6sung_mit_Dispatcher_und_Adapter wird auf einige Möglichkeiten eingegangen...
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.