在win7和XP上运行一个用VS2013写的基于MFC的串口通讯的程序时发生错误!
在win7和XP上运行时,程序能够正常运行,点击向串口发送消息时,发生异常,好像是兼容性问题,怎么解决啊?
这是我串口初始化连接程序:
// 连接串口
void CDimLightwin7Dlg::ConnectCom(int port)
{
//打开串口
hCom = CreateFile(COM[port],// 串口名称
GENERIC_READ | GENERIC_WRITE,//允许读和写
0,//独占方式
NULL,
OPEN_EXISTING,// 打开而不是创建
0,//同步方式
NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
SetDlgItemText(IDC_MESSEDIT, _T("read driver...\r\n"));
return;
}
SetDlgItemText(IDC_MESSEDIT, _T("COM open succeed!\r\n"));
//设置输入输出缓存大小
SetupComm(hCom, 1024, 1024);
//设定读超时
COMMTIMEOUTS TimeOuts;
TimeOuts.ReadIntervalTimeout = 1;
TimeOuts.ReadTotalTimeoutMultiplier = 1;
TimeOuts.ReadTotalTimeoutConstant = 1;
//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier = 100;
TimeOuts.WriteTotalTimeoutConstant = 100;
SetCommTimeouts(hCom, &TimeOuts);//设置超时
//配置串口
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = 9600;//波特率为 9600
dcb.ByteSize = 8;//每个字节有 8 位
dcb.Parity = NOPARITY;//无奇偶校验位
dcb.StopBits = ONESTOPBIT;//两个停止位
SetCommState(hCom, &dcb);
ComOpenFlag = 1;
//清空缓存
PurgeComm(hCom, PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_RXABORT);
}
串口发送消息程序:
// 向串口发送数据
void CDimLightwin7Dlg::SendData(unsigned char * TX_data)
{
DWORD dwErrorFlags;
COMSTAT ComStat;
ClearCommError(hCom, &dwErrorFlags, &ComStat);
PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
if (WriteFile(hCom, TX_data, DIMDATALEN + 20, NULL, NULL) == 0)
{
m_MessageEdit.SetSel(-1);
m_MessageEdit.ReplaceSel(_T("写串口失败\r\n"));
return;
}
}