C++ 中怎样提取串口控件(MSCOMM)接收到数据帧。 我的QQ314011953 希望得到您的帮助

小弟是初学者,最近在帮老师做个课题,主要负责上位机程序的编写,主要用于监控各下位机的状态,数据的存储,对下位机状态的指示功能。可是用MSCOMM控件接受到串口数据后无法将... 小弟是初学者,最近在帮老师做个课题,主要负责上位机程序的编写,主要用于监控各下位机的状态,数据的存储,对下位机状态的指示功能。
可是用MSCOMM控件接受到串口数据后 无法将每一帧数据完成的提取出来进行判断。求教各位高手 帮帮我 老师整天催着 心急如焚啊
void CWatchDlg::OnComm()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
//定义一些临时变量
VARIANT variant_inp;
COleSafeArray safearray_inp;
long i=0;
long len;
BYTE rxdata[2048];
char RxTemp[512];
char *k,*q;
char jyz1,jyz2;
switch(m_ctrlComm.GetCommEvent())
{
case 2: //表示接收缓冲区内有字符
{
//读取缓冲区数据
variant_inp=m_ctrlComm.GetInput();
//将VARIANT型变量值赋给ColeSafeArray类型变量
safearray_inp=variant_inp;
//获得数据长度
len=safearray_inp.GetOneDimSize();
//将数据保存到字符数组中
for(i=0;i<len;i++)
{
safearray_inp.GetElement(&i,&rxdata[i]);
RxTemp[j++]=rxdata[i];
if(j==512) j=0;
if(RxTemp[j]=='$')
{
flagh=j;
temp=&RxTemp[j];
}
if(RxTemp[j]==0x0A)
{
flagl=j;
flag=1;
}
}
//字符串结束
rxdata[i]='\0';

}

m_RXData += rxdata;
UpdateData(false);
if(flag==1)
{

flag=0;

/*while(*temp=='$')
{
temp++;
}*/
k=temp;
jyz1=jiaoyan(k+1);
while(*k='*')
{
k++;
}
q=k;
jyz2=twotoone(q+1);
if(jyz1!=jyz2)
MessageBox("校验错误");

else//校验正确 进行数据的 处理解包
{
while(*temp=='$'&&*(temp+3) =='S'&&*(temp+4)=='N')
{
.....
}
}
生成的Oncomm相应函数 主要是处理串口数据的接受 它是每当串口中有数据时出发次函数 可是 比如我接受到的一帧数据如下:$SSA01010052*,我现在是无法将这些一帧一帧的数据提取出来进行位的判断。串口是接受到了数据 但是不知道存在哪了 想了很多办法 还是无法提取完整的提取出来
展开
 我来答
kykiktty
2010-09-17 · TA获得超过5829个赞
知道小有建树答主
回答量:872
采纳率:0%
帮助的人:1116万
展开全部
你用的是COM3串口吗?那是扩展卡吧。把设备接到主板的COM1口上,然后指定“MSComm1.CommPort = 1”属性试一下连接状况。因为设备接收到符合通讯规约的数据才会有正确反应,向电脑回传,所以有可能你发送成功了,但设备并未相应对它来说无意义的信息。检测发送与接收是否成功,可以直接短接2、3阵脚,接收的数据即为发送的内容。ONComm事件就可以激发了。安装接受的数据设置相应的InputMode属性。如果是文本,指定适当的Rthreshold属性效率更好吧。
萍水e相逢
2010-09-13 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.4亿
展开全部
添加 mscomm 控件时,不是 生成 了相应 函数嘛?

建议看经典书籍

Visual C++_Turbo C串口通信编程实践
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式