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

Visual C++ Discussion :

Paramètrage Liaison Série C++


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut Paramètrage Liaison Série C++
    Salut,

    J'ai un petit souci...

    Je commence à écrire ma fonction de configuration du port et j'ai un problème déclaration de m_dcb...

    Voilà je ce que j'ai fais dans le .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    BOOL CComSerie::ConfigurePort(DWORD BaudRate, BYTE ByteSize,
    							  DWORD fParity, BYTE Parity,
    							  BYTE StopBits)
     
    {
    	if((m_bPortReady = GetCommState(hComm, &m_dcb))==0)
    	{
    		MessageBox("GetCommState Error","Error",MB_OK);
    		CloseHandle(hComm);
    		return false;
    	}
     
     
    }

    et ce que j'ai déclaré dans le .h :


    et j'ai l'erreur :

    error C2664: 'GetCommState' : cannot convert parameter 2 from 'struct _DCB ** ' to 'struct _DCB *'


    Est-ce que quelqu'un pourrait m'expliquer, merci...

  2. #2
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Pour info, dans le constructeur j'ai intialisé :

    et dans le destructeur :


  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    hé bien c'est normal non ?
    le compilateur t'indique que ta variable est déjà un pointeur et qu'il attend l'adresse d'une variable et non l'adresse d'un pointeur...
    enleve le & .

  4. #4
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Merci Farscape...

    J'ai donc continué à coder et j'ai une exception...

    Voilà ce que j'ai fais :

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    BOOL CComSerie::OpenPort(CString portname)
    {
    	portname= "//./" + portname;
     
    	hComm = CreateFile(portname,
                          GENERIC_READ | GENERIC_WRITE,
                          0,
                          0,
                          OPEN_EXISTING,
                          0,
                          0);
    	if(hComm==INVALID_HANDLE_VALUE)
    	{
    		return false;
    	}
    		else
    		return true;
     
    }
     
     
    BOOL CComSerie::ConfigurePort(DWORD BaudRate, BYTE ByteSize,
    							  DWORD fParity, BYTE Parity,
    							  BYTE StopBits)
     
    {
    	if((m_bPortReady = GetCommState(hComm, m_dcb)) == 0)
    	{
    		//MessageBox("Erreur de configuration du port série","Erreur",MB_OK);
    		CloseHandle(hComm);
    		return false;
    	}
     
    	m_dcb->BaudRate = BaudRate;
    	m_dcb->ByteSize = ByteSize;
    	m_dcb->Parity = Parity;
    	m_dcb->StopBits = StopBits;
    	m_dcb->fBinary = true;
    	m_dcb->fDsrSensitivity = false;
    	m_dcb->fParity = fParity;
    	m_dcb->fOutX = false;
    	m_dcb->fInX = false;
    	m_dcb->fNull = false;
    	m_dcb->fAbortOnError = true;
    	m_dcb->fOutxCtsFlow = false;
    	m_dcb->fOutxDsrFlow = false;
    	m_dcb->fDtrControl = DTR_CONTROL_DISABLE;
    	m_dcb->fDsrSensitivity = false;
    	m_dcb->fRtsControl = RTS_CONTROL_DISABLE;
     
    	if((m_bPortReady = SetCommState(hComm, m_dcb)) == 0)
    	{
    		//MessageBox("Erreur de configuration du port série","Erreur",MB_OK);
    		CloseHandle(hComm);
    		return false;
    	}
     
    	return true;
     
    }
     
     
    BOOL CComSerie::ReadByte(BYTE &resp)
    {
    	BYTE rx;
    	resp = 0;
     
    	DWORD dwBytesTransferred = 0;
     
    	if(ReadFile(hComm, &rx, 1, &dwBytesTransferred, 0))
    	{
    		if(dwBytesTransferred == 1)
    		{
    			resp = rx;
    			return true;
    		}
    	}
    return false;
    }
     
     
    BOOL CComSerie::WriteByte(BYTE bybyte)
    {
    	LPDWORD iBytesWritten = 0;
    	if(WriteFile(hComm, &bybyte, 1, iBytesWritten, NULL) == 0)
    		return false;
    	else return true;
     
    }
     
     
    void CComSerie::ClosePort()
    {
    	CloseHandle(hComm);
    	return;
    }
    L'expeption se produit au WriteFile et est lié à KERNEL32.DLL,
    Je ne vois pas d'où viens le problème d'autant plus que la compilation de me signale rien du tout...

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    heu tu sais que dans la faq il y a une classe qui fait le boulot ?,
    si tu veux faire ça de ton coté ok ,mais inspire toi au moins d'un code qui fonctionne....
    la compilation et une exception à l'exécution sont deux choses différentes
    un programme qui compile ne sera pas pour autant exempt de bug....

  6. #6
    Membre éclairé Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    OK je vais m'en inspirer...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. liaison Série avec kernell32
    Par Emcy dans le forum Windows
    Réponses: 8
    Dernier message: 31/08/2005, 08h58
  2. Réponses: 7
    Dernier message: 21/06/2005, 16h56
  3. [Debutant(e)] Liaison série RS232 et servlet
    Par bourack dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/01/2005, 14h50
  4. Réponses: 29
    Dernier message: 11/05/2004, 13h18
  5. liaison série
    Par elodie escande dans le forum MFC
    Réponses: 13
    Dernier message: 14/01/2004, 17h57

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