IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Re-initialiser le port serie


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut Re-initialiser le port serie
    Bonjour,

    Je travaille sur un terminal de lecture de code barre (8001 de Cipher Lab pour ne pas le citer).

    Ce terminal dispose d'une connexion serie par laquelle je transfert quantit� de donn�e sans probleme, seulement voila, lorsque celui ci est debrancher "sauvagement" pendant une communication, le port serie de mon pc est HS, plus moyen de relancer la moindre communication, et ce meme apres un reboot, et ce toujours, avec n'importe quel logiciel de monitoring port serie (hyper terminal...) j'obtiens toujours des caracteres non imprimables.

    Le logiciel fournit avec et qui permet de transferer un binaire dedans est ccapable de passer outre ce probleme, il reinitialise mon port serie lors du transfert du binaire. Le port est de nouveau fonctionnel avec tous les logiciels, y compris le mien.

    Malheureusement, je n'ai pas acces aux sources de ce programme pour savoir quelle ligne magique est capable de faire cela,

    j'ai essay� 150 trucs differents, rien � faire, voila mon code qui permet d'ouvrir le com, qu'y manque t il pour le reinitialiser ?

    nb: jsuis en asynchrone
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    	// *****     OUVERTURE DU PORT     *****
    	m_hCom = CreateFile(	"COM1",                         // Choix du port « COMx » 
    				GENERIC_READ | GENERIC_WRITE,	// accès pour lire et écrire sur le port 
    				0,								// accès exclusif au port de COM 
    				NULL,							// sécurité par défaut 
    				OPEN_EXISTING,					//Doit être à cette valeur car se n’est pas un fichier 
    				FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, // mode synchrone asynchrone
    				NULL                          
    				);
     
    	ClearCommError(m_hCom, &dwErrors, NULL);
     
    	GetCommProperties(m_hCom, &prop);
     
     
    	err = (m_hCom == INVALID_HANDLE_VALUE) || (!SetupComm(m_hCom, 4096, 4096));
     
    	if (!err){
    		GetCommTimeouts (m_hCom, &gct);
    		gct.ReadIntervalTimeout = 0;
    		gct.ReadTotalTimeoutConstant = 0;
    		gct.ReadTotalTimeoutMultiplier = 0;
    		gct.WriteTotalTimeoutConstant = 5000;
    		gct.WriteTotalTimeoutMultiplier = 0;
    		if ( !SetCommTimeouts(m_hCom,&gct) ) err = 1;
    	}
     
     
    	if (!err){
     
    		memset(&m_Ov,0,sizeof(m_Ov));
     
    		// *****     CONFIGURATION DU PORT     *****
    		m_config.DCBlength = sizeof( DCB );
    		GetCommState(m_hCom,&m_config);
    		m_config.BaudRate = 115200;
    		m_config.fBinary = 1;
    		m_config.fParity = 0;
    		m_config.fOutxCtsFlow = 0;
    		m_config.fOutxDsrFlow = 0;
    		m_config.fDtrControl = 1;
    		m_config.fDsrSensitivity =0;
    		m_config.fTXContinueOnXoff = 0;
    		m_config.fOutX = 0;
    		m_config.fInX = 0;
    		m_config.fErrorChar = 0;
    		m_config.fNull = 0;
    		m_config.fRtsControl = 1;
    		m_config.fAbortOnError = 0;
    		m_config.fDummy2 = 0;
    		//m_config.wReserved = 0;
    		m_config.XonLim = 2048;
    		m_config.XoffLim = 512;
    		m_config.ByteSize = 8;
    		m_config.Parity = 0;
    		m_config.StopBits = 0;
    		m_config.XonChar = 0;
    		m_config.XoffChar = 0;
    		m_config.ErrorChar = 0;
    		m_config.EofChar = 0;
    		m_config.EvtChar = 0;
    		//m_config.wReserved1 = 0;
     
    		err = SetCommState(m_hCom,&m_config) == 0;
     
    		// Purge
    		if (!err){
    			PurgeComm(m_hCom, PURGE_TXABORT|PURGE_RXABORT| 
    							  PURGE_TXCLEAR|PURGE_RXCLEAR);
     
    			GetCommMask(m_hCom, &old_mask);
    			SetCommMask(m_hCom, 0);
    			SetCommMask(m_hCom, old_mask);
    		}
    	}

  2. #2
    Membre �clair�

    Profil pro
    Inscrit en
    D�cembre 2003
    Messages
    650
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 650
    Par d�faut
    ok,
    desole, jai eu ma reponse depuis le fournisseur du terminal

    il s'agissait d'une reinitialisation du support du terminal, donc rien a voir avec le C++

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Initialisation port serie
    Par vtk37 dans le forum D�buter
    R�ponses: 1
    Dernier message: 20/05/2009, 17h09
  2. Lire le fichier du port série
    Par saibe dans le forum Linux
    R�ponses: 7
    Dernier message: 09/04/2003, 09h29
  3. R�ponses: 5
    Dernier message: 25/03/2003, 19h43
  4. [TP] port série rs232
    Par cyb33 dans le forum Turbo Pascal
    R�ponses: 44
    Dernier message: 13/01/2003, 15h49
  5. [Kylix] Kylix / port serie
    Par Anonymous dans le forum EDI
    R�ponses: 3
    Dernier message: 01/04/2002, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo