Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : transmission de donnees via port serie [ Base de données / SQL ] (seignseifer)

jeudi 22 février 2007 à 06:33:57 | transmission de donnees via port serie

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 de sprectre. Le but est de pouvoir le commander a partir de l'ordi. ( et apres de recevoir les info qu'il envoie)
Par exemple, la doc de programmation de l'analyseur , me dit " Send the enter remotemode Byte #69, to the spectrum analyser to enter remote mode.
Donc j'ai tape la ligne de code suivante :
 WriteFile(handle,"69",2,&nbecrit,NULL);

Mais rien ne se passe.L'analyseur de spectre ne bouge pas d'un pouce...
AVez vous des idees ?

Mon programme en entier donne ca :
//---------------------------------------------------------------------------

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

#pragma hdrstop

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

#pragma argsused
int main()
{

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


 unsigned long nBytesRead;
 int NbOctet;
 char c;
 BOOL bResult,PortReady;
 char *inBuffer;
 
 /* pour le remote mode */
 char buf[56];
 char buf2[56];
 DWORD nblu=0,nbecrit;

 

 /*--------------------------------------------------------------------*/
 /*   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;


  }
  
/*-----------------------------------------------------------*/
/*                  Ajustement des parametres                */
/*-----------------------------------------------------------*/


PortReady=SetupComm(handle,5000,5000);


fSuccess = GetCommState(handle, &dcb);

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

      getchar();
  }

     
dcb.BaudRate = CBR_9600 ;   /*  vitesse */
dcb.ByteSize =8 ; /* nombre de bits */
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;


/*-----------------------------------------------------------*/
/*     on applique les changements au port COM1              */
/*-----------------------------------------------------------*/
PortReady=SetCommState(handle,&dcb);

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

}

 

 

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

timeouts.ReadIntervalTimeout=MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier=0;
timeouts.ReadTotalTimeoutConstant=0;
timeouts.WriteTotalTimeoutMultiplier=0;
timeouts.WriteTotalTimeoutConstant=0;

/* On applique ces changements au port COM1*/
 SetCommTimeouts(handle,&timeouts);
if(!SetCommTimeouts(handle,&timeouts))
                {
                  printf("Impossible d'initialiser les timeouts  (erreur %d)\n", GetLastError());
                  return 0;
                }

                     

  
/*-----------------------------------------------------------*/
/*             test du remote mode                           */
/*-----------------------------------------------------------*/


 WriteFile(handle,"69",2,&nbecrit,NULL);


 getchar();
        CloseHandle(handle);
 return(fSuccess);
}
//---------------------------------------------------------------------------


vendredi 23 février 2007 à 11:06:09 | Re : transmission de donnees via port serie

HCJarod

salut la doc te dit d'envoyé le BYTE 69 (l'octet 0x69) et pas la chaine "69".
essai plutot :  WriteFile(handle,'\x69',1,&nbecrit,NULL);

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+

lundi 26 février 2007 à 01:42:38 | Re : transmission de donnees via port serie

seignseifer

ok merci, ca marche . L'analyseur de spectre se met bien en mode remote. Mais maintenant, le probleme est qu'il devrait me renvoyer son numero de serie ( entre autre : MDS234598) quand je lui dit de se mettre en remote mode. Mais mon programme m'affiche n'inporte quoi.
Il doit y avoir un probleme avec mon "buf2", mais j'arrive pas a voir quoi.
Merci 

lundi 26 février 2007 à 01:46:52 | Re : transmission de donnees via port serie

seignseifer

ah j'ai oublie d'ajouter la ligne dans mon programme du dessous, desole :



/*-----------------------------------------------------------*/
/*             test du remote mode                           */
/*-----------------------------------------------------------*/

aenvoyer=69;

WriteFile(handle,&aenvoyer,3,&nbecrit,NULL);

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

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




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


Répondre à ce message

Sujets en rapport avec ce message

C++ communication avec port COM [ par 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, d 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

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.