Hi, ich bin auf der suche wie man unter Windows auf einen Pin zugegriffen werden kann. Im Anhang ist der Pin den ich über ein Programmcode oder Bat/Com Abfragen möchte. Kann mir hierfür jemand behilflich sein?
Ohne einen passenden Devicetreiber kannst Du unter ernstgemeinten Windows-Versionen gar nicht mit diesem Port kommunizieren. Sofern der Port tatsächlich in den I/O-Adressraum gemappt ist (was in Anbetracht der merkwürdigen Schreibweise der Adresse ich nicht als zu 100% gegeben ansehen würde), lässt er sich auch mit Frickel-Devicetreibern à la giveio.sys oder inpout.dll abfragen. Mit was für einer Art von Hardware hast Du es da zu tun?
Das ist ein Alix 3d3 Board auf dem momentan Windows läuft. Ich möchte an dem Pin z.B. eine Taste anschließen und unter Windows abfragen. Unter Linux wär das recht einfach. Aber es ist hier nur Windows verfügbar.
Was denn für ein Windows? Und wie is denn der GPIO angeschlossen? Da muss ja noch eine Art Controller dran sein. Gibts denn da keinen Treiber dafür? Wenn schon Windows auf dem Ding läuft, müsste es ja auch Treiber für die Komponenten geben.
Uwe schrieb: > Das ist ein Alix 3d3 Board auf dem momentan Windows läuft. Wenn das Windows ein Frickel-Windows* ist (was in Anbetracht der knappen Speicherausstattung des Alix nicht auszuschließen ist), musst Du nur den _inp()-Befehl Deines C-Compilers nutzen. Sollte es ein ernstgemeintes Windows sein, musst Du --wie ich bereits schrieb-- die Bastellösungen giveio.sys** (und den _inp()-Befehl Deines C-Compilers) oder inpout32.dll*** verwenden. *) Windows 95 und seine Aufgüsse, also 98-Me **) http://www.mikrocontroller.net/articles/Ports_benutzen_%28Windows%29 ***) http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html
Die Port Adresse vom Alix sieht ganz anders aus als bei den Inpout32.dll Beispielen. Sind bei Hex Werte, aber Standart ist doch die Schreibweise: 0x378H. Werde es mal probieren aber ich bezweifel es jetzt schon. Auf dem Alix läuft Windows XP Embedded.
Uwe schrieb: > Sind bei Hex Werte, aber Standart ist doch die Schreibweise: > 0x378H. Nein, die hexadezimale Standar_d_schreibweise in Sprachen mit C-artiger Syntax ist 0x378. Ohne "H". Das "061b0h" aus Deinem Beispiel ist irritierend, weil es mit 0 anfängt (was in Sprachen mit C-artiger Syntax eine oktale Notation impliziert), aber eindeutig hexadezimal zu sein scheint, wohingegen eine fünfstellige hexadezimale I/O-Adresse erst recht unerwartet ist. Versuch's mal mit 0x61b0 Übrigens hat der Standard nichts mit der Art des Stehens zu tun. [Nachtrag] Wenn man das Alix-Manual genauer durchliest, fällt hier ein Problem ins Auge:
1 | The CS5536 GPIO ports are programmed by 32 bit atomic writes. This |
2 | avoids the need for read / modify / write operations and the locking |
3 | issues they entail. For example, to turn off LED1 (high), write |
4 | 0000’0040h to port 06100h. To turn on LED1 (low), write 0040’0000h. |
5 | Multiple port bits can be changed at the same time. Again, your code |
6 | must use 32 bit I/O access ! With the current Award BIOS, additional |
7 | port initialisation will be required. |
Du musst also einerseits zwingend 32-Bit-I/O-Operationen durchführen, und andererseits additional port initialisation betreiben, wie auch immer die aussehen mag. Ein paar DOS-Assemblerbeispiele gibt es hier: www.pcengines.ch/file/alixllc.zip Du wirst "nur" herausfinden müssen, wie das in die von Dir gewünschte Programmiersprache zu übertragen ist -- und ob die inpout32.dll die erforderlichen 32-Bit-I/O-Zugriffe unterstützt.
Danke dir für die Infos hast mir schon mal die Augen geöffnet :-) Die Assemblerbeispiele hatte ich auch gesehen, denke mir ich muss diese als Grundlage nähmen. Werde auch mal den Support von Alix anschreiben, die sind Richtig gut und freundlich, vielleicht können die mir ein Beispiel für diesen Port mit ihren Assemblerbeispiele zusenden. Dank dir erstmal
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.