begin process at 2012 05 26 00:56:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PDA

 > 

Divers

 > 

Compilateurs

 > 

[API win32 sans MFC] Evenement: arrivée de données port série


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

[API win32 sans MFC] Evenement: arrivée de données port série

mardi 23 mai 2006 à 19:47:53 | [API win32 sans MFC] Evenement: arrivée de données port série

nitrique

Bonjour à tous,

Je travaille avec embedded UNICODE pour développer pour windows CE.
J'arrive à récuperer les données arrivées sur le port COM en cliquant sur un bouton,
Or j'aimerais récuperer l'evenement d'arrivées de données pour automatiser la chose.

J'ai essayé en bricolant de moi même, je n'y suis pas arrivé, je viens donc de prendre ce code:
http://c.developpez.com/faq/vc/?page...WithSerialPort

Mais il y a des erreurs du style:
error C2065: 'BuildCommDCB' : undeclared identifier
error C2065: 'GetOverlappedResult' : undeclared identifier
error C2065: 'AfxBeginThread' : undeclared identifier

Comme s'il manquait un bibliothèque... Mais tout devrait se trouver dans windows.h qui est déjà incluse.

Pourquoi ce code ne marche pas ?
Est ce que quelqu'un peut me dire comment (simplement) attacher un evenement au port COM ?

Merci d'avance.

Voici mon code bricolé qui ne marche pas:
int ouvrirPort(int numport) { // Retourne 1 en cas de succès
    //char szPort[16];
TCHAR szPort[15];
    //sprintf(szPort, "\\\\.\\COM%d:", numport);//modifie pour prendre les port com>9
wsprintf(szPort, _T("COM%d:"), numport);
hPort = CreateFile(
(LPCTSTR)szPort, //Pointer to the name of the port
GENERIC_READ|GENERIC_WRITE, //accès en lecture ou en écriture
0,                             //Share mode
NULL,                          //Pointer to the security attribute
OPEN_EXISTING,                 //Cela indique que l'instance sera créée si que le port existe
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //Port attributes
NULL);

if(hPort==INVALID_HANDLE_VALUE) {
return 0;
}

if(!m_Ov.hEvent)
        m_Ov.hEvent=CreateEvent(NULL,   // no security attributes
                                FALSE,  // auto reset event
                                FALSE,  // not signaled
                                NULL    // no name
                                );
   
    SetEvent(m_Ov.hEvent);


DCB PortDCB;
if (!GetCommState (hPort, &PortDCB)) { // Structure de configuration
return 0;
}
// mise à jour de la structure
PortDCB.DCBlength = sizeof (DCB);
PortDCB.BaudRate = 9600;
PortDCB.fBinary = TRUE;
PortDCB.fParity = TRUE;
PortDCB.fOutxCtsFlow = FALSE;
PortDCB.fOutxDsrFlow = FALSE;
PortDCB.fDtrControl = DTR_CONTROL_ENABLE;
PortDCB.fDsrSensitivity = FALSE;
PortDCB.fTXContinueOnXoff = TRUE;
PortDCB.fOutX = FALSE;
PortDCB.fInX = FALSE;
PortDCB.fErrorChar = FALSE;
PortDCB.fNull = FALSE;
PortDCB.fRtsControl = RTS_CONTROL_ENABLE;
PortDCB.fAbortOnError = FALSE;
PortDCB.ByteSize = 8;
PortDCB.Parity = NOPARITY;
PortDCB.StopBits = ONESTOPBIT;

//Renvoie des nouvelles informations dans le registre de votre port série
if (SetCommState (hPort, &PortDCB)) {
GetCommTimeouts(hPort,&m_ComTimeouts);
m_ComTimeouts.ReadIntervalTimeout = 0xFFFFFFFF;
m_ComTimeouts.ReadTotalTimeoutMultiplier = 0;
m_ComTimeouts.ReadTotalTimeoutConstant = 0;
m_ComTimeouts.WriteTotalTimeoutMultiplier = 0;
m_ComTimeouts.WriteTotalTimeoutConstant = 10000;
if (!SetCommTimeouts(hPort,&m_ComTimeouts))
return 0;
memset(&m_OverlappedRead,0,sizeof(OVERLAPPED));
m_OverlappedRead.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
memset(&m_OverlappedWrite,0,sizeof(OVERLAPPED));
m_OverlappedWrite.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
if (m_OverlappedRead.hEvent==NULL || m_OverlappedWrite.hEvent==NULL)
return 0;
if(m_OverlappedRead.hEvent!=NULL)
CloseHandle(m_OverlappedRead.hEvent);
if(m_OverlappedWrite.hEvent!=NULL)
CloseHandle(m_OverlappedWrite.hEvent);

// PRM2: Indique que l'on va détecter la réception (entrée de type DWORD)
SetCommMask(hPort,EV_RXCHAR); // définit les évènements pour lesquels ont va réagir par rapport à notre instance
return 1;
} else
return 0;

}

David, à VERSAILLES
[ Lien ]


Cette discussion est classée dans : port, false, portdcb, hevent, hport


Répondre à ce message

Sujets en rapport avec ce message

envoie de données en hexa par port serie d'un PDA [ par yzmeg ] Bonjour @tous,je cherche à interfacer un PDA (iPAQ) avec un capteur dont les instructions doivent être donné en hexadecimale.cela fait 3 jours que je Problème de Lecture du code d'une télécommande [ par RcrivelliNET ] Bonjours à tous,je cherche a lire le code d'une télécomande de télévision via le port IrDa de mon IPAQ 1915 (Port com 3).je travail sur eVB 3.0.j'ai u Avant de partir en FreeStyle [ par fred23 ] Bonjour,Je voudrais piloter mon modem 3com depuis une Pocket PC du type Ipack ou autre.Donc plusieurs questions:Quel outils de dev VB employer.?Existe Liaison serie [ par barnabe4 ] Bonjour,J'en vois déjà qui vont me dire: "voir les posts sur le sujet car c'est un sujet récurrent!"Je veux juste que l'on me prouve que la liason sér Port IrComm sur PPC [ par Istoobad ] Bonjour,j'utilise la communication série par infrarouge de mon PPC Asus Mypal pour piloter une centrale d'alarme. Avec un peu de galère, j'ai trouvé q port com [ par cedkat ] Bonjour,je voudrais lire sur le port com les trames du gps.Je travaille en c# sous 2003.Merci. Port Compact flash [ par student_001 ] Salut,je posséde une carte WIFI compactFlash(AmbiCom Model:WL1100C-CF), que j'utilise pour la synchronisation SQLServer/SQLServerCE(RDA).Elle bouffe t Port COM + VS.net et C# [ par hetneo ] Bonjour,En effet je souhaite utiliser le port COM present sur mon PDA (Win mobile 2003 SE) pour une communication avec un microcontroleur en programma Evenement sur port COM de Dell Axim x51v. VC++ [ par sissi0280 ] Bonjour, Cherchant à récupérer les trames NMEA en sortie d'un GPS sur port COM, j'ai configuré sous Visual C++ mon port COM de manière à ce que le car C#.NET 1 et port COM [ par NHenry ] BonjourComment accéder (le plus simplement posible) au port COM (IR) d'un PocketPC sous WinCe2003 avec C#.NET 1?Merci d'avance.Il est plus facile de b


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

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