Wie lese ich Daten von der seriellen Schnittstelle mit C? und dann nochmal die Daten an Modem übertragen? Ich verwende RS 232-Kabel für die serielle Kommunikation ...Daten von der seriellen Schnittstelle lesen
Antwort
Zunächst ist dies sehr abhängig von Betriebssystem, das Sie verwenden.
Für * nix Typ öffnen Sie in der Regel serielle Gerät wie normale Datei (/ dev/ttyS0, zum Beispiel), und beginnen zu lesen oder schreiben von ihm. Wie für Windows kann ich Ihnen beraten, nach einer zuverlässigen Bibliothek zu suchen, weil serielle Windows-Kommunikation ein echter Albtraum sein kann. Mehr noch, es kann einige Unterschiede zwischen alten Windows-Versionen und niemals geben.
Persönlich, weil ich wxWidgets Benutzer bin, verwende ich wxCTB. Sie sollten nach einer Bibliothek suchen, die zu der IDE passt, die Sie verwenden.
einige gebühren Links frei;) www.robbayer.com/files/serial-win.pdf www.lookrs232.com/com_port_programming/
Nicht so geeignet für eingebettete (es ist markiert 'eingebettet'). –
Nicht wahr. Embedded * normalerweise * bedeutet Linux oder WinCE. –
Viele nützliche Informationen über mit seriellen Schnittstellen Umgang sowohl auf PCs und auf dem Gerät Ende der Leitung können auf Jan Axelson's Website für das Buch Serial Port Complete gefunden werden.
Die tatsächliche Interaktion mit dem Port wird sehr plattformspezifisch sein. In * nix der meisten Flavors öffnen Sie ein Gerät mit dem Namen /dev/ttya
und verwenden read()
, write()
und ioctl()
, um den Port zu lesen, zu schreiben und zu konfigurieren.
Unter Windows öffnen Sie eine Datei mit dem Namen COM1
(oder \\.\COM1
auf einige Aromen) mit der CreateFile()
Funktion, und es dann konfiguriert bekommen und glücklich mit Funktionen wie SetCommState()
und der DCB
Struktur. Die Details ähneln in groben Zügen den Dingen, die Sie auf * nix tun müssen, aber völlig anders organisiert. Sie finden die gesamte Diskussion über das Konfigurieren und Verwenden von COM-Ports unter MSDN.
Auf dem Embedded-Gerät greifen Sie entweder direkt auf die Hardwareregister des UART zu oder interagieren mit einem RTOS. In jedem Fall gibt es im Wesentlichen keine Möglichkeit, den Code auf dem Gerät weitgehend portabel zu machen.
Im Windows-Land finden Sie besser eine Bibliothek, die all die Magie passieren lässt.
Persönlich benutze ich Borland C++, um kleines Dienstprogramm zusammenzufügen, um mit meiner Hardware zu sprechen (Bootloader, Konfiguration und Testen) und ich bin sehr glücklich mit der TurboPower Async Professional Library, die sowohl in Delphi und BCC funktioniert und Open Source (Mozilla Öffentliche Lizenz 1.1).
In der eingebetteten Welt verfügt Ihr Compiler über einen Mechanismus (in der Regel Compiler-spezifisch), der den Zugriff auf die Hardware-Register ermöglicht, die zur Implementierung der seriellen Schnittstelle entweder im Gerät oder in einem externen Speicher oder einem IO-gemappten Gerät verwendet werden. Diese Registerdefinitionen werden oft von dem Werkzeug- oder Prozessorhersteller bereitgestellt, und es ist dann nur ein Fall des Schreibens der Konfigurationssteuerwerte in die Register des seriellen Ports, um ihren Betriebsmodus einzustellen und dann die Daten aus dem Empfangspufferregister zu lesen.
Klingt einfach, aber auf der MSP-430-Mailingliste sind USART-Programmierfragen das häufigste Einzelthema.
Um Ians Antwort zu erweitern, wird ein typischer eingebetteter C-Compiler eine Compiler-Direktive oder eine Anweisung haben, deren Parameter Einstellungen wie die Baudrate steuern und die den UART (oder andere I/O-Hardware) einem Stream zuordnen. Sie können einen Stream-Namen angeben (wenn Sie mehr als einen seriellen Port haben) oder die Standardeinstellungen verwenden. Dann können Sie mit den üblichen c-Zeichenroutinen auf die serielle Schnittstelle zugreifen, und es wird eine Unterbrechung geben, wenn sie jedes Zeichen empfängt. Ihre Interrupt-Routine liest also jedes Zeichen und legt es in einen Puffer.
- 1. Lesen von der seriellen Schnittstelle in C#
- 2. Lesen der seriellen Schnittstelle von JS-Code
- 3. Json-Objekt von der seriellen Schnittstelle lesen
- 4. C#: Lesen der seriellen Schnittstelle - BytesToRead
- 5. Kontinuierlich von der seriellen Schnittstelle asynchron richtig lesen
- 6. Warum MATLAB nicht immer von der seriellen Schnittstelle lesen?
- 7. Empfangen von Bytes von der seriellen Schnittstelle
- 8. den Durchschnitt der seriellen Schnittstelle Daten bekommen
- 9. Lesen Sie die Datei von der seriellen Schnittstelle mit Java
- 10. Konvertieren von Daten der seriellen Schnittstelle in Ganzzahl
- 11. Überwachung der seriellen Schnittstelle
- 12. Anzeige von Daten von einer seriellen Schnittstelle in einer jTabelle
- 13. Überwachung der seriellen Schnittstelle für Windows CE?
- 14. Ich empfange Junk auf der seriellen Schnittstelle
- 15. Understanding Arduino - Einlesen von der seriellen Schnittstelle in Java
- 16. Lesen und Schreiben über den seriellen Port
- 17. mit der seriellen Schnittstelle in Python3 asyncio
- 18. Kommunikationsprobleme bei der seriellen Schnittstelle (C-Code)
- 19. Lesen von der seriellen Schnittstelle von C++ oder Python auf Windows
- 20. Das Lesen von der seriellen Schnittstelle in einer Ruby on Rails-Anwendung hängt
- 21. Java - dynamische Änderung jLabel Text nach Daten von der seriellen Schnittstelle
- 22. Java: Können wir mithilfe von Bedingungen mit und ohne Timeouts von einer seriellen Schnittstelle lesen?
- 23. Serieller Port ReadLine vs ReadExisting oder wie man die Daten von der seriellen Schnittstelle richtig liest
- 24. Öffnen der von einem Drucker verwendeten seriellen Schnittstelle
- 25. Timing-Problem beim Schreiben von einer seriellen Schnittstelle
- 26. So speichern Sie eingehende Daten von der seriellen Schnittstelle in eine Textdatei
- 27. So lesen Sie serielle Daten von JavaScript
- 28. serielle Schnittstelle stecken bleiben bei lesen() Daten
- 29. Wie kann ich Timeout für read() beim Lesen von einer seriellen Schnittstelle (C/C++) implementieren
- 30. Trennen von Daten von Knoten serielle Schnittstelle
Welches Betriebssystem? –
Welche Hardware/Plattform? – DaveR
Sie müssen auf jeden Fall weitere Informationen zu dieser Frage hinzufügen. – Johan