求助MScomm 通讯时间 问题
各位大神好,
最近用MScomm做串口通讯,需要实时的获取一些参数来进行控制,但是按照事件响应的方法,测试过接收数据的时间居然达到了35ms,这对我的程序来说是严重滞后的。有什么其他办法能加快速度吗?
在线等啊!!!!!
代码的主要部分:
初始化:
if(m_cComm1.get_PortOpen())
m_cComm1.put_PortOpen(FALSE);
m_cComm1.put_CommPort(11);
m_cComm1.put_InputMode(1);
m_cComm1.put_InBufferSize(1024); //设置输入缓冲区
m_cComm1.put_OutBufferSize(512); //设置输出缓冲区
m_cComm1.put_Settings(_T("9600,n,8,1"));//波特率,无校验,个数据位,个停止位
if(!m_cComm1.get_PortOpen())
{
m_cComm1.put_PortOpen(TRUE); //打开串口
m_cComm1.put_RThreshold(1); //每当接收缓冲区有个字符则接收串口数据
m_cComm1.put_InputLen(0); //设置当前缓冲区长度为
m_cComm1.get_Input(); //预读缓冲区以清除残留数据
}
else
AfxMessageBox("打开端口失败!",MB_ICONSTOP,0);
事件处理:
VARIANT variant_inp2;
COleSafeArray safearray_inp2;
long len2,k2;
byte rxdata2[512]; //设置BYTE数组
CString strtemp2;
//m_strRecvData2.Empty();
if(m_cComm2.get_CommEvent()==2) //值为表示接收缓冲区内有字符
{
variant_inp2=m_cComm2.get_Input(); //读缓冲区消息
safearray_inp2=variant_inp2; ///变量转换
len2=safearray_inp2.GetOneDimSize(); //得到有效的数据长度
for(k2=0;k2<len2;k2++)
safearray_inp2.GetElement(&k2,rxdata2+k2);
for(k2=0;k2<len2;k2++) //将数组转换为CString型变量
{
char bt=*(char*)(rxdata2+k2); //字符型
strtemp2.Format("%c",bt); //将字符送入临时变量strtemp存放
m_strRecvData2+=strtemp2; //加入接收编辑框对应字符串
}
}
CString temp=""; //显示完成后要自动换行
m_strRecvData2+=temp;
UpdateData(FALSE); //更新编辑框内容