Ich arbeite mit einem Peripheriegerät, das über die serielle Kommunikation kommuniziert werden muss. Ich kann Befehle mit HyperTerminal senden, aber jetzt muss ich Programme schreiben, die es mir ohne HyperTerminal erlauben. Kann mir jemand auf eine Website zeigen und/oder zeige mir ein Beispiel Hallo Weltprogramm, um mich zu starten? Ich habe viele Seiten durchsucht, die mir einen unkompilierbaren/alten VC6-Code geben.Grundbeispiel der seriellen Kommunikation mit Windows XP/Win32
Antwort
Um mit der seriellen Schnittstelle zu verbinden, öffnen Sie eine Datei mit einem der speziellen Dateinamen "COM1" bis "COM9". Bei seriellen Ports mit höheren Nummern beginnt der spezielle Dateiname mit \\? \, Was im C/C++ Code als "\\\\\\ COM10" usw. maskiert werden muss.
http://msdn.microsoft.com/en-us/library/ms810467.aspx hat eine wirklich gute Tutorial zur Verwendung der seriellen Schnittstelle. Beachten Sie, dass Sie die Windows-Datei-E/A-Funktionen wie CreateFile()
, und WriteFile()
verwenden sollten. Ich bin mir nicht sicher, ob es funktioniert, Standard-I/O-Funktionen wie fopen()
, fread()
und fwrite()
zu verwenden.
Microsoft bietet an article with sample code beschreibt, wie dies unter Win32 zu tun.
Ich glaube, Sie werden viel Beispielcode für C# auch finden, wenn Sie VC6 zu alt finden. Ich denke, es gibt auch eine Reihe von "freien" seriellen/COM-Port-Wrappern, aber ich habe nur meine eigene geschrieben, als ich eine RS232-Controller-Software geschrieben habe.
google C# und serielle Schnittstelle oder RS232
Ich habe diese:
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
Sie sollten mit einer Google-Suche kein Problem der Suche nach geeigneten Code.
Boost:asio kann möglicherweise helfen, wie ein serielles Gerät kürzlich hinzugefügt wurde.
Faire Warnung obwohl; Die Dokumentation der seriellen Schnittstelle ist Licht, vermutlich, da es ziemlich neu ist (es wurde in Asio 1.1.1 hinzugefügt, das in Boost 1.36 enthalten war).
Aber die Arbeit durch asio ist, IMHO, eine bessere Lösung als die Verwendung der rohen Win32-API. Warum? Es wird einfacher zu lesen und zu warten sein (es ist eine API auf höherer Ebene) und es wird plattformübergreifend sein (außer dort, wo Sie den Betriebssystem-spezifischen Gerätenamen angeben müssen). Die Mailinglisten Boost - Users und asio.user sind sehr aktiv und freundlich und sollten Ihnen helfen können, wenn Sie nicht weiterkommen.
Boost macht einen schrecklichen Job der Win32 Fehlerprüfung in Multi-Thread-Programmen. Es ignoriert direkt Rückgabewerte für 'WaitForSingleObject'. Verwenden Sie auf eigene Gefahr, wenn es Ihnen nichts ausmacht, ihre Fehler in einem Thread-Programm zu finden. – jww
Bei Verwendung von .NET 2.0 siehe System.IO.Ports und this article sollte hilfreich sein. Wenn direkt Win32, dann ist Adam's answer am besten.
- 1. Modem hängt während der seriellen Kommunikation
- 2. Falsche Datenübertragung in der seriellen Kommunikation zwischen Arduino und Himbeere
- 3. UI ist bei Verwendung der seriellen Kommunikation verzögert.
- 4. Überwachung der seriellen Schnittstelle für Windows CE?
- 5. Serielle Kommunikation mit PHP unter Windows
- 6. Windows/.NET Möglichkeit zur Überwachung/Debugging der seriellen Schnittstelle?
- 7. Kommunikation zwischen Windows-Kernprozesse
- 8. Daten von der seriellen Schnittstelle lesen
- 9. Auflisten von seriellen (COM) Ports unter Windows?
- 10. Kommunikationsprobleme bei der seriellen Schnittstelle (C-Code)
- 11. Schnellste Methode der Kommunikation mit einem Windows-Dienst
- 12. schreibe eine Datei von der seriellen in Python in Windows
- 13. Serielle Kommunikation mit Windows Phone 8
- 14. Windows 10 Bluetooth-Kommunikation mit Gatt-Protokoll
- 15. Überwachung der seriellen Schnittstelle
- 16. Arduino Kommunikation mit C#
- 17. mit der seriellen Schnittstelle in Python3 asyncio
- 18. Timeout des seriellen Ports
- 19. Kommunikation von der seriellen Schnittstelle -> Chrome App -> Webseite. Webseite initiiert.
- 20. Empfangen von Bytes von der seriellen Schnittstelle
- 21. Kommunikation mit Ports mit C++ oder C#?
- 22. Kommunikation zwischen Chrome-Erweiterung und Windows-Dienst
- 23. Kommunikation mit einem Magnetkartenleser MW-3170
- 24. TCP-Kommunikation zwischen Windows (Client) und Linux
- 25. Understanding Arduino - Einlesen von der seriellen Schnittstelle in Java
- 26. Interprozess-Kommunikation mit SendMessage unter Windows und Qt5
- 27. Konsolen-App für die Kommunikation mit einem Windows-Dienst
- 28. Windows CMD Wrapper schlechte Kommunikation mit Clojure und Scala REPL
- 29. Kommunikation mit einem Treiber über ein Netzwerk in Windows
- 30. Windows Form-Anwendung hängt beim Empfangen von seriellen Daten
Glauben Sie, dass der verknüpfte Artikel noch relevant ist? Gibt es heutzutage einen besseren Weg? – baordog
@baordog der verknüpfte Artikel [ist nicht gut] (http://stackoverflow.com/questions/25364525/win32-api-how-to-read-the-serial-or-exit-within-a-timeout -wenn-keine-Daten). –