串口通讯问题
DCB PortDCB;
PortDCB.DCBlength = sizeof (DCB);
if(hPort)
{
return FALSE;
}
//打开串口
hPort = CreateFile (_T("COM2:"), GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING,0, NULL);
//如果打开端口出错, 返回FALSE
if ( hPort == INVALID_HANDLE_VALUE )
{
//不能打开端口
MessageBox(TEXT("直流打不开,请重启!!! "),TEXT("提示!"),MB_ICONASTERISK);
return FALSE;
}
//指定端口监测的事件集
SetCommMask (hPort, EV_RXCHAR);
//分配设备缓冲区
SetupComm(hPort,1024,1024);
//初始化缓冲区中的信息
PurgeComm(hPort,PURGE_TXCLEAR|PURGE_RXCLEAR);
//配置串行端口
//得到端口的默认设置信息
GetCommState (hPort, &PortDCB);
//改变DCB结构设置
PortDCB.fBinary = TRUE; //Win32不支持非二进制串行传输模式,必须为TRUE
PortDCB.fParity = TRUE; //启用奇偶校验
///////
PortDCB.fDtrControl = DTR_CONTROL_DISABLE; //启用DTR线DTR_CONTROL_ENABLE
PortDCB.fOutX=PortDCB.fInX=PortDCB.fTXContinueOnXoff=0;
PortDCB.fRtsControl = RTS_CONTROL_DISABLE; //启用RTS线 RTS_CONTROL_ENABLE RTS_CONTROL_DISABLE
PortDCB.BaudRate = 9600; //波特率 m_Btl
PortDCB.ByteSize = 8; //每字节的位数m_Sjw
PortDCB.Parity = NOPARITY; //奇偶校验m_Jybz SPACEPARITY;//EVENPARITY;//ODDPARITY;//NOPARITY
PortDCB.StopBits = ONESTOPBIT; //ONESTOPBIT每字节一位停止位m_Tzw
//根据DCB结构配置端口
SetCommState (hPort, &PortDCB);
以上是串口初始化,假如只是设置波特率、校验、数据位、停止位时,其余不设置用默认值,是否可行?
我的串口通讯,24小时不间断运行,有时过几天或者几十天甚至上百天就死机,一直没有找到原因。
还望得到高手指点!