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.