HID, PIC und Visual Studio 2010 - C#

Gast #2191609
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
Gast #2191616
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. ;)
#2191773
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)
Gast #2210224
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.
#2213249
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren