Forum: PC-Programmierung HID, PIC und Visual Studio 2010 - C#


von ich (Gast)


Lesenswert?

Hallo zusammen.

Ich habe vor, demnächst eine Simple Platine zu erstellen, auf dem ein 
USB-fähiger PIC sitzt, z.B. PIC18F2550. PIC-Programmierung ist nicht so 
mein Problem. Aber die Programmierung für die PC-Software schon eher. 
Ich hätte gern zuerst ein Programm, das 2 Texte hat und einen Knopf. Im 
ersten Text steht, ob ein/das Gerät gefunden wurde. Wenn ich auf den 
Knopf drücke, sollen 2 Byte an den PIC übertragen werden, der PIC soll 
was machen und dann ein Statusbyte zurück zum PC schicken, das im 
zweiten Text angezeigt werden soll.

Ich habe mir gedacht, dass das mit HID am einfachsten geht. Zudem würde 
ich gerne keinen extra Treiber installieren müssen (was ja mit HID gehen 
soll).

Als Programmierungstool habe ich mir das Visual Studio 2010 Express - C# 
installiert. Sollte damit doch technisch gehen, oder?

Gibt es dazu irgendwelche Tutorials, die sich mit dem HID und C# 
befassen? Am besten sogar in Visual Studio und PIC ;) Aber das ist kein 
muss. Deutsch oder Englisch ist egal.

Ich würde aber auch gerne fertige Projekte angucken, also fertig, 
funktionsfähige Programme inkl. Sourcecode und Oberfläche. Wenn jemand 
denn sowas hat und weitergeben will.

Vielen Dank, Michael

von Loonix (Gast)


Lesenswert?

ich schrieb:
> Ich würde aber auch gerne fertige Projekte angucken, also fertig,
> funktionsfähige Programme inkl. Sourcecode und Oberfläche. Wenn jemand
> denn sowas hat und weitergeben will.

Es gibt da so ein Buch von Jan Axelson ("USB Complete"), da stehen 
einige Beispiele drin. Für C# würde ich mich dann eher an den VB- als 
den C++ Beispielen orientieren. Meine Sourcen kriegst du nicht. ;)

von Arc N. (arc)


Lesenswert?

ich schrieb:
> Gibt es dazu irgendwelche Tutorials, die sich mit dem HID und C#
> befassen? Am besten sogar in Visual Studio und PIC ;) Aber das ist kein
> muss. Deutsch oder Englisch ist egal.
>
> Ich würde aber auch gerne fertige Projekte angucken, also fertig,
> funktionsfähige Programme inkl. Sourcecode und Oberfläche. Wenn jemand
> denn sowas hat und weitergeben will.
>
> Vielen Dank, Michael

Code Project ist für so was meistens eine gute Anlaufstelle...
http://www.codeproject.com/KB/system/HIDAche.aspx (USB HID + PIC18)

von Sam (Gast)


Lesenswert?

Schau mal hier: www.embedded24.net. Das ist genau was Du suchst.

von ich (Gast)


Lesenswert?

uff... Hatte etwas zutun in letzter Zeit. Danke für die vielen 
Antworten. Ich werd sie mir mal angucken und mal testen. Wenn ich es 
hinbekommen habe, werd ich nochmal von mir hören lassen.

von Stefan (Gast)


Lesenswert?

Was du da vorhast mit deinem PIC und PC is überhaupt kein Problem.

Wenn du dir die "Application Libraries" von microchip runterlädst, 
findest du einige beispiele zu USB darin, darunter auch einige dll's. 
Der einfachste weg ist es die usb dll in deine Hostapplikation 
einzufügen und dann ihre funktionen zu verwenden. Wie diese dll jetzt 
genau heißt weiß ich nicht auswendig, aber ich werde mir später meine 
schon fertigen projekte angucken udn dir genauer bescheidsagen.

Es ist wirklich einfach damit zu arbeiten. Im Prinzip guckst ob dein 
Mikrocontroller über USB angeschlossen ist (identifiziert wird er über 
VID und PID), danach verbindest du dich mit dem device und sendest und 
empfängst deinen USB Buffer (bei pic18 is der max 64Byte).

Wie gesagt, es gibt da ne fertige dll, die sich toll ins .net framework 
einbinden lässt und mit allen .net Programmiersprachen dann verwendet 
wernden kann (C++,C#;VB). Das einzige "Problem", dass es zu beachten 
gilt ist die verwendete Version von .net, soweit ich weiß ist "2.0" von 
der dll unterstützt, deshalb auch in das framework kompilieren ! Das war 
zumindest der Stand vor nem Jahr, ob jetzt schon ein neueres framework 
unterstützt wird, kann ich dir nicht sagen.

Ich melde mich am Abend wieder und schreibe dir mal genau wie diese dll 
heißt. Ich kann dazu auch mal eines meiner Projekte ausgraben und mal 
versuchen mit welchen frameworks das kompatibel ist.

Wenn nötig schreib ich dir auch n kleines tutorial, wollt ich sowieso 
mal machen, nen genereller leitfaden schadet da sicher nie.

von Stefan P. (poge-st)


Lesenswert?

Sorry für die Verspätung, aber ich hatte leider erst jetzt Zeit mal kurz 
zu gucken wie und was du zur USB HID Kommunikation mit C# benötigst.

ALso wie gesagt, der beste bzw einfachste Weg führt über Microchips 
Application Libraries 
(http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784). 
Darin enthalten sind auch Beispiele mit den nötigen dlls. Die dll die du 
benötigst ist die HID "class.dll", ehrlich gesagt ist diese dll für C++, 
was auf den ersten Blick keine weiteren Probleme bereiten sollte, jedoch 
stehen dir in C# nicht die gleichen Pointer zur Verfügung wie in c++. 
Das heißt du müsstest kleine Abänderungen und Konvertierungen bei jedem 
Empfangen und Senden des USB Buffers machen.

Es gibt natürlich auch die Möglichkeit das eleganter und komfortabler zu 
lösen, so wie das zB ichgemacht habe:
Ich habe mir ein eigenes Projekt angelegt (Typ: Class Library), in der 
ich eine Klasse definiere, die das intern alles verwaltet 
(Konvertierungen und DLL-Funktionsaufrufe). Dieses Projekt kann man dann 
einfach in sein "Hauptprojekt" einfügen. Das Kommunikationsprojekt als 
Resource hinzufügen und im Hauptprojekt den namespace einfügen, und 
schon kannst du eine Instanz der Klasse erstellen und sie ohne weiteres 
nützen. Es ist wirklich ganz einfach. Bei der "HID Class.dll" musst du 
aufpassen, dass du dann ins .net Framework 2.0 kompilierst, da diese 
Library zu neueren/späteren frameworks nicht kompatibel ist.

Also ich habe die Lösung auch mit VisualStudio 2010 C# realisiert und es 
gab debei keinerlei Probleme.

Wenn du Hilfe brauchst oder weitere Denkanstöße, schreib einfach hier 
was du braucht, oder schick mir privat ne Mail.

E-Mail: poge@gmx.net

glg
Stefan

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.