串口设置问题!SetCommState函数!
各位大侠好,我最近在调试一个串口程序遇到个很奇怪的问题,我在SetCommState串口时总是返回0,也就是设置失败,用GetLastError函数得到是87, 好像是参数错误!很奇怪 我在另一个程序中也是这么设置,而且也是可以通信的,把代码给各位看看!
if ((m_idComDev=CreateFile(strComPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL))==(HANDLE)-1)
{
MessageBox(_T("打开串口失败!"),_T("警告"));
return FALSE;
}
RETAILMSG(1, (_T("[PLCDrv] CPLCDrvDlg::OpenConnection CreateFile com=%d ++++ \r\n"),strComPort));
DCB dcb;
//dcb.DCBlength=sizeof(DCB);
BOOL cc =GetCommState(m_idComDev,&dcb);
dcb.BaudRate = 115200;
dcb.fParity =TRUE;
dcb.fNull = FALSE;
dcb.StopBits = 1;
dcb.Parity = NOPARITY;
dcb.ByteSize = 9;
BOOL bb =SetCommState(m_idComDev,&dcb);
DWORD dw =GetLastError();
现在串口已经打开成功了。但是BOOL bb =SetCommState(m_idComDev,&dcb);一直是0.我调试发现dcd参数也是改变了的!不知道什么原因!还请各位帮我看看这个问题!
[解决办法]
说不定波特率不支持那么高的.
[解决办法]
mark,学习下
帮顶下。
[解决办法]