Forum: PC-Programmierung Port/Pin zugriff/abfrage unter Windows


von Uwe (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Uwe (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

von Uwe (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Uwe (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.