Je suis actuellement entrain de m'amuser avec le port paralle. Je fais
un soft permettant de diagnostiquer un port parallele (avec un bouchon
sur le port). Mon probleme est lors de l'ecriture sur le port. Apres un
appel a CreateFile("LPT1"..) j'utilise la fonction WriteFile mais elle
n'aboutit pas (en overlapped ou pas elle n'ecrit jamais rien). Voila ce
que je fais (je reste bloque dans la fonction WriteFile):
hDevice = CreateFile("LPT1", GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if (INVALID_HANDLE_VALUE == hDevice) return;
unsigned char c = 0;
boOk = WriteFile(hDevice, &c, 1, &dw, NULL);
if (boOk) printf("Nb Write %d Write 0x%02X\n", dw, c);
else printf("WriteFile Error %d\n", GetLastError());
Est ce que j'utilise mal le WriteFile ? Comment proceder ?
J'ai essaye de dialoguer avec le driver parport.sys mais sans plus de
resultats. Quelle sont les commandes pour lire sur le port // en
utilisant le driver. Comment marche IOCTL_PAR_SET_WRITE_ADDRESS ??
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent Burel
wrote in message news:
Bonjour,
Je suis actuellement entrain de m'amuser avec le port paralle. Je fais un soft permettant de diagnostiquer un port parallele (avec un bouchon sur le port). Mon probleme est lors de l'ecriture sur le port. Apres un appel a CreateFile("LPT1"..) j'utilise la fonction WriteFile mais elle n'aboutit pas (en overlapped ou pas elle n'ecrit jamais rien). Voila ce que je fais (je reste bloque dans la fonction WriteFile): hDevice = CreateFile("LPT1", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if (INVALID_HANDLE_VALUE == hDevice) return; unsigned char c = 0; boOk = WriteFile(hDevice, &c, 1, &dw, NULL); if (boOk) printf("Nb Write %d Write 0x%02Xn", dw, c); else printf("WriteFile Error %dn", GetLastError());
Il se peut que la configuration de votre port ne soit pas ok. regardez les fonction Get/SetCommState... Suivant le mode d'un port de communication, le write et/ou le read peuvent etre bloquant (en attente de données... ou d'un accusé de reception), pour controler cette attente, regardez du coté de Set/GetCommTimeouts
Je vous invite à parcourir le chapitre du MSDN : Platform SDK Documentation / Base Services / Files and I/O / Communications
Vincent Burel
<patrice.riou@free.fr> wrote in message
news:1156358626.127874.103360@74g2000cwt.googlegroups.com...
Bonjour,
Je suis actuellement entrain de m'amuser avec le port paralle. Je fais
un soft permettant de diagnostiquer un port parallele (avec un bouchon
sur le port). Mon probleme est lors de l'ecriture sur le port. Apres un
appel a CreateFile("LPT1"..) j'utilise la fonction WriteFile mais elle
n'aboutit pas (en overlapped ou pas elle n'ecrit jamais rien). Voila ce
que je fais (je reste bloque dans la fonction WriteFile):
hDevice = CreateFile("LPT1", GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if (INVALID_HANDLE_VALUE == hDevice) return;
unsigned char c = 0;
boOk = WriteFile(hDevice, &c, 1, &dw, NULL);
if (boOk) printf("Nb Write %d Write 0x%02Xn", dw, c);
else printf("WriteFile Error %dn", GetLastError());
Il se peut que la configuration de votre port ne soit pas ok. regardez les
fonction Get/SetCommState...
Suivant le mode d'un port de communication, le write et/ou le read peuvent
etre bloquant (en attente de données... ou d'un accusé de reception), pour
controler cette attente, regardez du coté de Set/GetCommTimeouts
Je vous invite à parcourir le chapitre du MSDN :
Platform SDK Documentation / Base Services / Files and I/O / Communications
Je suis actuellement entrain de m'amuser avec le port paralle. Je fais un soft permettant de diagnostiquer un port parallele (avec un bouchon sur le port). Mon probleme est lors de l'ecriture sur le port. Apres un appel a CreateFile("LPT1"..) j'utilise la fonction WriteFile mais elle n'aboutit pas (en overlapped ou pas elle n'ecrit jamais rien). Voila ce que je fais (je reste bloque dans la fonction WriteFile): hDevice = CreateFile("LPT1", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if (INVALID_HANDLE_VALUE == hDevice) return; unsigned char c = 0; boOk = WriteFile(hDevice, &c, 1, &dw, NULL); if (boOk) printf("Nb Write %d Write 0x%02Xn", dw, c); else printf("WriteFile Error %dn", GetLastError());
Il se peut que la configuration de votre port ne soit pas ok. regardez les fonction Get/SetCommState... Suivant le mode d'un port de communication, le write et/ou le read peuvent etre bloquant (en attente de données... ou d'un accusé de reception), pour controler cette attente, regardez du coté de Set/GetCommTimeouts
Je vous invite à parcourir le chapitre du MSDN : Platform SDK Documentation / Base Services / Files and I/O / Communications
Ca paraît pourtant bon. La seule différence avec ce que j'ai ici et qui marche, c'est que j'utilise GENERIC_READ|GENERIC_WRITE même pour une sortie unidirectionnelle, et 0 à la place de FILE_ATTRIBUTE_NORMAL. D'ailleurs, vous parlez de lecture sur le port et vous avez l'argument GENERIC_WRITE seul. Pour l'écriture avec WriteFile(), on a la même chose.
Le mieux est de vérifier déjà si ça sort bien vers un fichier (mettez "TOTO.TXT" à la place de "LPT1"). Si c'est ok, vous avez peut-être un souci avec le port.
Ca paraît pourtant bon. La seule différence avec ce que j'ai ici et qui
marche, c'est que j'utilise GENERIC_READ|GENERIC_WRITE même pour une
sortie unidirectionnelle, et 0 à la place de FILE_ATTRIBUTE_NORMAL.
D'ailleurs, vous parlez de lecture sur le port et vous avez l'argument
GENERIC_WRITE seul. Pour l'écriture avec WriteFile(), on a la même chose.
Le mieux est de vérifier déjà si ça sort bien vers un fichier (mettez
"TOTO.TXT" à la place de "LPT1"). Si c'est ok, vous avez peut-être un
souci avec le port.
Ca paraît pourtant bon. La seule différence avec ce que j'ai ici et qui marche, c'est que j'utilise GENERIC_READ|GENERIC_WRITE même pour une sortie unidirectionnelle, et 0 à la place de FILE_ATTRIBUTE_NORMAL. D'ailleurs, vous parlez de lecture sur le port et vous avez l'argument GENERIC_WRITE seul. Pour l'écriture avec WriteFile(), on a la même chose.
Le mieux est de vérifier déjà si ça sort bien vers un fichier (mettez "TOTO.TXT" à la place de "LPT1"). Si c'est ok, vous avez peut-être un souci avec le port.
patrice.riou
Merci pour vos reponses,
Le fait d'ecrire dans un fichier (ou port serie) fonctionne très bien. Je pense que mon probleme vient du fait que j'ai uniquement un bouchon sur le port parallele. En fait je voudrais uniquement ecrire une valeur a l'adresse du port //, et relire le registre d'etat du port //. Et voir si cette valeur est conforme a ce que j'ai ecrit (en fonction du cablâge du loopback //) Est ce que qq'1 a une idee en dialoguant avec le driver parport.sys ? Utilisation des commandes IOCTL_.....
Ca paraît pourtant bon. La seule différence avec ce que j'ai ici et q ui marche, c'est que j'utilise GENERIC_READ|GENERIC_WRITE même pour une sortie unidirectionnelle, et 0 à la place de FILE_ATTRIBUTE_NORMAL. D'ailleurs, vous parlez de lecture sur le port et vous avez l'argument GENERIC_WRITE seul. Pour l'écriture avec WriteFile(), on a la même ch ose.
Le mieux est de vérifier déjà si ça sort bien vers un fichier (me ttez "TOTO.TXT" à la place de "LPT1"). Si c'est ok, vous avez peut-être un souci avec le port.
Merci pour vos reponses,
Le fait d'ecrire dans un fichier (ou port serie) fonctionne très bien.
Je pense que mon probleme vient du fait que j'ai uniquement un bouchon
sur le port parallele.
En fait je voudrais uniquement ecrire une valeur a l'adresse du port
//, et relire le registre d'etat du port //. Et voir si cette valeur
est conforme a ce que j'ai ecrit (en fonction du cablâge du loopback
//)
Est ce que qq'1 a une idee en dialoguant avec le driver parport.sys ?
Utilisation des commandes IOCTL_.....
Ca paraît pourtant bon. La seule différence avec ce que j'ai ici et q ui
marche, c'est que j'utilise GENERIC_READ|GENERIC_WRITE même pour une
sortie unidirectionnelle, et 0 à la place de FILE_ATTRIBUTE_NORMAL.
D'ailleurs, vous parlez de lecture sur le port et vous avez l'argument
GENERIC_WRITE seul. Pour l'écriture avec WriteFile(), on a la même ch ose.
Le mieux est de vérifier déjà si ça sort bien vers un fichier (me ttez
"TOTO.TXT" à la place de "LPT1"). Si c'est ok, vous avez peut-être un
souci avec le port.
Le fait d'ecrire dans un fichier (ou port serie) fonctionne très bien. Je pense que mon probleme vient du fait que j'ai uniquement un bouchon sur le port parallele. En fait je voudrais uniquement ecrire une valeur a l'adresse du port //, et relire le registre d'etat du port //. Et voir si cette valeur est conforme a ce que j'ai ecrit (en fonction du cablâge du loopback //) Est ce que qq'1 a une idee en dialoguant avec le driver parport.sys ? Utilisation des commandes IOCTL_.....
Ca paraît pourtant bon. La seule différence avec ce que j'ai ici et q ui marche, c'est que j'utilise GENERIC_READ|GENERIC_WRITE même pour une sortie unidirectionnelle, et 0 à la place de FILE_ATTRIBUTE_NORMAL. D'ailleurs, vous parlez de lecture sur le port et vous avez l'argument GENERIC_WRITE seul. Pour l'écriture avec WriteFile(), on a la même ch ose.
Le mieux est de vérifier déjà si ça sort bien vers un fichier (me ttez "TOTO.TXT" à la place de "LPT1"). Si c'est ok, vous avez peut-être un souci avec le port.
Bertrand Lenoir-Welter
:
Le fait d'ecrire dans un fichier (ou port serie) fonctionne très bien. Je pense que mon probleme vient du fait que j'ai uniquement un bouchon sur le port parallele.
Votre souci semble plutôt hard que soft. Je suis un peu rouillé sur la question, mais il me semble que le port parallèle réclame des signaux de synchro, genre Strobe, Busy, etc. pour produire un flux de données. Je vous recommande le bouquin de Jan Axelson "Parallel Port Complete", un peu ancien mais très complet pour ce que je m'en souviens.
Ceci dit, le mieux est d'essayer d'abord votre sortie vers une imprimante LPT qui accepte le mode texte et voir si ça sort bien. Si c'est le cas, votre bouchon a un problème.
Au cas où, une page de liens : http://www.lvr.com/parport.htm
patrice.riou@free.fr:
Le fait d'ecrire dans un fichier (ou port serie) fonctionne très bien.
Je pense que mon probleme vient du fait que j'ai uniquement un bouchon
sur le port parallele.
Votre souci semble plutôt hard que soft. Je suis un peu rouillé sur la
question, mais il me semble que le port parallèle réclame des signaux de
synchro, genre Strobe, Busy, etc. pour produire un flux de données. Je
vous recommande le bouquin de Jan Axelson "Parallel Port Complete", un
peu ancien mais très complet pour ce que je m'en souviens.
Ceci dit, le mieux est d'essayer d'abord votre sortie vers une
imprimante LPT qui accepte le mode texte et voir si ça sort bien. Si
c'est le cas, votre bouchon a un problème.
Au cas où, une page de liens : http://www.lvr.com/parport.htm
Le fait d'ecrire dans un fichier (ou port serie) fonctionne très bien. Je pense que mon probleme vient du fait que j'ai uniquement un bouchon sur le port parallele.
Votre souci semble plutôt hard que soft. Je suis un peu rouillé sur la question, mais il me semble que le port parallèle réclame des signaux de synchro, genre Strobe, Busy, etc. pour produire un flux de données. Je vous recommande le bouquin de Jan Axelson "Parallel Port Complete", un peu ancien mais très complet pour ce que je m'en souviens.
Ceci dit, le mieux est d'essayer d'abord votre sortie vers une imprimante LPT qui accepte le mode texte et voir si ça sort bien. Si c'est le cas, votre bouchon a un problème.
Au cas où, une page de liens : http://www.lvr.com/parport.htm