Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
998 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [windows] port // Createfile() Writefile()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[windows] port // Createfile() Writefile()

n°503043
JPhi
Posté le 31-08-2003 à 00:40:22  profilanswer
 

Salut,
 
Dsl j'ai fais une recherche sur le forum et j'ai pas trouvé mon bonheur.  
Evidement c'est sur l'acces au port parallele sous les systemes base NT.
 
Je comprend rien au explication donné sur ces fonctions sur internet (souvent en anglais et ca m'aide pas)
 
Alors voila ce que j'ai trouvé pour ouvrir le port:  

Code :
  1. HANDLE hCom;
  2. hCom = CreateFile(
  3.     "LPT1",                       
  4.     GENERIC_READ | GENERIC_WRITE,
  5.     0,                         
  6.     NULL,                       
  7.     OPEN_EXISTING,               
  8.     0,
  9.     NULL                       
  10.   );


 
et sur writefile :  
WriteFile(hCom,Message,NbOctet,&nBytesWrite,NULL);
 
Mais je comprend rien aux parametres de ces fonctions.
 
Merci d'avance


Message édité par JPhi le 31-08-2003 à 01:40:37
mood
Publicité
Posté le 31-08-2003 à 00:40:22  profilanswer
 

n°503073
Konar
Posté le 31-08-2003 à 01:41:21  profilanswer
 

Apprends l'anglais, c'est presque indispendable a moins de trouver une bonne doc en francais...
 
ben sinon CreateFile(), comme son nom l'indique, sert a créer ou ouvrir un fichier, une console, une pipe, un port série ou //, etc. Il retourne le 'handle', c'est a dire le descripteur (si qqun a un nom mieux en fr) correspondant.
 
et WriteFile, bah pour écrire dans le bordel ouvert.
Ses parametres :
 
BOOL WriteFile(
  HANDLE hFile,  // Handle retourné par CreateFile
  LPCVOID lpBuffer,  // Buffer correspondant a ce que tu veux écrire
  DWORD nNumberOfBytesToWrite, // Taille du Buffer
  LPDWORD lpNumberOfBytesWritten, // variable servant a indiquer en retour le nb d'octets écrits
  LPOVERLAPPED lpOverlapped // oublie pour l'instant
);
et ca retourne 0 si ca a raté.
 
en gros, par ex si je veux écrire "truc bordel", je fais :

Code :
  1. DWORD dw;
  2. BOOL b = WriteFile(hFile, "truc bordel", 11, &dw, NULL);
  3. if (!b)
  4. {
  5.   // Raté
  6. }


 
.

n°503190
JPhi
Posté le 31-08-2003 à 11:21:42  profilanswer
 

merci j'essaye de ce pas  :jap:  
 
Marrant ton pseudo  :lol:

n°503262
JPhi
Posté le 31-08-2003 à 13:07:13  profilanswer
 

marche po   :(  
 
Le port COM1 s'ouvre correctement mais je vois pas d'envoi de donnée quand j'utilise writefile().
Et sur le LPT1 j'ai rien.
voici ce que j'ai mi:

Code :
  1. HANDLE hCom;
  2. hCom = CreateFile(
  3.     "LPT1",                       
  4.     GENERIC_READ | GENERIC_WRITE,
  5.     0,                                NULL,                       
  6.     OPEN_EXISTING,               
  7.     0,
  8.     NULL                         
  9.   );
  10. DWORD dw;
  11.   BOOL b = WriteFile("LPT1", "A", 1, &dw, NULL);
  12. if (!b)
  13. {
  14.       // Raté
  15. }


 
Et j'ai l'état de D0-D7 qui ne bouge pas.
 
 [:cpu]  

n°503400
JPhi
Posté le 31-08-2003 à 17:03:30  profilanswer
 

Me suis trompé pour Writefile c'est hCom et pas "LPT1" qui faut mettre.  :pfff:  
 
J'ai essayé sur le port com et ca marche sans probleme.
Mais sur le port // toujours sans succes.
 
Help ya personne qui l'a deja fait ?  :cry:

n°503483
JPhi
Posté le 31-08-2003 à 19:39:12  profilanswer
 

Ca marche.
 
Mais je viens de voir que j'ai 7 documents non imprimé dans la fenetre de gestion d'impression de mon imprimante ...  
 
Moi je veux juste imposé un niveau au bits de sortie D0-7 et pas envoyer un fichier à imprimer vers l'imprimante.  
 
Une idée ?

n°503627
Konar
Posté le 31-08-2003 à 22:28:48  profilanswer
 

j'ai jamais fait de port // ou série, mais faut pas oublier l'appel a CloseHandle(hCom) quand t'as fini tes opérations, ca peut expliquer pkoi y a des trucs en queue.
 
t'as ka mater les liens renvoyés par ca : (FR)
http://www.google.fr/search?q=Crea [...] %3Dlang_fr

n°503628
mrbebert
Posté le 31-08-2003 à 22:32:06  profilanswer
 

JPhi a écrit :

Ca marche.
 
Mais je viens de voir que j'ai 7 documents non imprimé dans la fenetre de gestion d'impression de mon imprimante ...  
 
Moi je veux juste imposé un niveau au bits de sortie D0-7 et pas envoyer un fichier à imprimer vers l'imprimante.  
 
Une idée ?

si tu as sous windows, je doute que tu puisses accéder directement au port // [:figti]  
A priori, il intercepte les demandes, pouvant venir de plusieurs applications.

n°503645
JPhi
Posté le 31-08-2003 à 23:08:43  profilanswer
 

Konar a écrit :

j'ai jamais fait de port // ou série, mais faut pas oublier l'appel a CloseHandle(hCom) quand t'as fini tes opérations, ca peut expliquer pkoi y a des trucs en queue.


 
Je l'ai mi chef CloseHandle(hCom)  mais toujours le meme resultat.
 
 

n°503649
JPhi
Posté le 31-08-2003 à 23:11:08  profilanswer
 

Je crois que Createfile utilise le protocol de transfere EPP et comme l'imprimante n'est pas connécté il me met le caractere dans un fichier en attente d'impression.
 
Et si c'est bien ca je suis pas couché  :pt1cable:

mood
Publicité
Posté le 31-08-2003 à 23:11:08  profilanswer
 

n°503706
Konar
Posté le 01-09-2003 à 01:20:19  profilanswer
 

mrBebert a écrit :

si tu as sous windows, je doute que tu puisses accéder directement au port // [:figti]  
A priori, il intercepte les demandes, pouvant venir de plusieurs applications.


 
ouais je pense aussi. a mon avis c'est le driver qui intercepte tout ca, le seul moyen serait donc d'écrire ton propre driver, ou de désactiver ou outrepasser l'actuel driver, ptet en ouvrant de manière spéciale le port, ou en utilisant des appels systèmes plus basiques.

n°503709
JPhi
Posté le 01-09-2003 à 02:18:36  profilanswer
 

Konar a écrit :


en utilisant des appels systèmes plus basiques.


 
Cad ? un copain m'a dit qu'en assembleur ca ne pose pas de probleme.

n°503861
HelloWorld
Salut tout le monde!
Posté le 01-09-2003 à 10:17:07  profilanswer
 

Il me semble que CreateFile sur port // ne marche pas.
Des drivers ont déjà été développés. Cette question a déjà été traité et des bons liens donnés.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°503865
HelloWorld
Salut tout le monde!
Posté le 01-09-2003 à 10:18:19  profilanswer
 
n°503937
JPhi
Posté le 01-09-2003 à 11:25:41  profilanswer
 

Merci HelloWorld,
 
A default d'autre solution je vais essayé ton driver.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [windows] port // Createfile() Writefile()

 

Sujets relatifs
[windows]Programmer le port PS/2 ?Windows - vitesse de connexion au réseau local
[Resolu] [C++ / thread / windows] Demarrer une methode en Thread ?Pièges du dev sur Windows Japonnais
[Windows] Probleme de connection TCP :/gcc sous windows et msvcrt.dll
Qbasic actionner/desactionner le DTR sur port serie[PHP] cron sous windows, possible ?
[Programmation windows en C++] Recherche d'un bon tutorial... 
Plus de sujets relatifs à : [windows] port // Createfile() Writefile()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR