Guten Tag Zusammen, Mein Problem: Ich habe einen One-Button Device mit Arduino gebastelt. Diesen kann ich mit einem USB Kabel zum COM3 meines Rechners verbinden. Die Verbindung funktioniert einwandfrei und ich bekomme je nach Taster-State den gewünschten Wert in meinem Programm. Um diese Button Events in meinem C# Programm zu erkennen habe ich eine API geschrieben die als Treiber dienen soll. Hier diese API in C# Code:
1 | using System; |
2 | using System.Collections.Generic; |
3 | using System.Linq; |
4 | using System.Text; |
5 | using System.Threading.Tasks; |
6 | using System.Threading; |
7 | using System.IO.Ports; |
8 | |
9 | namespace ButtonBoyDriver |
10 | {
|
11 | public static class ButtonBoy |
12 | {
|
13 | public static event ButtonPressHandler ButtonEvent; |
14 | public delegate void ButtonPressHandler(Boolean isPressed); |
15 | private static SerialPort _serialPort; |
16 | |
17 | static ButtonBoy() |
18 | {
|
19 | _serialPort = new SerialPort("COM3", 9600); |
20 | _serialPort.Open(); |
21 | Thread thread = new Thread(new ThreadStart(CheckButton)); |
22 | thread.Start(); |
23 | }
|
24 | |
25 | private static void CheckButton() |
26 | {
|
27 | int pressed = 0; |
28 | |
29 | while (_serialPort.IsOpen) |
30 | {
|
31 | pressed = _serialPort.ReadByte(); |
32 | if (pressed == 1) |
33 | {
|
34 | ButtonEvent(true); |
35 | }
|
36 | else
|
37 | ButtonEvent(false); |
38 | }
|
39 | }
|
40 | }
|
41 | }
|
Ich erreiche eigentlich schon viel mit diesem "Treiber". Ich muss halt nur in jedem Programm in dem ich meinen Device nutzen will diese ButtonBoyDriver.dll einbinden. Jedoch bin ich nicht ganz zufrieden. Denn soweit ich mich entsinne bindet man bei z.b. einer Spieleprogrammierung ja nicht etliche Treiber Assemblies der möglichen Anbieter ein. Nein die sammeln sich alle irgendwie in einer generischen Treiber Assembly oder sowas. Und hier beginnt meine Fragerei. Ich finde leider noch nicht den Weg meinen Treiber über das ganze System zur Verfügung zu stellen. Auf Kernel oder OS Ebene oder wo auch immer der hin muss. Google bewirft mich mit Windows Developer Kit und Windows Driver Frameworks und so weiter. Leider bekomme ich nicht die konkrete Information wie ich denn jetzt mit diesen oben genannten Kits und Frameworks einfach mal einen Treiber für meine COM3 Schnittstelle (als Beispiel) schreibe. Auch Videos erzählen irgendwie nur was das ist und was das macht. Ich finde auch keine Framework Documentation wo ich konkret Klassen sehe die ich nutzen kann und welche Library ich dafür einbinden muss. Darum die Frage an Euch. Wie kann ich einen ganz simplen Treiber schreiben der für das OS (Oder wo auch immer ein Hardware Treiber landen muss) bereitsteht. mfg Charlie Danke für jegliche Hilfe im Voraus !