begin process at 2012 05 29 01:32:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

C++ communication avec port COM


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

C++ communication avec port COM

mardi 27 février 2007 à 03:57:40 | C++ communication avec port COM

seignseifer

Bonjour tout le monde,
aidez moi s'il vous plait et si vous avez le temps, je vais craquer. JE pense que c'est assez basique, mais je suis debutant, desole.
Alors voila, je veux communiquer avec un analyseur de spectre branche sur le COM1.
J'ai reussi a taper un petit programme. J'arrive a lui envoyer des informations ( par exemple a changer la langue de l'analyseur en envoyant les bits 16 puis 3)
Jusque la tout va bien. Mais le probleme est que je n'arrive pas du tout a lire les infos qu'il m'envoie.
Quand il faut qu'il m'envoie des series de BYTE, j'ai rien du tout.
Je vous donne un exemple :
Pour avoir l'etat de sa batterie, je dois envoyer le BYTE 78, puis le BYTE 3. il devrait me renvoyer 5 BYTE normalement, mais j'ai rien :'(.
Voila mon programme : (je code sous Borland C++6.0)

//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#include <windows.h>
#include <windef.h>
#include <stdlib.h>
#include <iostream.h>
#include <fstream.h>


#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main()
{

 HANDLE handle;
 DCB dcb;
 COMMTIMEOUTS timeouts={0};
 BOOL fSuccess;


 unsigned long nBytesRead;
 int NbOctet;

 char c;
 int i;
 BOOL bResult,PortReady;

 char buf2[1024];
 DWORD nblu,nbecrit;

 int aenvoyer2,aenvoyer3;

 

 /*--------------------------------------------------------------------*/
 /*   Ouverture du port de communication pour l'ANALYSEUR DE SPECTRE   */
 /*--------------------------------------------------------------------*/


 handle = CreateFile(
    "COM1",
    GENERIC_READ | GENERIC_WRITE , // acces pour lire et ecrire sur le port
    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL
    ) ;


 if(handle == INVALID_HANDLE_VALUE)
  {
   printf("Impossible d'ouvrir le port  (erreur %d)\n", GetLastError());
    return 0;
  }


PortReady=SetupComm(handle,5000,5000);
fSuccess = GetCommState(handle, &dcb);

 if (!fSuccess)
  {
    printf("probleme 1");

      getchar();
  }

 

dcb.BaudRate = CBR_9600 ; 
dcb.ByteSize =8 ;
dcb.Parity=NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fNull=FALSE;
dcb.fRtsControl=RTS_CONTROL_ENABLE;
dcb.fInX=FALSE;
dcb.fOutX=FALSE;
dcb.fDtrControl=DTR_CONTROL_ENABLE;


PortReady=SetCommState(handle,&dcb);

if(!SetCommState(handle,&dcb))
{
   printf("probleme 1");
      getchar();

}

 

 

/*-----------------------------------------------------------*/
/*                  Les timeouts                             */
/*-----------------------------------------------------------*/

timeouts.ReadIntervalTimeout=50;
timeouts.ReadTotalTimeoutMultiplier=8;
timeouts.ReadTotalTimeoutConstant=8;
timeouts.WriteTotalTimeoutMultiplier=8;
timeouts.WriteTotalTimeoutConstant=8;


 SetCommTimeouts(handle,&timeouts);
if(!SetCommTimeouts(handle,&timeouts))
                {
                  printf("Impossible d'initialiser les timeouts  (erreur %d)\n", GetLastError());
                  return 0;
                }
/*-----------------------------------------------------------*/
/*                  envoi de donnees et reception                           */
/*-----------------------------------------------------------*/

aenvoyer2=78;
aenvoyer3=3;

WriteFile(handle,&aenvoyer2,1,&nbecrit,NULL);
WriteFile(handle,&aenvoyer3,1,&nbecrit,NULL);

ReadFile(handle,buf2,13,&nblu,NULL);

 printf("\n char2= %s \n ",buf2);

getchar();

CloseHandle(handle);


 return(fSuccess);
}
//---------------------------------------------------------------------------



Cette discussion est classée dans : port, handle, include, dcb, timeouts


Répondre à ce message

Sujets en rapport avec ce message

transmission de donnees via port serie [ par seignseifer ] Bonjour tout le monde, j'ai fait un petit programme en  C++ sous Borland C++6.0, car je veux envoyer via le port serie, des information a un analyseur inclure un thread dans une classe C++ [ par savate83 ] Bonjour a tous, mon probleme est le suivant : je dois realiser une classe qui me permette d'executer un thread de reception a chaque instance car g pl Lire sur port parallèle! [ par tof0256 ] Bonjour,J'aimerais lire des données sur le port parallèle. J'aimerai utiliser les 8 bit de donnée pour cela. J'ai une fiche DB25 ou j'ai relié les PIn handle de port paralelle [ par antoinec ] Ya til moyen d accéder au CONTROL et STATUS port en ayant ouvert une communication par un handle sur"LPT1" sans utiliser # define DATA 0x378 etc?Antoi pb avec communication rs232 [ par kekenobi ] salut a tous et a toutes!voila j'ai un petit pb avec mon programme portant sur la communication RS232:en fait je reçoit une trame de 19 caractères et Reception sur port COM1 sous Builder [ par Ardeje26 ] Bonjour,Je travail sous Borland Builder 5 et j'ai un problème pour récupérer les datas sur mon port COM1 avec le code suivant.Je peut simplement savoi pb bind pour un serveur avec djgpp/gcc [ par Guillaume of IUT ] Salut à tous, j'ai un problème. Voici le code du serveur en C. C'est pratiquement l'exemple qui est livré avec les librairies tcp lsck073b. Le problem Création d'une socket .. [ par bubbless ] Bonjour !à l'aide !! J'ai programmé tout un systèle réseau / client, que j'ai enfin pu tester grâce à l'aide d'une âme charitable sur ce forum, et je Dossier [ par angsthase ] Bonjour à tous! Voici un petit bout de programme que j'ai recupérer sur 'msdn' et  que je n'arrive pas à faire fonctionner. C'est dû au paramètre qui [C] Scanner de port utilise socket version linux [ par firemax ] Salut :) J'ai une erreur de segmentation et je n'est pas la moindre idée d'ou ca peut venir :( Je n'est aucun warning lors de la compilation mais l


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales