Surveillance du port parallèle - C#/.NET managed - Programmation
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.
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, ...)
Marsh Posté le 17-11-2004 à 18:28:20
ReplyMarsh 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
Marsh Posté le 17-11-2004 à 18:34:24
ReplyMarsh 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...
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 :
|
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, ...)
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...
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
Marsh Posté le 18-11-2004 à 15:29:30
ReplyMarsh 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
Marsh Posté le 18-11-2004 à 17:08:17
HelloWorld a écrit : L'exemple su site fonctionne ? |
Marsh Posté le 18-11-2004 à 17:40:28
ReplyMarsh 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"
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é.
Marsh Posté le 21-11-2004 à 09:26:11
chris500 a écrit : oui, je suis administrateur de la machine |
laquelle ?
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...
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 ?
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."
Marsh Posté le 22-11-2004 à 19:27:22
ouais ca veut dire que y'a pas l'innerexception de renseigné, dommage
Essayes "0x378" a la place de "888" mais je doute que ca passe mieux
Edit : verifie dans ton bios que l'adresse du port est ok qd meme
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.
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 ?)
Marsh Posté le 23-11-2004 à 10:08:36
Il fait un dll import sur une dll non managée qui installe un driver...
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 ! 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.
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.
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
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).
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
Merci encore !
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