LPT Port auslesen

Gast #555095
Lesenswert?

Guten Tag !

Habe einen Temperatursensor mit dig. Ausgang an den LPT angeschlossen 
und würde gerne wissen wie ich die Temperatur auslesen kann. Der Ausgang 
ist ein: "Single-wire 11-bit digital serial signal output".

Ich arbeite mit VB 2005 und verwende die inpout32.dll.

Befehle: Inp und Out.

Was ich nicht recht verstehe ist wie ich diese Daten auslesen kann und 
wie das überhaupt funktioniert. Das ich den Inp Befehle brauche ist mir 
schon klar, aber der Rest eben nicht.

In dem µC & Elektronik Bereich hat man mir diesen Code in C gegeben mit 
dem ich nichts Anfangen kann. BTW: Der Output vom Sensor hängt an 
Ausgang 1, also PIN3 des LPT's.

a = inp(BASE);
if(a & (1 << BIT#)) {...} else {...}


Nur als Ergebnis kommt doch eine Zahl zwischen 0 - 255 oder nicht ?

Die Formel im Datenblatt ist folgende:
Temperature = (Digital Signal / 2047 * 70 - 10)°C

Dazu ist eine kleine Tabelle:

Temp(°C)              Temp(°F)             Digital Value
-------------------------------------------------------------
-10                    14                        0x000
0                      32                        0x124
25                     77                        0x3FF
60                    140                        0x7FF

Zum Beispiel ist ja 25 °C = Hex 3FF bzw. in dez. 1023, aber wie soll man 
in einem Zahelbereich von 0-255 die Zahl 1023 anzeigen lassen ?

Ich versteh dieses ganze Prinzip noch nicht und bitte um Erklärung.
Ich war schon in einem anderen Forum, aber dort sind nicht so viele User 
im Hardware Bereich aktiv.

Bedanke mich für jeden Hinweis.

x86
Gast #555125
Lesenswert?

> Der LPT hat auch 11 Bit ?

Hm?

> ist ein: "Single-wire 11-bit digital serial signal output".

> Nur als Ergebnis kommt doch eine Zahl zwischen 0 - 255 oder nicht ?

Nein. Bei 11 Bit kommt ein Wert im Bereich 0 bis 2048 raus.
#555126
Lesenswert?

> Wie muss ich das denn auslesen ? Ich steh da echt aufm schlauch...

ja schon (eigentlich gewaltig)

> Single-wire 11-bit digital serial signal output

Single wire = 1 Datenleitung = 1 Bit
11-bit = Sensorwert
serial signal output != parallel

Du kannst mit dem Parallelport 8 Datenleitungen gleichzeitig 
ein/auslesen (darum heißt er Parallelport)

Wenn du jetzt einen Sensor an nur eine Datenleitung anschließt, 
interessiert dich nur was an dieser anliegt. dies kann entweder 1 oder 0 
sein.

Im Prinzip* musst deshalb den Parallelport 11 mal hintereinander 
auslesen, so dass du auf deinen Sensorwert kommst. (

*: Ganz so einfach ist es natürlich nicht, da die Kommunikation nach den 
1-wire specs erfolgt. Hierzu gibts für den DS1820 ja ne Menge 
Beispielcode im Netz.
Gast #555133
Lesenswert?

Hallo Roland ! Vielen vielen dank ! Das hat mir schon sehr viel 
geholfen.

Das heißt ich muss den Wert von PIN3 auslesen und diesen speichern und 
diesen den anderen Werten dazu addieren oder wie ? Also ebenhalt 11 mal.

Könnt ihr mir da Source Code mäßig etwas weiter helfen ?

Danke
Gast #555249
Lesenswert?

>Das heißt ich muss den Wert von PIN3 auslesen und diesen speichern und
>diesen den anderen Werten dazu addieren oder wie ?

Du kannst den Wert von Pin 3 nicht auslesen sondern nur den Wert des 
gesamten Ports. In diesem Gesamtwert mußt du dann überprüfen, ob Pin 3 
gesetzt ist:

if((Gesamtwert & (1<<3))==(1<<3)) {...}  / Bit ist gesetzt

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