Red de conocimiento informático - Material del sitio web - Programación basada en puerto serie

Programación basada en puerto serie

1 Abrir puerto serie

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 & dcb);

3. Recibir y enviar datos

//Lectura síncrona Puerto serie

p>

char str[100];

DWORD wCount//Número de bytes leídos

BOOL bReadStat

bReadStat=ReadFile (hCom, str, 100, & ampwCount, NULL);

If (!Bread table)

{

AfxMessageBox("¡Error al leer el puerto serie!");

Devolver FALSO

}

Devolver VERDADERO

//Escribir 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);