C/Visual C - POR FAVOR AYUDAAA!

 
Vista:

POR FAVOR AYUDAAA!

Publicado por Mario (3 intervenciones) el 25/12/2001 16:20:49
¿Alguien sabe como realizar la comunicacion serial asincrona con Visual c++5.0?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:POR FAVOR AYUDAAA!

Publicado por Diego G. Ruiz (41 intervenciones) el 26/12/2001 10:51:46
Para manipular el puerto serie desde Visual C++ se utilizan las funciones, ReadFile y WriteFile (¡como si fuera un archivo!). Aquí te dejo un ejemplo de como inicializar el puerto y dejarlo listo para el uso del mismo con las funciones que te comenté.

HANDLE m_hComm;
int m_status;
char * szPort = new char[10];
char * szPortNumber = new char[3];

// Creo el nombre del puerto en función del parámetro de entrada
strcpy(szPort, "COM");
itoa(nCommPort, szPortNumber, 10);
strcat(szPort, szPortNumber);

m_hComm = CreateFile(
szPort,
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security attrs
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);

// Elimino la memoria asignada
delete szPort;
delete szPortNumber;

if (m_hComm == INVALID_HANDLE_VALUE)
{ m_errorCode = GetLastError();
m_pCommSem->Unlock();
return FALSE;
}

A partir de aqui puede escribir el puerto serie de la siguiente manera:
(lpBuf y nBufLen es pasado como parámetro)

DWORD lNumberOfBytesWritten;

char * pBuf = (char *) lpBuf;
for (short i=0; i<nBufLen; i++)
{
WriteFile(m_hComm, (const void *) pBuf, 1, &lNumberOfBytesWritten, NULL);
pBuf++;
}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar