关于CSerialPort类,多次调用initPort()函数后出现错误
炼气士 2010-04-08 01:10:32 需要在串口通信收发数据时改变串口的校验位,发用M校验,收用S校验,于是在收发是多次调用initPort()函数,初始化串口,运行时报错为“警告:BuildDCB()因以下原因出错,参数不正确 串口1”。请教错误在哪里,应该如何实现。
部分代码:
CDialog::OnTimer(nIDEvent);
if (bDualParity)
{
if (bDualParity==3)
{
exDCB.Parity = 'S';
}else
exDCB.Parity = 'M';
// CommPort.RestartMonitoring ();
// CommPort.ClosePort();
IsOpenCommOK=CommPort.InitPort(this, m_comNo+1,exDCB.BaudRate,exDCB.Parity,exDCB.ByteSize,
exDCB.StopBits,EV_RXCHAR,exDCB.wReserved,exDCB.wReserved1);
if(!IsOpenCommOK)
{
TRACE("INIT com %d failed\n",m_comNo+1);
AfxMessageBox("不能初始化串口, 请检查串口是否已经被占用!");
}
else
{
CommPort.StartMonitoring();
TRACE("com%d is OK\n", m_comNo+1);
}
}