Surveillance du port parallèle

Surveillance du port parallèle - C#/.NET managed - Programmation

Marsh Posté le 17-11-2004 à 16:51:41    

Je suis entrain de développer une application avec un capteur relié au port parallèle du PC (pour info, c'est sur la broche 12 : gestion du papier)
Je cherche une Dll ou un composant en VB .Net permettant d'effectuer les requêtes sur le port parallèle.
 
Merci d'avance

Reply

Marsh Posté le 17-11-2004 à 16:51:41   

Reply

Marsh Posté le 17-11-2004 à 17:21:14    

http://www.lvr.com/parport.htm
http://www.thecodeproject.com/csha [...] iances.asp
Attention, utiliser un driver = être admin pour utiliser l'appli.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-11-2004 à 17:27:05    

Merci.
 
Je regarde et vous tiens au courant...

Reply

Marsh Posté le 17-11-2004 à 18:18:51    

J'ai téléchargé la Dll Inpout.Dll, mais je n'arrive pas à lire les broches de contrôle (paper, ack, busy, ...)

Reply

Marsh Posté le 17-11-2004 à 18:28:20    

c.a.d, c koi l'erreur ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-11-2004 à 18:31:02    

je n'arrive pas à appeler correctement la fonction...
il n'y a pas de message, mais juste que je ne sais pas comment lire une broche de controle spécifique
 
Merci d'avance pour toute aide apportée

Reply

Marsh Posté le 17-11-2004 à 18:34:24    

Tu fais comment ? (code)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-11-2004 à 18:43:56    

Les seules fonctions et procédures dont j'ai les prototypes sont les suivantes :
 
Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
 
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
 
donc je ne sais pas comment avoir les broches de controle...


Message édité par chris500 le 17-11-2004 à 18:57:06
Reply

Marsh Posté le 18-11-2004 à 10:30:25    

Help !

Reply

Marsh Posté le 18-11-2004 à 10:57:41    

Ben oui, c'est pour écrire sur les IO ports. T'as des exemples dans l'article :

Code :
  1. val=axHwinterface1.InPort(888);
  2. axHwinterface1.OutPort(888,(short)(val|2));


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-11-2004 à 10:57:41   

Reply

Marsh Posté le 18-11-2004 à 12:59:46    

Ecrire sur le port, ça va, c'est lire les broches de contrôles qui me pose problème (Paper out, Ack, ...)

Reply

Marsh Posté le 18-11-2004 à 14:05:20    

Citation :

12 Paper-Out In Status-5


Tu lis le port de status et test le bit 5...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-11-2004 à 14:23:18    

Bon, j'ai remis tout à plat, et quand je fait une simple fenêtre avec un bouton, telle que ça :
 
 
Public Class Form1
    Inherits System.Windows.Forms.Form
 
#Region " Code généré par le Concepteur Windows Form "
 
    Private Declare Function Inp32 Lib "inpout32.dll" (ByVal PortAddress As Integer) As Integer
    Private Declare Sub Out32 Lib "inpout32.dll" (ByVal PortAddress As Integer, ByVal Value As Integer)
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Valeur As Integer = 0
 
        Try
            Valeur = Inp32(888)
 
            'MessageBox.Show(CStr(Inp32(888)), "Valeur" )
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erreur" )
 
        End Try
 
    End Sub
End Class
 
=> je compile, la Dll inpout32.Dll est bien dans le répertoire bin avec le .Exe, mais j'ai l'erreur suivante :
"Un composant externe a levé une exception"
 
J'y comprends plus rien  :cry:

Reply

Marsh Posté le 18-11-2004 à 15:29:30    

L'exemple su site fonctionne ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-11-2004 à 15:52:10    

l'exemple du site est en C++
Moi je le veux en VB .Net et il ne marche pas :cry:

Reply

Marsh Posté le 18-11-2004 à 17:08:17    

HelloWorld a écrit :

L'exemple su site fonctionne ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-11-2004 à 17:34:27    

Je n'arrive pas à le faire fonctionner...

Reply

Marsh Posté le 18-11-2004 à 17:40:28    

C'est quoi l'erreur ? Es-tu administrateur ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-11-2004 à 23:05:32    

oui, je suis administrateur de la machine
Le message d'erreur est le suivant :
"Un composant externe a levé une exception"  

Reply

Marsh Posté le 18-11-2004 à 23:56:39    

Utilise un autre driver que inpout32. Y'en a une tartine sur le 1° lien donné.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 21-11-2004 à 09:26:11    

chris500 a écrit :

oui, je suis administrateur de la machine
Le message d'erreur est le suivant :
"Un composant externe a levé une exception"


 
laquelle ?

Reply

Marsh Posté le 21-11-2004 à 20:00:04    

Voici le message d'erreur ex.ToString
 
System.Runtime.InteropSerices.SEHException: Un composant externe a levé une exception.
 at MonProjet.Form1.Inp32(Int32 PortAddress)
 
Précision : MonProjet est le nom de mon projet...

Reply

Marsh Posté le 21-11-2004 à 21:58:02    

tu lui donnes quoi comme PortAddress ? C'est un entier valide ?
 
Edit : l'InnerException.Message de l'exception vaut quoi ?


Message édité par Tamahome le 21-11-2004 à 21:58:48

---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 22-11-2004 à 18:31:11    

le PortAddress est 888 (décimal, soit 378 en hexa), comme indiqué dans le source situé plus haut
 
Pour le InnerException, quand je mets le code
MessageBox.Show(ex.InnerException.Message, "Erreur" )
=> plantage :
"Une exception non gérée du type 'System.NullReferenceException' s'est produite dans MonProjet.exe
 
Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet."

Reply

Marsh Posté le 22-11-2004 à 19:27:22    

ouais ca veut dire que y'a pas l'innerexception de renseigné, dommage :o
 
Essayes "0x378" a la place de "888" mais je doute que ca passe mieux :o
 
Edit : verifie dans ton bios que l'adresse du port est ok qd meme :o


Message édité par Tamahome le 22-11-2004 à 19:27:53

---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 22-11-2004 à 21:54:08    

pas de changement avec l'hexadécimal...
dans le bios, le port et bien défini en 0x378 (standard habituel)
 
tu n'aurais pas un exemple de code VB .Net que tu aurais testé par hazard ?
 
Merci d'avance.

Reply

Marsh Posté le 23-11-2004 à 09:23:43    

ptet que faut trifouiller les options dans le bios (birectionnel, parité, etc...) Mais je pense pas, la on dirait plutot qu'il n'arrive pas a instancier un objet au sein de ton API... Donc je dirai plutot pbm de version de l'api avec ton framework (quelle verion ? 1.1 ?)


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 23-11-2004 à 10:08:36    

Il fait un dll import sur une dll non managée qui installe un driver...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 23-11-2004 à 14:43:05    

rhoo le vilain :o


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 23-11-2004 à 22:03:26    

HelloWorld a écrit :

Il fait un dll import sur une dll non managée qui installe un driver...


 
heeeuuuuu !
Je suis désolé de paraitre ignorant, mais je ne comprends pas !  :pt1cable: Disons que je suis un grand débutant sur VB .Net
 
Quelle est la syntaxe correcte pour appeler cette Dll (et les fonctions qui vont avec)
 
Merci d'avance.  :hello:  
 

Reply

Marsh Posté le 23-11-2004 à 23:38:45    

Je pense que ta déclaration est bonne. C'est juste que la dll que tu utilises se vautre.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 24-11-2004 à 07:29:39    

Et aurais tu une solution en VB .net avec une autre Dll et qui marche ?
 
Merci :hello:

Reply

Marsh Posté le 24-11-2004 à 10:48:50    

Je t'ai donné un lien avec plein d'autres dll. Moi j'avais etsté avec succès celle de internals (winio).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 24-11-2004 à 19:14:12    

ok merci, je testes et te tiens au courant

Reply

Marsh Posté le 24-11-2004 à 22:15:08    

Bon, j'ai downloadé winio, adapté le code VB pour du VB .Net, et CA MARCHE  :bounce:  
 
Merci encore !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed