引用: 引用 6 楼 iwillbeback008 的回复:
引用 5 楼 lfchen 的回复:
但是接收要用2~3次串口接收中断处理才能接受完一帧数据!
//这个和接收缓冲区的大小没有关系,只是说明一帧数据触发了多次中断。将字节间超时设置的大一点可以解决这个问题。
//或者将触发中断的输入缓冲区到达字符数设置的大些。
//至于我说的输入缓冲区没有溢出,你可以尝试在多次中断后,再去收取数据,你就可以发现数据都在那里。
那如何设置这个“字节间超时设置”?
//设置串口读写时间
COMMTIMEOUTS CommTimeOuts;
GetCommTimeouts (m_hComm, &CommTimeOuts);
CommTimeOuts.ReadIntervalTimeout =10;//250;//MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier =0;//MAXDWORD;
CommTimeOuts.ReadTotalTimeoutConstant = 0;//MAXDWORD;
CommTimeOuts.WriteTotalTimeoutMultiplier =0;//10; //100
CommTimeOuts.WriteTotalTimeoutConstant = 0;//1000;//500;
具体设置的值为多大,根据波特率调整.