Programación DCB
Procesar hCom//variable global, identificador de puerto serie
hcom = crear archivo(" com 1 ",//com 1 puerto.
GENERIC_READ |GENERIC_WRITE, //Permitir lectura y escritura
0, //Modo exclusivo
Vacío,
OPEN_EXISTING, //Abrir en lugar de crear.
0, //Modo de sincronización
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox("¡Error al abrir COM!");
Devuelve FALSO
}
Devuelve VERDADERO
2. Parámetros de configuración
Tiempo de espera COMMTIMEOUTS;
//Establecer tiempo de espera de lectura
Pausa. ReadIntervalTimeout = 1000;
Pausa. ReadTotalTimeoutMultiplier = 500;
Pausa. ReadTotalTimeoutConstant = 5000
//Establecer tiempo de espera de escritura
Pausa. WriteTotalTimeoutMultiplier = 500;
Pausa. WriteTotalTimeoutConstant = 2000;
SetCommTimeouts(hCom & timeout); //Establecer tiempo de espera
DCB dcb
GetCommState(hCom &dcb);
dcb. velocidad en baudios = 9600; //La velocidad en baudios es 9600.
dcb. ByteSize = 8; //Cada byte tiene 8 bits.
dcb. Paridad = NOPARITY // Sin bit de paridad
dcb. StopBits = TWOSTOPBITS//Dos bits de parada
SetCommState(hCom & amp; dcb);
3. Recibir y enviar datos
//Lectura síncrona Puerto serie
char str[100];
DWORD wCount//Número de bytes leídos
BOOL bReadStat
bReadStat=ReadFile (hCom, str, 100, & ampwCount, NULL);
If (!Tabla de pan)
{
AfxMessageBox("¡Error al leer el puerto serie!");
Devolver FALSO
}
Devolver VERDADERO
//Escribe el puerto serie sincrónicamente
búfer char LPO [ 100];
DWORD dwbytes escritura = 100;
COMSTAT ComStat
DWORD dwErrorFlags
BOOL bWriteStat
ClearCommError(hCom y dwErrorFlags.
ComStat);
bWriteStat=WriteFile(hCom, lpOutBuffer, dwBytesWrite y ampdwBytesWrite, NULL);
if (!bWriteStat)
{
AfxMessageBox("¡Error al escribir en el puerto serie!");
}
PurgeComm(hCom, PURGE_TXABORT|
PURGE _ rx abort | PURGE _ tx borrar | PURGAR _ rx borrar);