搜索
bottom↓
回复: 13

c++builder中,用MSCOMM32控件来收串口数据,上位机接显示的都是ASCII码,请问如何显示

[复制链接]

出0入0汤圆

发表于 2008-3-25 10:29:26 | 显示全部楼层 |阅读模式
如题,请用过的高手帮忙回答一下,迷惑了好久了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-3-25 10:33:23 | 显示全部楼层
sprintf 函数

出0入0汤圆

发表于 2008-3-25 10:33:46 | 显示全部楼层
俺是这样解决的

    char          HEX[]              ={"0123456789ABCDEF"};

    ListBoxMain->Items->Add(String("")+ "0x" + HEX[plainttext[0]>>4] + HEX[plainttext[0] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[1]>>4]  + HEX[plainttext[1] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[2]>>4]  + HEX[plainttext[2] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[3]>>4]  + HEX[plainttext[3] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[4]>>4]  + HEX[plainttext[4] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[5]>>4]  + HEX[plainttext[5] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[6]>>4]  + HEX[plainttext[6] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[7]>>4]  + HEX[plainttext[7] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[8]>>4]  + HEX[plainttext[8] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[9]>>4]  + HEX[plainttext[9] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[10]>>4] + HEX[plainttext[0] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[11]>>4] + HEX[plainttext[11] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[12]>>4] + HEX[plainttext[12] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[13]>>4] + HEX[plainttext[13] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[14]>>4] + HEX[plainttext[14] & 0x0F] + ","
                                      + "0x" + HEX[plainttext[15]>>4] + HEX[plainttext[15] & 0x0F]);

出0入0汤圆

 楼主| 发表于 2008-3-25 10:52:24 | 显示全部楼层
那么如何显示十进制数或者符点数?

出0入0汤圆

 楼主| 发表于 2008-3-25 11:07:22 | 显示全部楼层
请问是不是所有的控件(MSCOMM,SPCOMM,COMPORT)接收到的单片机发来的十六进制数据都是ASICC码,那么要想显示实际单片机发来的数值,比如十进制或者浮点数是不是都要处理?如何处理?谢谢

出0入0汤圆

发表于 2008-3-25 11:15:34 | 显示全部楼层
恐怕都得自己转,或者在下位机转,其实都差不多

你的头像很红很暴力

出0入0汤圆

 楼主| 发表于 2008-3-25 11:35:54 | 显示全部楼层
好的,谢谢,.ASCII码有没有转成十六进制的好的方法?比如公式什么的?看到二楼的一大串,就没勇气看完/

出0入0汤圆

发表于 2008-3-25 11:42:06 | 显示全部楼层
俺懒,为了省事,你写个子函数就不长了

出0入0汤圆

 楼主| 发表于 2008-3-25 11:51:51 | 显示全部楼层
呵呵,谢谢楼上的,能请你解释一下吗?
plainttext[0]>>4 + plainttext[0] & 0x0F是什么意思?
刚学不懂你写的意思?谢谢

出0入0汤圆

发表于 2008-3-25 11:54:05 | 显示全部楼层
unsigned char Buf[n];

      //16进制
          IntToHex(Buf[n],2)
      //10进制
       IntToStr(Buf[n])
       //10字符
          本身就是


显示的话直接往一个ansistring上加,然后在memo什么的add

出0入0汤圆

发表于 2008-3-25 12:00:49 | 显示全部楼层
AnsiString s;
s += IntToHex(TmpData[j],2);     //转为16进制

出0入0汤圆

发表于 2008-3-25 13:00:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-3-25 13:00:37 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2008-3-26 14:52:00 | 显示全部楼层
已经搞定了,谢谢各位帮忙,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 14:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表