Windows - C ++ Kommunikation via COM Port

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan man kommunikere med en enhed via en COM-port med C ++? Er der et Windows-bibliotek, der håndterer dette?


Tak på forhånd.


EDIT: Jeg bruger Windows.

Bedste reference


En masse prøvekode på nettet, hvis du Google. Her er et eksempel: http://members.ee.net/brey/Serial.pdf[6]

Andre referencer 1


Du kan bruge de generelle fil I/O API-opkald som CreateFile() og ReadFile() for at opnå dette. Yderligere opkald som GetCommState() og SetCommState() kan bruges til at ændre de forskellige indstillinger af seriel porten, når den er åbnet.


HANDLE hSerial;
hSerial = CreateFile(
    "COM1",
    GENERIC\_READ | GENERIC\_WRITE,
    0,
    0,
    OPEN\_EXISTING,
    FILE\_ATTRIBUTE\_NORMAL,
    0);
if(hSerial==INVALID\_HANDLE\_VALUE)
{
    if(GetLastError()==ERROR\_FILE\_NOT\_FOUND)
    {
        //serial port does not exist. Inform user.
    }
    //some other error occurred. Inform user.
}


DCB dcbSerialParams = {0};
dcbSerial.DCBlength=sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams))
{
    //error getting state
}
dcbSerialParams.BaudRate=CBR\_19200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(hSerial, &dcbSerialParams))
{
    //error setting serial port state
}