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

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Comment effectuer une liaison serie en c++ ???


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

Comment effectuer une liaison serie en c++ ???

jeudi 14 février 2002 à 16:12:25 | Comment effectuer une liaison serie en c++ ???

Arcocide

Voila mon prob : je dois effectuer un liaison serie en c++ avec Builder enter un PC et une machine. Comment definir le port, et comment envoyer une ligne quelquonque a cette machine ??

Merci beaucouuuup d'avance??? Help me ??

samedi 23 mars 2002 à 15:27:35 | Re : Comment effectuer une liaison serie en c++ ???

jfloviou

Ben moi j'utilise le protocole VISCA pour envoyer des ordres a une camera, j'ai donc dû utiliser le port série. C'est tout simple d'emploi voila en gros mon code:

#include <stdio.h>
#include <windows.h>

char buffer[2];
int i;
int valeur;

main (){ /* Writing Thread */
/*char write_buffer[20]; /* Buffer for the input from the keyboard */
HANDLE rec_h; /* Handle of the child */
DWORD rec_id; /* ID of the child */
HANDLE send_com; /* Handle of the sender device */
DCB dcb_write; /* Structure for the config. of the serial port */

DWORD wr; /* Necessary for WriteFile */

/* Creation of the receiver */
/*rec_h = CreateThread (
NULL,
0,
(LPTHREAD_START_ROUTINE) receiver,
NULL,
0,
&rec_id
);
if (rec_h == INVALID_HANDLE_VALUE)
printf("Creating receiver: %ld\n", GetLastError());*/

/* Creation of file to write to the COM1-port */
send_com = CreateFile (
"COM1",
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
if (send_com == INVALID_HANDLE_VALUE)
printf("Creating file for write access: %ld\n", GetLastError());

/* Reading the state of COM1 */
if (!GetCommState(send_com, &dcb_write))
printf("Error getting send_com-state: %ld\n", GetLastError());

/* New configuration of COM1 */
dcb_write.BaudRate = CBR_19200;
dcb_write.ByteSize = 8;
dcb_write.Parity = NOPARITY;
dcb_write.fParity = FALSE;
dcb_write.StopBits = ONESTOPBIT;
dcb_write.fBinary = TRUE;
dcb_write.fOutxCtsFlow = FALSE;
dcb_write.fOutxDsrFlow = FALSE;
dcb_write.fDtrControl = DTR_CONTROL_DISABLE;
dcb_write.fDsrSensitivity = FALSE;
dcb_write.fTXContinueOnXoff = FALSE;
dcb_write.fOutX = FALSE;
dcb_write.fInX = FALSE;
dcb_write.fErrorChar = FALSE;
dcb_write.fNull = FALSE;
dcb_write.fRtsControl = RTS_CONTROL_DISABLE;
dcb_write.fAbortOnError = FALSE;
dcb_write.XonLim = 20;
dcb_write.XoffLim = 20;

if (!SetCommState(send_com, &dcb_write))
printf("Error getting send_com-state: %ld\n", GetLastError());

/* Work of this thread */
while (1==1){
printf("Entrée: ");
scanf("%s",buffer); /* Input of the data to send */

for(i=0;i<2;i++) {
if (buffer[i]>=48 && buffer[i]<=57)
buffer[i]=buffer[i]-48;
if (buffer[i]>=97 && buffer[i]<=102)
buffer[i]=buffer[i]-87;
}
valeur=buffer[1]+buffer[0]*16;
/*while (write_buffer[i] != '\x00'){*/
/* Writing data to COM1 */
if (WriteFile(
send_com,
&valeur,
1,
&wr,
NULL
) == FALSE)
printf("Writing send_com: %ld\n", GetLastError());
i = i + 1;
/*}*/
}
return (0);
} /* End main */



jaja


-------------------------------
Réponse au message :
-------------------------------

Voila mon prob : je dois effectuer un liaison serie en c++ avec Builder enter un PC et une machine. Comment definir le port, et comment envoyer une ligne quelquonque a cette machine ??

Merci beaucouuuup d'avance??? Help me ??


lundi 14 mars 2005 à 15:58:44 | Re : Comment effectuer une liaison serie en c++ ???

irisiris76

Pourrait tu me donner les réferences ou des fichiers, adresses de site contenant des informations sur le protocole Visca.

merci d'avance
lundi 23 janvier 2006 à 16:55:23 | Comment gérer le contrôle de flux lors d'un main: (soit RTS-CTS ou Xon/Xoff)

Payot13

// portcom.cpp

#include "portcom.h"
#include <iostream.h>
************************************************/
* Nom : Portcom()
* Description: Constructeur de la classe Portcom
     afin d'initialiser les paramètres
************************************************/

PortCom::PortCom(char *nport, int Pbits, int Pparite, int Pstop, int Pflux, int Pbaud)
{
nom = new char [strlen (nport)];
strcpy(nom,nport); //copie contenu de nport dans nom
NbBits = Pbits;
Parite = Pparite;
NbStops = Pstop;
Flux = Pflux;
Vitesse = Pbaud;
}

/************************************************
* Nom : Ouvrir(void)
* Description: Ouverture et configuration du port
************************************************/

void PortCom::Ouvrir(void)
{
int XRecep;
int XTrans;
int RTS;
        //Ouverture d'un port serie
hPortCom = CreateFile(nom,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if ( hPortCom == INVALID_HANDLE_VALUE )
 {
  cout << "Le port selectionné ne peut etre ouvert ou l'est deja" ;
 }
else
 {
 }
        // Paramètres du port hcomm
GetCommState(hPortCom,&configuration); // Récupère les infos pour configurer le port
      // Configuration des différents champs
configuration.BaudRate=Vitesse;  //vitesse
configuration.Parity=Parite;   //parite
configuration.ByteSize=NbBits;  //nombre de bits
configuration.StopBits=NbStops;  //bit de stop
      //Contrôle de flux
configuration.fInX=...........;          //Xon-Xoff: 0:désactiver,1:activer
configuration.fOutX=........;         //Xon-Xoff: 0:désactiver,1:activer
configuration.fRtsControl=..........;    //RTS-CTS
      //Modifie les paramètres du port à partir du DCB
SetCommState(hPortCom,&configuration); // Mise à jour des champs
}



Cette discussion est classée dans : serie, machine, liaison, effectuer


Répondre à ce message

Sujets en rapport avec ce message

Comment faire une liaison serie en c++ ??? [ par Arcocide ] Voila mon prob : je dois effectuer un liaison serie en c++ avec Builder enter un PC et une machine. Comment definir le port, et comment envoyer une li Comment faire une liaison serie en c++ ??? [ par Arcocide ] Voila mon prob : je dois effectuer un liaison serie en c++ avec Builder enter un PC et une machine. Comment definir le port, et comment envoyer une li Comment faire une liaison serie en c++ ??? [ par Arcocide ] Voila mon prob : je dois effectuer un liaison serie en c++ avec Builder enter un PC et une machine. Comment definir le port, et comment envoyer une li liaison RS232 entre PC et machine [ par VolaiL ] J'ai actuellement à réaliser lors de mon stage une applicaiton C++ qui permettrait de communiquer entre un PC et une machine ( un kardex pour ceux qui recherche d un code source liaison serie [ par chupeau ] bonjour,je recherche le code source d'une liaison serie de type CGPIBentre un pc et un oscilloscope.C'est liaison devra relever des tensions en sortie Gros probleme avec une liaison serie [ par cmoilastar ] Bonjour tout le monde, voila j'ai besoin de connaître les informations qui transittent par mon port série qui est relié a un banc de mesure afin de po envoi sms via liaison serie (C/C++) (siemens c45) [ par Esus ] bonjoursJe suis en 2eme annee de bts info. et j'ai un projet a realiser.je dois communiquer avec un tel portable en c/c++ (siemens c45) via une liaiso Liaison serie [ par Adri_52 ] Quelqu'un aurai le code d'une liaison serie RS232 en borland c++merci Liaison serie rs232 [ par Adri_52 ] Quelqu'un pourrait m expliquer comment fait on pour ouvrir et envoyer sur une liaison serie rs232 dans un environnement DOS.(sans windows.h)Merci serie d'image bmp à partir de vidéo AVI [ par little_bius ] Bonjour,Je voudrai savoir s'il est possible de transformer une vidéo au format AVI en une série d'image bmp.Par exemple si on a une vidéo de 30 second


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,296 sec (4)

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