MFC 串口通讯接收数据不连续怎么办
我现在用MFC中MSComm控件编写了一段串口通讯程序,目的是实现与DSP的通信,基本过程是这样的,MSComm串口初始化成功之后发送一包数据给DSP,DSP验证正确之后返回一包数据,由于DSP该一次只能发送一个字节,所以每包数据都是一次一个字节,连续发送好多个,编译链接都没问题,但在运行的时候发现DSP连续发送的一包数据串口接收的时候被当作好多包数据,也就是说我一次发一个连续发了三个,接收的时候被当作三包数据,每包一个,怎么回事呢,串口初始化程序,以及接收程序如下:
/*串口通讯初始化 */
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(COM_Port); //选择com口
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("115200,n,8,1");
m_ctrlComm.SetInputMode(1);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.SetInputLen(0);
/*数据接收*/
void CSubwayTraction_ControllerDlg::OnOnCommMscomm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
RXD_len=len;
}
}
在上面这段程序的最后得到的有效数据长度为一
找了好久,都没发现什么解决办法,很着急,各位高手帮忙看看,谢谢啦