求助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); //更新编辑框内容
最近用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); //更新编辑框内容
...全文
相关推荐
VBA下基于MSCOMM串口通讯实例.rar
在本实例中,“VBA下基于MSCOMM串口通讯实例”着重展示了如何利用VBA与外部设备进行串口通信,特别是通过MSCOMM控件来实现这一功能。
LabVIEW 串口通讯MSCOMM控件安装包
LabVIEW 串口通讯MSCOMM控件安装包第一步:将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹中C:\windows\system32\。第
PB串口通讯例子(MsComm32)
通过PB_串口通讯例子这个项目,我们可以学习如何在PowerBuilder环境中集成MsComm32控件,以及如何编写串口通讯的代码。
DELPHI+MSComm串口通讯实例
DELPHI+MSComm串口通讯实例是一种在DELPHI编程环境下使用MSComm控件进行串行通信的应用示例。
VS2013基于MSCOMM的MFC串口通讯程序
该资源适合编写串口通讯程序的初学者和高级开发者。知识点1:下载串口控件MSCOMM控件是串口通讯程序的核心组件。用户需要下载MSCOMM控件,并将其解压到系统目录下。


网络及通讯开发
