问题描述
我正在使Windows Console应用程序通过COM端口写入和读取数据。 但是,尽管COM端口已成功打开,但我无法发送和接收任何数据。
“打开COM端口”代码:
unsigned int c;
LPCWSTR portCom;
TCHAR ComString[30];
HANDLE hComm;
DCB port;
int main(int argc,char* argv[])
{
// Open COM port
_stprintf_s(ComString,11,_T("\\\\.\\COM3"));
hComm = CreateFile(ComString,GENERIC_READ | GENERIC_WRITE,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
if (hComm == INVALID_HANDLE_VALUE)
{
abort();
}
memset(&port,sizeof(port));
port.DCBlength = sizeof(port);
if (!::GetCommState(hComm,&port))
{
abort();
}
port.Baudrate = CBR_115200;
port.ByteSize = 8;
port.Parity = nopARITY;
port.StopBits = OnesTOPBIT;
if (!::SetCommState(hComm,&port))
{
abort();
}
“发送和接收数据”代码:
// Send and receive data
unsigned char sendData[8];
unsigned int rcvData = 0;
DWORD dwWritten;
DWORD dwRead;
sendData[0] = 'A';
WriteFile(hComm,&sendData[0],1,&dwWritten,NULL);
dwRead = 0;
while (dwRead == 0) {
ReadFile(hComm,&rcvData,&dwRead,NULL);
}
return 0;
}
解决方法
我解决了我的问题。 我发现使用CreateFas 0打开COM端口时需要设置FLAG。 谢谢大家。