le Port Parallele ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

le Port Parallele ?

Message par Backup »

quelqu'un connais le truc pour ecrire et lire le port parallele ?? 8O
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je voudrai attaquer directement l'entre et la sortie de ce port pour gerer un scanner
(le primax4800) , dont le driver est dispo pour nt et 98 et parfaitement incompatible avec XP !!


:D

il faudrait l'equivalent de "out(port)" et "imp(port)" pour le pure , pour les bidouiles ça manque !!!!

ps !: la librairie MVcom ne gere que le serial je crois ! :D
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

nt , 2000 et xp bloque les accés direct au matériel

il faut passer par les api

j'ai un vieux scanner plustek optic pro 4800 p parallèle qui marche plus avec 2000 pour la m^me raison, ton code m'interesse...

je pourrai te faire des test

pat
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'ai peut etre trouvé la soluce !!

il existe un dll qui s'apelle "IO.DLL" chercher sur google c'est facile !!
dispo ici : http://perso.easynet.fr/~chrisg/vbdll.htm

puis en pure :

Code : Tout sélectionner

;Further to my reply under messages "PC based Measurements"
;here is a sample of code to write to the P.Port using 'io.dll' and Purebasic.
 PortNum.l = $378 ; LPT1

;- (check library file open)
 LibOpen.l = OpenLibrary(1,"io.dll")
 If LibOpen = 0
      End
 EndIf

 CallFunction(1,"PortOut", PortNum,$080) ; write 80h to port 378h
 End 
cette dll permetrai d'attaquer directement tout les port du pc !! :D


principe d'utilisation :

Code : Tout sélectionner

Je rapelle que cette DLL contient les fonctions et procédure suivantes :

Procedure OUT(Adresse du port;Valeur a écrire sur ce port)
Function INP(Adresse du port que l'on désire lire) qui renvoie l'octet présent sur le port.

je vais essayer dans mon coin , mais tennez nous au courrant de vos essai eventuel ! :D


reedit : ARG ! le message windows xp est clair ! , y veux pas qu'on s'amuse avec une dll qui attaques directos les ports ! :(
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

lorsque j'essaye le code windows renvoie le message d'erreur

la dll io.dll n'est une image windows valide...

apparement sur le site il s'agit d'un exemple vb sous windows 95

pat
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

merci y a plus qu'a essayer !! :D
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Il y a ausi Inpout32.dll sur cette page: http://www.logix4u.net/inpout32.htm

:)
Dernière modification par nico le dim. 14/nov./2004 13:25, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pour io.dll cité par patrick88 voici un petit programme pour vos test !!

Code : Tout sélectionner

   
   ; doc pour io.dll
; function Descriptions
; Please refer To the prototype For the particular language you are using.
; 
; PortOut
; Outputs a byte To the specified port.
; 
; PortWordOut
; Outputs a word (16-bits) To the specified port.
; 
; PortDWordOut
; Outputs a double word (32-bits) To the specified port.
; 
; PortIn
; Reads a byte from the specified port.
; 
; PortWordIn
; Reads a word (16-bits) from the specified port.
; 
; PortDWordIn
; Reads a double word (32-bits) from the specified port.
; 
; SetPortBit
; Sets the bit of the specified port.
; 
; ClrPortBit
; Clears the bit of the specified port.
; 
; NotPortBit
; Nots (inverts) the bit of the specified port.
; 
; GetPortBit
; Returns the State of the specified bit.
; 
; RightPortShift
; Shifts the specified port To the right. the LSB is returned, And the Value passed becomes the MSB.
; 
; LeftPortShift
; Shifts the specified port To the left. the MSB is returned, And the Value passed becomes the LSB.
; 
; IsDriverInstalled
; Returns non-zero If io.dll is installed And functioning. the primary purpose of this function is To ensure that the kernel mode driver For NT/2000/XP has been installed And is accessible.



 PortNum.l = $378 ; LPT1 (port parallel )

 LibOpen.l = OpenLibrary(1,"io.dll")
 If LibOpen = 0
    End
 EndIf

 CallFunction(1,"PortOut", PortNum,$80) ; write 80h to port 378h
 Delay(1000)

 End 
@Nico Merci ! :D
tu peux rajouter un espace entre tes ":" et "http:" ?? Merci d'avance
cela crera le lien ! :D
Lui
Messages : 3
Inscription : jeu. 25/oct./2007 12:44

Port Parallele

Message par Lui »

Dobro a écrit :pour io.dll cité par patrick88 voici un petit programme pour vos test !!
J'ai absolument besoin de lire et écrire sur un port parallele.
Depuis 2004, peut-être quelqu'un a trouvé une solution finale qui marche.

io.dll c'est bien, mais oü l'installer?

Quel est le code exact et complet pour les deux fonctionnalités. I & O?
S.V.P. En termes de débutants!

Si une solution complète est disponible, il y tout un monde qui s'ouvre à Pure Basic, le SEUL langage de programmation que je désire utiliser, par ses grandes qualités. Cependant, que c'est frustrant de se voir limité dans les applications, seulement à cause d'une petite limitation qui bloque finalement tout ce que je pourrais accomplir!
Pour moi, PB s'effondre si cette limitation n'est pas débloquée.

Merci pour l'aide!
Yves
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Port Parallele

Message par Backup »

Lui a écrit : io.dll c'est bien, mais oü l'installer?

Quel est le code exact et complet pour les deux fonctionnalités. I & O?
S.V.P. En termes de débutants!

ben c'est une DLL elle doit se trouver a coter de ton prg (dans le meme repertoire)

sinon tu doit préciser le chemin ou se trouve ta dll dans le " OpenLibrary(1,"io.dll") "

autre emplacement possible "c:\windows\System32"
toute les Dll du system se trouve a cette emplacement :)

ensuite tu appel les fonctions entree/sortie comme l'exemple que j'ai donné


Code : Tout sélectionner

PortNum.l = $378 ; LPT1 (port parallel )

 LibOpen.l = OpenLibrary(1,"io.dll")
 If LibOpen = 0
    End
 EndIf

 CallFunction(1,"PortOut", PortNum,$80) ; write 80h to port 378h
 Delay(1000)

 End 

cette exemple , par l'intermédiaire de la fonction PortOut
va envoyer la valeur (octet) $80h au port parallèle ! :D
et attendre 1 seconde



pour lire un octet tu utilise PortIn sans argument

Code : Tout sélectionner

Resultat.b = CallFunction(1,"PortIn ")
Lui
Messages : 3
Inscription : jeu. 25/oct./2007 12:44

Port Parallele

Message par Lui »

Merci Michel,

voici ce que j'ai essayé:

Code : Tout sélectionner

OpenLib_ID.l=OpenLibrary(1,"io.dll")
OutPortNum=888
InPortNum=889

IsItOk=CallFunction(1,"IsDriverInstalled" )
MessageRequester("","Is it installed= "+Str(IsItOk))
;It returns  -1

If OpenLib_ID.l=0  
    MessageRequester("","Can't open")
Else
    MessageRequester("",Str(OpenLib_ID.l))
;It returns a valid ID
EndIf

For i= 1 To 10
CallFunction(1,"Port Out",OutPortNum,15)
Delay (100)
CallFunction(1,"Port Out",OutPortNum,0)
Delay (100)
Next i
;No output to the port
a=CallFunction(1,"Port In",InPortNum)
MessageRequester("","INP= "+Str(a))
;A 0 is returned
CloseLibrary(1)
End 
Le tout s'exécute sans code d'erreur, et semble fonctionner normalement du cöté software, mais le port physique ne répond pas.
Je ne sais plus quoi essayer.

Yves
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pourquoi tu ecris
Port Out
alors que c'est
PortOut
(sans espace !!!) :)
Lui
Messages : 3
Inscription : jeu. 25/oct./2007 12:44

Message par Lui »

Merci, Michel,
ça marche!
Sésame ouvre-toi! :D
Oh combien j'apprécie cette aide!

Yves
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Salut les gars, je n'avais pas vu ce post auparavant, donc désolé.

Il y a une DLL qui s'appelle WINIO. Le seul hic c'est qu'elle appartient à une entreprise donc c'est pas très légal. Je me suis dit que j'en ferai une un jour mais bon, il y a du boulot, ça ne se fait pas sans des connaissances très précises de XP, et sur ce point, je fais défaut. En attendant, si vous réussissez à vous la procurer, vous pourrez, en plus de de rentrer et de sortir des données sur les ports, déterminer le nombre de ports dispo, leur nature et leur adresse. En gros, vous faîtes une routine qui se charge de tout gérer pour qu'il n'y ait aucun problème de compatibilité et reconnaissance d'une bécane à l'autre.

ATTENTION A IO.DLL ! ! ! Elle est lente et contient une routine qui informe son créateur de votre localisation et de la fréquence d'utilisation sans votre accord.

Certains industriels vendent jusqu'à 300€ ce type de DLL.
Répondre