Was mache ich falsch!
ich versuche in das Controlregister des Parallelports zu schreiben. Aber irgendwas mache ich falsch. Hier ist Code:
;---------------Deklaration der Variabeln ---------------------------------------
PortNumD.l = $378 ; PortNummer des Datenregisters
PortNumS.l = $379 ; PortNummer des Statusregisters
PortNumC.l = $37A ; PortNummer des Controlregisters
Samples = 0
j = 1
;----------------------------------check library io.dll -------------------------
LibOpen.l = OpenLibrary(1,"io.dll")
If LibOpen = 0
End
EndIf
;---------------------------------open function io.dll--------------------------
CallFunction(1,"PortOut", PortNumC,%0000) ; write to port 37ah
Text$ = InputRequester("Number of samples!", "Integerzahl", "")
Samples =Val(Text$)
Repeat
CallFunction(1,"PortOut", PortNumC,%0000) ; write 0 to port
37ah "Strobe = 0"
Ergebnis.b= CallFunction(1,"PortIn", PortNumC)
INC j
Until j >= Samples
Wenn ich nun %0001 in das Register oder aber auch %0011 schreibe und anschließend den reingeschriebenen Wert wieder auslese, steht immer 3 drin. Ich weiß, dass die Bits des Controlregisters teilweise invertiert sind.
Hier sind die Infos zum Port: http://members.tripod.com/~Malzev/radiodoc/printer.htm
Was mache ich denn falsch?
Ich benutze die io.dll unter folgendem Link: http://www.geekhideout.com/iodll.shtml
Ausgabe in Controlregister Parallelport
-
Martin66119
- Beiträge: 282
- Registriert: 03.01.2005 11:36
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Im Controllregister (Steuerregister) sind die Bits 0,1,3 invertiert.
Also wenn diese Bits gesetzt sind, wäre das der Wert 1+2+8=11.
Diese mußt du mit Deinem Integwert durch XOR (!) umkehren.
Das müßte dann so aussehen:
Ausgabe:
Einlesen:
MfG Falko
Also wenn diese Bits gesetzt sind, wäre das der Wert 1+2+8=11.
Diese mußt du mit Deinem Integwert durch XOR (!) umkehren.
Das müßte dann so aussehen:
Ausgabe:
Code: Alles auswählen
CallFunction(1,"PortOut", PortNumC,%0000 ! 11) ; write 0 to port Code: Alles auswählen
Ergebnis.b= CallFunction(1,"PortIn", PortNumC ! 11) & 15-
Martin66119
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Unklar
Ja, dass die Bits 1, 3 invertiert sind weiß ich. Folgendes passiert aber wenn ich in das Register schreibe.
Schreibe lesen
0000 0
0011 3
0111 7
0110 7
Das kann ich nicht verstehen!
Schreibe lesen
0000 0
0011 3
0111 7
0110 7
Das kann ich nicht verstehen!
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
