Forum: PC-Programmierung PC-Programm in C++/C# -> USB -> Arduino


von Joachim .. (joachim_01)


Lesenswert?

Hi,
wie stelle ich es an um mit einem Arduino Uno mit einem Programm per USB 
zu kommunizieren? Ich fand bis jetzt nur Code der eine COM-Schnittstelle 
bedient, jedoch nichts darüber wie das USB-Gedöns eines entsprechenden 
ATMega, FTDI o.ähnl. gehandhabt werden muß. Mit nem USB-PIC 18F4550 hab 
ich das mittels vorgefertigtem Framework für C# gelöst, So etwas stelle 
ich mir auch für AVR vor. Oder benötige so etwas für den Arduino 
nicht...? Hab im Moment etwas die Übersicht verloren.

von Peter II (Gast)


Lesenswert?

warum willst du es nicht über COM machen? Usb stellt doch bestimmt einen 
virtuellen com-port zur verfügung.

von Joachim .. (joachim_01)


Lesenswert?

Geht das denn 'einfach so'...? Zumal ich ja meiner Anwendung schon n 
bissel was über das USB-Device im Desciptor mitteilen muß. Oder nicht?

von Karl H. (kbuchegg)


Lesenswert?

Joachim ... schrieb:
> Geht das denn 'einfach so'...?

Sicher.
Das ist ja das schöne an den FTDI.
An beiden Endpunkten kann man so tun, als ob das eine stink normale 
Serielle Verbindung wäre. Den Mittelteil zwischen den Endpunkten 
erledigen der PC-Treiber und der FTDI Chip, so dass man als 
Programmierer mit den Komplexitäten von USB überhaupt nicht in Berührung 
kommt.
Auf PC Seite hat man einen virtuellen COM-Port, der vom Treiber auf USB 
umgesetzt wird und auf µC Seite hat man einen FTDI, aus dem die Signale 
schon aufbereitet für einen UART Baustein wieder rauskommen.

von Joachim .. (joachim_01)


Lesenswert?

Hm. Vermutlich habe ich die einzelnen OSI-Layer nicht sauber genug 
getrennt...
Das heißt, ich müßte mich auf die Suche nach einem entsprechenden 
Treiber/DLL oder ähnl. für den Arduino machen... bzw. befindet der sich 
vielleicht  schon auf der Festplatte durch das installieren der 
Arduino-Umgebung.
Irgendwie blick ich's heut' nicht so recht;-)

Werd mal weiter graben.

von Karl H. (kbuchegg)


Lesenswert?

Joachim ... schrieb:

> Treiber/DLL oder ähnl. für den Arduino machen... bzw. befindet der sich
> vielleicht  schon auf der Festplatte durch das installieren der
> Arduino-Umgebung.

Höchst wahrscheinlich hast du den schon lange.

Sieh doch einfach mal im Gerätemanager bei angestecktem Arduino noch, ob 
du einen virtuellen COM-Port hast. Ziehst du den Arduino vom PC ab, dann 
verschwindet der COM-Port im Gerätemanager. Steckst du ihn an, dann ist 
er wieder da.

Dauert keine 2 Minuten und du weißt, was Sache ist.

von mrx (Gast)


Lesenswert?

Beim Arduino sind entsprechende Treiber dabei. Da wird deine 
USB-Schnittstelle auf den COM-Port gemapped.In der Powershell z.B. 
funktioniert folgender Code (COM3 ist der Arduino-Port).

$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.Open()
$port.Write([byte]0xFE,0,1) // hier halt was du senden willst
$port.Close()

Das kannst Du Dir ja in C/C++ Code umdenken. Also einfach Serial 
aufmachen...

(Siehe z.B. hier 
http://www.beefrankly.org/blog/2011/12/10/arduino-1-0-and-sparkfun-serial-lcd/ 
)

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
Noch kein Account? Hier anmelden.