java-flash 2015-12-15 22:02 采纳率: 75%
浏览 1610
已采纳

mfc串口数据绘制波形图,能否帮我看下这样处理是什么意思,尤其是for循环里面,急急急,拜托了

COleSafeArray m_number;
long length,i;
BYTE data[600];
int ai=0,bi=0,ci=0,di=0;
int sum=0;
m_number=ch; //将WPARAM ch转化为COleSafeArray形变量
length=m_number.GetOneDimSize(); //确定数据长度
for(i=0;i<length;i++)
m_number.GetElement(&i,data+i);
for(i=0;i<length-1;i++)
{
CString tmstr;
if(*(data+i)==45)
{
BYTE a,b,c,d;
a=*(data+i+1)-48;
b=*(data+(i+3))-48;
c=*(data+(i+4))-48;
d=*(data+(i+5))-48;
i=i+5;
ai=a,bi=b,ci=c,di=d;
sum=((ai*1000+bi*100+ci*10+di)*(-1));
LineHight[751]=sum+9000;
Drawing_preparation();
}
else
{
BYTE a,b,c,d;
a=*(data+i)-48;
b=*(data+(i+2))-48;
c=*(data+(i+3))-48;
d=*(data+(i+4))-48;
i=i+5;
ai=a,bi=b,ci=c,di=d;
sum=((ai*1000+bi*100+ci*10+di)*(-1));
LineHight[751]=sum+9000;
Drawing_preparation();

    }

展开全部

  • 写回答

1条回答 默认 最新

  • threenewbee 2015-12-15 22:12
    关注

    a b c d各自表示一个数据的千位、百位、十位、个位的ascii值,这里根据字符串的值得到对应的整数。至于为什么减掉48,因为48是'0'的ascii,49是'1',以此类推。
    sum=((ai*1000+bi*100+ci*10+di)*(-1));用它合成完整的数值。data + i就是data[i],data +( i + 1)就是data[i + 1];
    其实有现成的函数atoi可以将字符串转换成数字的,这代码写得也够奇葩的了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 Mysql 一张表同时多人查询和插入怎么防止死锁
  • ¥20 centos6.7 安装libevent库.总是报错,如何解决?
  • ¥15 电脑买回,学校的有线网络总掉。
  • ¥20 关于普洛菲斯触摸屏与AB连接地址问题
  • ¥15 vue但是页面显示的数据为空为什么呀,明明在钩子函数中已经成功赋值(相关搜索:输出数据)
  • ¥15 syri可视化不显示插入缺失
  • ¥30 运行软件卡死查看系统日志分析不出来
  • ¥15 C语言代码改正特征选择算法设计,贝叶斯决策,,设计分类器,远程操作代码修正一下
  • ¥15 String 类valuve指向的问题
  • ¥15 在ros2的iron版本进行编译时遇到如下问题
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部