| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| Hermann 
 
 
 Anmeldungsdatum: 28.04.2005
 Beiträge: 3
 Wohnort: Dielheim
 
 | 
			
				|  Verfasst am: 28.04.2005, 09:02    Titel: Ein-/Ausgabe über Parallelport in FreeBasic |   |  
				| 
 |  
				| Ich suche die Ersatzbefehle für die Q-Basic-Befehle "OUT 888," und "INP (889)". Zumindest funktionieren sie nicht bei mir. Kann mir jemand einen Tip geben? |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Sebastian Administrator
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 5969
 Wohnort: Deutschland
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Kai Bareis 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 545
 Wohnort: Baden Würtemberg
 
 | 
			
				|  Verfasst am: 28.04.2005, 16:43    Titel: |   |  
				| 
 |  
				| http://www.logix4u.net/inpout32.htm _________________
 MfG Kai Bareis
 Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Dusky_Joe 
 
  
 Anmeldungsdatum: 07.01.2005
 Beiträge: 1007
 Wohnort: Regensburg/Oberpfalz
 
 | 
			
				|  Verfasst am: 28.04.2005, 17:21    Titel: |   |  
				| 
 |  
				| Bleibt nur noch zu sagen: 
 
  	  | freeBASIC Befehlsreferenz hat Folgendes geschrieben: |  	  | INP
 Syntax: INP &H3C9
 Typ: Funktion
 Kathegorie: Gfx
 
 Emuliert den VGA-Port.
 Diese Funktion emuliert den INP-Zugriff auf den VGA-Port. Nur der Port &H3C9 funktioniert wirklich; alle anderen Ports liefern 0 zurück.
 Im Normalfall benötigen Sie diese Funktion nicht; benutzen Sie stattdessen PALETTE.
 
 Siehe also PALETTE, OUT, WAIT, SCREEN (Grafik).
 
 Unterschiede (zu QBASIC):
 INP wird nur noch dazu verwendet, um die PALLETTE-Einträge zu lesen. Er emuliert einen Zugriff auf den VGA-Port (&H3C9). Dieser Port ist der einzige, auf den Sie zugreifen können. INP wurde nur beibehalten, um die Kompatibilität zu QBASIC-Programmen zu bewahren, die INP zur Palette- Manipulation benutzten.
 Ein Zugriff auf jeden anderen Port wird daher 0 zurückgeben.
 
 Grund: Ein direkter Zugriff auf die I/O-Ports ist nicht mehr möglich.
 
 
 OUT
 Syntax: OUT Port, Wert AS BYTE
 Typ: Anweisung
 Kathegorie: Gfx
 
 Emuliert den VGA-Grafik-Port.
 
 OUT wird verwendet, um die Einträge der VGA-Pallette zu bearbeiten. Die einzigen funktionierenden Ports sind &H3C7, &H3C8 und &H3C9.
 Sie werden diesen Befehl normalerweise nicht benötigen; zur Farbmanipulation dient der Befehl PALETTE.
 Siehe auch: PALETTE, INP, WAIT.
 
 Unterschiede (zu QBASIC):
 OUT ist auf die Emulation des VGA-Ports begrenzt; nur die Ports &H3C7, &H3C8 und &H3C9 funktionieren.
 Der Versuch, auf eine andere Adresse zu schreiben, hat keine Funktion
 
 Grund: Ein direkter Zugriff auf die I/O-Ports ist nicht mehr möglich.
 
 
 [/b]WAIT[/b]
 Syntax: WAIT Port, AND_Ausdruck[, XOR_Ausdruck]
 Typ: Anweisung
 Kathegorie: Gfx
 
 Anweisung zur Emulation des Wartens auf die Antwort eines DOS-Ports.
 WAIT wurde aus Kompatibiltätsgründen beibehalten; es wird nicht empfohlen WAIT zu verwenden.
 
 'Port' - die Nummer des DOS-Ports, auf den gewartet werden soll.
 
 WAIT liest einen Wert vom Port, und verknüpft ihn mit über ein loigisches AND mit dem 'AND_Ausdruck'. Wenn das Ergebnis ungleich 0 ist, wird die Programmausführung fortgesetzt.
 
 WAIT liest einen Wert vom Port, und verknüpft ihn mit über ein loigisches XOR mit dem 'XOR_Ausdruck', bevor es an den AND_Ausdruck übergeben wird. Wenn dieses Argument ausgelassen wird, nimmt freeBASIC 0 an.
 
 WAIT funktioniert nur mit dem Port &H3DA (warten auf vertical sync.). Sie sollten WAIT nur so einsetzen:
 WAIT &h3DA, 8
 
 Jede andere Kompination von Port, AND_Ausdruck und XOR_Ausdruck wird keine Auswirkung haben.
 
 Beispiel:
 Siehe SCREENSET.
 Siehe auch: INP, OUT.
 
 Unterschiede (Zu QBASIC):
 WAIT ist lediglich eine Emulation der QB-Wait-Anweisung am Port &H3DA. Auf andere Ports kann nicht zugegriffen werden, da viele andere Plattformen nicht direkt auf die Ports zugreifen können.
 
 | 
 
 
 Have a nice day
 Ciao
 _________________
 fully biological degradable
 
 Once, the big wave arrives, you've got two ways, you can go:
 Either, you ride it, or you don't do.
 But, if you don't ride, you'll never know wether you'd have gone wet.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Hermann 
 
 
 Anmeldungsdatum: 28.04.2005
 Beiträge: 3
 Wohnort: Dielheim
 
 | 
			
				|  Verfasst am: 28.04.2005, 19:53    Titel: |   |  
				| 
 |  
				| Danke für die Informationen. Leider kann ich dann FreeBasic nicht verwenden.
 Mein Sohn muss in der Schule Q-Basic-Programme schreiben und an einem selbstgebauten Interface mit 8 Ausgängen und 4 Eingängen vom Parallelport testen.
 Gruß Hermann
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Sebastian Administrator
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 5969
 Wohnort: Deutschland
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Hermann 
 
 
 Anmeldungsdatum: 28.04.2005
 Beiträge: 3
 Wohnort: Dielheim
 
 | 
			
				|  Verfasst am: 29.04.2005, 07:27    Titel: |   |  
				| 
 |  
				| Hallo Sebastian, 
 leider kenn ich mich mit einbinden von DLL's nicht aus. Im Programmieren kenn ich mich zumindest soweit aus, dass ich noch meinem Sohn in der Schule noch helfen kann. Wenn Du mir eine Tip geben kannst, wie ich die parallele Schnittstelle ansprechen kann wäre ich Dir dankbar. Wie kann ich z.B. die Q-Basic-Befehle:
 OUT 888, 2^x
 oder
 a=INP(889)
 in FreeBasic realisieren.
 Meines Wissens müssen DLL's vorher am Programmanfang eingebunden werden?
 Tausend Dank im voraus
 Gruß
 Hermann
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Mr_T aka FtFanmaster
 
  
 Anmeldungsdatum: 26.12.2004
 Beiträge: 103
 Wohnort: Speyer
 
 | 
			
				|  Verfasst am: 04.05.2005, 19:35    Titel: |   |  
				| 
 |  
				| Hallo. Da ich auch andauernd auf die Ports des PC´s zugreifen muss, wäre eine "DLL und Include Anleitung" ziemlich angebracht. Zumal meine Messaufgaben (ich arbeite mit Elektronik) immer mehr Richtung PC wandern und QuickBasic langsam aber sicher verdrängt wird (oder nicht...wer weiß?).
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| volta 
 
 
 Anmeldungsdatum: 04.05.2005
 Beiträge: 1876
 Wohnort: D59192
 
 | 
			
				|  Verfasst am: 04.05.2005, 22:18    Titel: |   |  
				| 
 |  
				| Hallo FtFanmaster, 
 schau dir mal diesen Beitrag an:
 
 http://www.vbarchiv.net/workshop/workshop76.php
 
 Dort ist auch das Einbinden von DLL's, hier die inpout32.dll, erklärt.
 Sollte in freeBasic ebenso gehen.
 
 Gruß
 Volta
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Mr_T aka FtFanmaster
 
  
 Anmeldungsdatum: 26.12.2004
 Beiträge: 103
 Wohnort: Speyer
 
 | 
			
				|  Verfasst am: 05.05.2005, 07:35    Titel: |   |  
				| 
 |  
				| Hallo. Nein, geht leider (auch mit diversen Änderungen des Codes) nicht.
 
 Mfg
 FtFanmaster
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| volta 
 
 
 Anmeldungsdatum: 04.05.2005
 Beiträge: 1876
 Wohnort: D59192
 
 | 
			
				|  Verfasst am: 05.05.2005, 16:35    Titel: |   |  
				| 
 |  
				| Hallo, stimmt, tut mir leid, das Einbinden von externen DLL's in FreeBasic hatte ich mir zu einfach vorgestellt.
 Neuer Versuch;
 
  	  | Zitat: |  	  | ..wäre eine "DLL und Include Anleitung" ziemlich angebracht. | 
 bei http://sourceforge.net/forum/forum.php?thread_id=1275700&forum_id=417224
 habe ich folgendes gefunden:
 
  	  | Zitat: |  	  | By: v1ctor - v1ctor RE: Import lib for DLL
 2005-04-30 18:10
 Hi, it can be done as follow:
 
 pexports.exe -o [add the dll path here]\zlibwapi.dll >zlibwapi.def
 
 dlltool.exe -d zlibwapi.def -D zlibwapi.dll -l libzlibwapi.dll.a
 
 pexports can be found here: http://www.emmestech.com/software/cygwin/pexports-0.43/download_pexports.html
 
 The dlltool is under bin\win32 in FreeBASIC's Win32 package.
 | 
 pexports gesaugt, eine passende Batch erstelt:
 
  	  | Code: |  	  | pexports.exe -o C:\Freebasic\inpout32.dll >inpout32.def C:\Freebasic\bin\win32\dlltool.exe -d C:\Freebasic\inpout32.def -D C:\Freebasic\inpout32.dll -l C:\Freebasic\libinpout32.dll.a
 | 
 (2 Zeilen, letzte Zeile ist etwas lang)
 So bin ich zu einer "inpout32.def" und "libinpout32.dll.a" gekommen.
 Ob das jetzt funktioniert konnte ich noch nicht testen.
 Es gibt wohl unterschiedliche DLL's, dynamisch oder statisch (ich bin da Laie und kein Experte).
 Wozu die inpout.dll gehört und ob sie sich so einbinden lässt???
 Gruß
 Volta
 Diese Anleitung stellte sich als falsch heraus, siehe nachfolgende Beiträge!
 
 Zuletzt bearbeitet von volta am 15.06.2005, 22:06, insgesamt einmal bearbeitet
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Mr_T aka FtFanmaster
 
  
 Anmeldungsdatum: 26.12.2004
 Beiträge: 103
 Wohnort: Speyer
 
 | 
			
				|  Verfasst am: 05.05.2005, 18:16    Titel: |   |  
				| 
 |  
				| Vielen Dank. Endlich mal ne funktionierende Antwort. 
 EDIT: Zu früh gefreut:
 Fehlermeldung: "C:\Freebasic\fbidetmp.bas Duplicatet definition on line: 4"
 
 Programm:
 declare function Inp LIB "inpout32" alias "Inp32" (byval bt as integer) as integer
 declare sub Out LIB "inpout32" alias "Out32" (byval pt as integer, byval  bt as integer)
 '
 DO:
 FOR b = 0 TO 255
 OUT32 888, b
 IF INKEY$ <> "" THEN END
 NEXT b
 LOOP
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| volta 
 
 
 Anmeldungsdatum: 04.05.2005
 Beiträge: 1876
 Wohnort: D59192
 
 | 
			
				|  Verfasst am: 07.05.2005, 16:36    Titel: Ports lesen und schreiben in FreeBasic (ASM) |   |  
				| 
 |  
				| Hallo, nachdem es mir bisher nicht gelang die inpout32.dll in FreeBasic einzubinden (ich werkel noch daran!!), habe ich eine andere Art ausprobiert den LPT-Port anzusprechen, über ASM-Code.
 
 
  Natürlich wird das in NT, W2k und XP nicht funktionieren!!   
 Hier ein Beispiel,
 zum testen habe ich ein altes QB Programm angepasst, welches über den eingebauten Leisesprecher einen Ton erschallen läßt (unter 98 und ME lief es).
 
 
  	  | Code: |  	  | 'Test ASM in InPort, OutPort DefInt a-z
 Option Explicit
 
 Dim Old As UByte, LSB As UByte, MSB As UByte, PPort As UByte
 Dim herz As Short
 Dim Divisor As Integer
 Dim Zeit As Double, sec As Double
 
 Public Function InPort ( ByVal Port As Integer) As Integer
 Dim ERG As Integer
 ASM
 xor  eax, eax
 mov  edx, [Port]
 in   al, dx
 mov  [ERG], eax
 End ASM
 InPort = ERG
 END FUNCTION
 
 Public Sub OutPort ( ByVal Port As Integer, ByVal Wert As Integer)
 ASM
 mov  eax, [Wert]
 mov  edx, [Port]
 out  dx, al
 End ASM
 End Sub
 
 sec = 2 'Tondauer
 herz = 440 'Frequenz
 Divisor = 1193180 / herz
 LSB = Divisor MOD 256
 MSB = Divisor \ 256
 
 Old = InPort(&H61)        '8255 PPI chip. Save the original.
 
 OutPort (&H43, 182)       '8253 Timer chip. 10110110b Channel 2, mode 3
 PPort = InPort(&H61)      'get the 8255 port contents.
 OutPort (&H61, PPort OR 3)'enable the speaker and use channel 2.
 
 OutPort (&H42, LSB)       'Output Frequency Lo and Hi Byte
 OutPort (&H42, MSB)
 
 Zeit = TIMER              'Wait until Zeit elapsed
 While Timer < Zeit + sec
 Wend
 OutPort (&H61, Old)       'turn it off.
 | 
 
 Ich hoffe es hilft auch Anderen!
 Gruß
 Volta
 _________________
 Warnung an Choleriker:
 Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
 Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Mr_T aka FtFanmaster
 
  
 Anmeldungsdatum: 26.12.2004
 Beiträge: 103
 Wohnort: Speyer
 
 | 
			
				|  Verfasst am: 07.05.2005, 17:32    Titel: |   |  
				| 
 |  
				| Vielen Dank! Es funktioniert bestens. Ich kann alle Ports ansprechen. Super. Unter XP werde ich es trotzdem testen (was solls). Den Bericht stelle ich eventuell hier rein. 
 Gruß,
 FtFanmaster
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| volta 
 
 
 Anmeldungsdatum: 04.05.2005
 Beiträge: 1876
 Wohnort: D59192
 
 | 
			
				|  Verfasst am: 07.05.2005, 20:36    Titel: es funktioniert eine externe DLL einzubinden! |   |  
				| 
 |  
				| Hallo FtFanmaster, es funktioniert doch mit der obigen Beschreibung die inpout32.dll zu nutzen.
 Versuch mal folgende Declaration in deinem Prog:
 
 
  	  | Code: |  	  | '$inclib: 'inpout32' declare function InPort cdecl alias "Inp32" (byval PortAddress as integer) as integer
 declare sub OutPort cdecl alias "Out32" (byval PortAddress as integer, byval data as integer)
 | 
 
 und ändere im Prog "Out32" zu "OutPort" (bei "declare sub Out32 cdecl alias "Out32" " bekomme ich auch eine Fehlermeldung???).
 Im gleichen Verzeichnis müssen die Dateien "inpout32.dll" und "libinpout32.dll.a" sein!
 Bei mir hat es so geklappt
   Gruß
 Volta
 Diese Anleitung stellte sich als falsch heraus, siehe nachfolgende Beiträge!
 _________________
 Warnung an Choleriker:
 Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
 Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
 
 Zuletzt bearbeitet von volta am 15.06.2005, 22:07, insgesamt einmal bearbeitet
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Mecki Igel
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 985
 Wohnort: Niederbayern
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Kai Bareis 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 545
 Wohnort: Baden Würtemberg
 
 | 
			
				|  Verfasst am: 05.06.2005, 17:59    Titel: |   |  
				| 
 |  
				| So ich erweke diesen Thread nochmal zum Leben. 
 Also nun wollte ich mal mit ein bisschen mit FB experimentieren also unter anderem meine LCD-Software umschreiben. Dazu hab ich mir das von Volta durchgelesen mit der inpout32.dll die ja unter Windows 2000 funktionieren sollte blos tut es leider nicht. Hat mir also eventuell einer ein Funktionierendes Programm womit ist unter win 2K arbeiten kann wen möglich mit den nötigen Dateien. Damit ich dann meine Programme entsprechend umschreiben kann.
 _________________
 MfG Kai Bareis
 Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| volta 
 
 
 Anmeldungsdatum: 04.05.2005
 Beiträge: 1876
 Wohnort: D59192
 
 | 
			
				|  Verfasst am: 05.06.2005, 19:23    Titel: gerade nocheinmal unter W2k, und XP getestet |   |  
				| 
 |  
				| Hallo, ich habe das nachfolgende Prog gerade nocheinmal unter W2k, und XP getestet. Auf beiden Winversionen lief es.
 Da ich keine Möglichkeit hatte am Printerport zu prüfen, habe ich nur die In/Out Befehle am Lautsprecher testen können. Ohne die inpout32.dll kann man diesen Port sonst auch nicht ansprechen.
 
  	  | Code: |  	  | Option Explicit '$inclib: 'inpout32'
 declare function InPort cdecl alias "Inp32" (byval PortAddress as integer) as integer
 declare sub OutPort cdecl alias "Out32" (byval PortAddress as integer, byval data as integer)
 
 Dim Old As UByte, LSB As UByte, MSB As UByte, PPort As UByte
 Dim herz As Short
 Dim Divisor As Integer
 Dim Zeit As Double, sec As Double
 
 sec = 2 'Tondauer
 herz = 440 'Frequenz
 Divisor = 1193180 / herz
 LSB = Divisor MOD 256
 MSB = Divisor \ 256
 
 Old = InPort(&H61)        '8255 PPI chip. Save the original.
 
 OutPort (&H43, 182)       '8253 Timer chip. 10110110b Channel 2, mode 3
 PPort = InPort(&H61)      'get the 8255 port contents.
 OutPort (&H61, PPort OR 3)'enable the speaker and use channel 2.
 
 OutPort (&H42, LSB)       'Output Frequency Lo and Hi Byte
 OutPort (&H42, MSB)
 
 Zeit = TIMER              'Wait until Zeit elapsed
 While Timer < Zeit + sec
 Wend
 OutPort (&H61, Old)       'turn it off.
 
 sleep
 | 
 Die selbst erstellte libinpout32.dll.a und die inpout32.dll im gleichen Verzeichnis.
 Bei beiden Winversionen war ich als Admin angemeldet!
 
 Bekommst du irgend eine Fehlermeldung? oder nur keine Reaktion am LPT?
 
 Gruß
 Volta
 Diese Anleitung stellte sich als falsch heraus, siehe nachfolgende Beiträge!
 _________________
 Warnung an Choleriker:
 Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
 Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
 
 Zuletzt bearbeitet von volta am 15.06.2005, 22:07, insgesamt einmal bearbeitet
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Kai Bareis 
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 545
 Wohnort: Baden Würtemberg
 
 | 
			
				|  Verfasst am: 05.06.2005, 19:33    Titel: |   |  
				| 
 |  
				| Also habst grad getestet wen ich mich normal als Benutzer anmelde scheint es nicht zu funkionieren aber als Admin klappt es hervorragent. Aber blöd ist das schon das die inpout32 nicht als Benutzer funktioniert.
 
 Wen ich die Inpout32.dll in das VB von Word einbinde geht es auch als Benutzer
 _________________
 MfG Kai Bareis
 Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| volta 
 
 
 Anmeldungsdatum: 04.05.2005
 Beiträge: 1876
 Wohnort: D59192
 
 | 
			
				|  Verfasst am: 05.06.2005, 20:02    Titel: |   |  
				| 
 |  
				| Es sollte, nach den Codern der inpout32.dll, auch als User gehen, aber wie? Versucht habe ich schon mal die inpout32.dll ins Windowsverzeichnis zu setzen usw. aber alles ohne Erfolg.
 Warum das in VBA unter Word oder Excel geht, ist mir ein Rätsel?
 Gruß
 Volta
 _________________
 Warnung an Choleriker:
 Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
 Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		|  |