Kommunikation uC mit PC via UART und VCP
-
Bize schrieb:
--> Danke dafür. Der Code ist nur leider in C++. Gibts etwas ähnliches in C?
Ob du auf dem PC C oder C++ verwendest, ist ziemlich egal. Nutz doch die Gelegenheit um in C++ einzusteigen.
-
Bize schrieb:
--> Ich meine damit, welche prinzipiellen Möglichkeiten bestehen, wenn ich physikalisch einen uC, USART/USB-Wandler und PC mit USB-Buchse habe. Welche Methoden bestehen den uC mit dem PC kommunizieren zu lassen?
(So wie ich das verstehe ist eine Methode über einen Virtuellen COM PORT und RS232. Mein Verständnis ist, dass es aber auch noch über eine echt USB-Verbindung gehen müsste oder?)Natürlich geht das. Wird Dich aber erst recht überfordern, wenn du schon Probleme hast die Systemaufrufe aus einem C++ Programm (notfalls) auch mit C zu verwenden.
-
@merano
Die von dir verlinkte Library ist halt schon etwas hardcore.
Das ganze asynchrone Gedöns braucht man oft auch gar nicht.Gut, manchmal ist die einzige Alternative zu asynchronem IO Threads zu verwenden - wenn man damit keine Erfahrung hat ist es fraglich womit man besser fährt.
Aber ich schätze dass der OP für sein Programm vielleicht überhaupt nix asynchron machen muss, weder mit Threads noch sonstwie.@Bize
Hast du dir mal die von mir genannten Funktionen angesehen? Ich hab schon viel Code geschrieben der serielle Schnittstellen verwendet, alles direkt auf WinAPI aufbauend. Ich fand das nicht besonders erschreckend. Das Zusammensuchen der benötigten Funktionen um die ganzen Einstellungen des COM Ports programmatisch zu setzen war dabei das lästigste.
-
schau ob damit weiter kommst:
http://members.inode.at/anton.zechner/az/Seriell.htm
http://softwaresouls.com/softwaresouls/2011/12/11/simple-c-class-example-using-serial-port/
http://sourceforge.net/projects/cppserialcom/
http://stackoverflow.com/questions/1652698/control-usb-ports
-
Mr C schrieb:
schau ob damit weiter kommst:
http://members.inode.at/anton.zechner/az/Seriell.htm
http://softwaresouls.com/softwaresouls/2011/12/11/simple-c-class-example-using-serial-port/
http://sourceforge.net/projects/cppserialcom/
http://stackoverflow.com/questions/1652698/control-usb-portsDer erste Link geht wohl für C.
2. und 3. Link
Wenn der OP schon kein "normales" C++ mag wird er C++.NET erst recht nicht mögen.4. Link
Der Hinweis auf libusb for win32 http://libusb-win32.sourceforge.net/ ist da schon eher das was er eigentlich will.
Leider muss man dann aber erstmal einen Treiber (libusb0.sys) installieren.
Das will man eigentlich ja auch nicht ...
-
merano der TE hat in seinem zweiten Post gefragt ob der Code nicht in C gibt, also der erster link wird passen zu mindest Ansatzweise.
Währe nicht nötig mein letzten Post zu zitieren, bin nicht blind.
-
Der 1. Link sieht wirklich gut aus.
Hält den Ball schön flach, was gut für Anfänger ist.
Und er unterstützt sogar den Device-Path abzufragen. Was nützlich ist, wenn man den COM Port eines USB Geräts mit einer bestimmten VID/PID automatisch bestimmen möchte.
-
vieleicht wär das noch hilfreich:
https://msdn.microsoft.com/en-us/library/windows/hardware/ff540174(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/hardware/ff540046(v=vs.85).aspx#winusb
-
https://github.com/rsta2/uspi
oder
schau dir libusb (open source):
https://git.libusb.org/?p=libusb.git;a=summary;js=1
-
hustbaer schrieb:
@merano
@Bize
Hast du dir mal die von mir genannten Funktionen angesehen? Ich hab schon viel Code geschrieben der serielle Schnittstellen verwendet, alles direkt auf WinAPI aufbauend. Ich fand das nicht besonders erschreckend. Das Zusammensuchen der benötigten Funktionen um die ganzen Einstellungen des COM Ports programmatisch zu setzen was dabei das lästigste.Hallo Hustbaer,
ja, hab ich. Es klappt sehr gut!
Kann nun die COM Schnittstelle öffnen, Baudrate setzen, Parität usw....
Endlich kann ich mit meinem uC via serieller Schnittstelle kommunizieren.
Ich brauch da meistens immer den ersten Anstupser bis ich weiß wie ich mal anfangen kann, danach läuft es dann meistens von selber. Und mit den Schnittstellen eines PCs habe ich bisher noch nie was gemacht.Vielen Dank dafür!!
merano schrieb:
4. Link
Der Hinweis auf libusb for win32 http://libusb-win32.sourceforge.net/ ist da schon eher das was er eigentlich will.
Leider muss man dann aber erstmal einen Treiber (libusb0.sys) installieren.
Das will man eigentlich ja auch nicht ...Ja, mit der libusb für win32 habe ich mich auch schon mal ein wenig beschäftigt, leider hab ich das mit dem Treiber nicht hinbekommen. Ich denke ich werde mich erst mal mit der COM Schnittstelle beschäftigen wie oben geschrieben und dann mal schauen
Merci!!