串口问题:接收到字符的总是比我发的少1,而最后发的那个字符则会触发新的一次中断
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
strRXData=_T("");
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
.................
}
其中len=safearray_inp.GetOneDimSize();接收到字符的总是比我发的少1,而我最后发的那个字符则会触发新的一次中断,不知道是怎么回事?本来是一个字符串现在给分成了两次处理
串口初始化步骤如下:
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); //选择COM
m_ctrlComm.SetInputMode(1); //输入方式为二进制方式
m_ctrlComm.SetInBufferSize(1024); //设置输入缓冲区大小
m_ctrlComm.SetOutBufferSize(512); //设置输出缓冲区大小
//波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetSettings("9600,n,8,1");