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
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. ;)
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)
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.
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.
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