cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1344|回复: 12

[求助]版主您好,请教一个问题,麻烦帮我看看

[复制链接]
发表于 2005-4-30 01:55:14 | 显示全部楼层 |阅读模式
<></P>
<>求教:
</P>
<>这是我写的一个串口接收程序,我现在需要把Readbuffer中的字符串(是16进制的字符串)转换成它对应的十进制值。我看了你写的“把接收到的ASCII转换成数值”的例子后,发现如果在你例子的string里输入十六进制字符后如0A,在无符号8位数组中能显示它的十进制值10,我想你的例子应该也有16转10的功能,想把它连到我的例子的Reaadbuffer后,用Reaadbuffer作为string to byte array 的输入,可发现无符号8位数组中显示的是每个从Reaadbuffer中读出的字符的ASCII码对应的十进制的值,如Reaadbuffer中读出的是04,无符号8位数组中显示的是48,52。而我想得到的是04H的十进制值4,所以想问问斑竹是我的程序错了还是有别的办法转换?能否帮我修改一下程序(把Reaadbuffer中的十六进制字符转换成与其对应的十进制值)?谢谢斑竹了!</P>[em06]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2005-4-30 08:13:25 | 显示全部楼层
<>你是说把从串口出来的字符直接转换为10进制吗?我想问一下从串口出来的字符是单纯的字符还是有进制的数?我是往单板机的寄存器里写入我原来要送的十六进制数的ASCII码,比如我原来要送入串口的数是04H,05H.但我写入寄存器的是0和4,0和5的ASCII码,即30H,34H,30H,35H,然后从串口的Readbuffer出来的是0405,我不知道Readbuffer中的0405是代表我原来要送的04H,05H呢还是单纯的字符?而我现在要做的就是把Readbuffer中的0405转换为我认为是代表04H,05H两个十六进制数的对应的十进制的值,即4和5。谢谢你能给我回帖,我是个新手,有很多不清楚的地方,还望你能多多指导。</P>
发表于 2005-4-30 10:08:54 | 显示全部楼层
发表于 2005-4-30 20:57:05 | 显示全部楼层
<>兄弟你所说的这个:“change ASCII to string 也就是有十六进制字符转换成十进制数的vi连到我那个串口通信vi”,我这里需要说一下的是,当一个STRING在NORMAL DISPLAY情况下显示出来的不是发下去的,真正发下去的是在它显示为HEX DISPLAY形式下显示出来的,这时候所见到的就是所发出去的!</P>
发表于 2005-4-30 21:01:07 | 显示全部楼层
哦,好像我看错了你的意思,我再看一遍!
发表于 2005-4-30 21:05:44 | 显示全部楼层
<>你所说的:“而我要转换的正是readbuffer中读出的04H这个十六进制数对应的十进制的值4。”这一个我做的一个例子是可以做到的,我做过了,那个贴子上有的,你看一下!</P><>你还提到的:“如果readbuffer中读出的是没有数值意义的字符,那是不是可以把这些字符转换成有数值意义的数呢?比如16进制的数?”这一个其实就是上面这一个回答,就是能将它转成NUMERIC的形式的,读回来若是以NORMAL DISPLAY的话,它看起来真的是没有任何实在意义的!</P>
发表于 2005-4-30 21:08:25 | 显示全部楼层
<>http://www.cpubbs.com/old_bbs/di ... 1396&amp;page=6</P><>应该是这个例子,转成了STRING以后,再加一个节点转换成NUMERIC就简单了,这样就能达到你的要求了!</P>
发表于 2005-4-30 04:20:42 | 显示全部楼层
16进制STRING转换为10进制STRING,我原来做过,不过这个SUBVI现在找不到了,等几天再做一下看
 楼主| 发表于 2005-4-30 20:40:33 | 显示全部楼层
<>cpubbs你好,你给的这些例子我都看过了,而且是有16转10,10转16 的subvi,可这也正好是我的问题所在:我把你的那个:change ASCII to string 也就是有十六进制字符转换成十进制数的vi连到我那个串口通信vi的readbuffer后,我想用readbuffer中的字符作为string to byte array 的输入,可是无符号8位数组中存入的是readbuffer中每个字符所对应的ASCII 码的十进制值!比如:我发送的是04H这个十六进制数的ASCII 码30H34H,readbuffer中读出的是04两个数字,但无符号8位数组中存入的是我送入寄存器的是ASCII 码30H和34H对应的十进制值即48,52,我就不明白这个04是我要的十六进制数04H呢还是单纯的没有任何数值意义的字符?而我要转换的正是readbuffer中读出的04H这个十六进制数对应的十进制的值4。我想问问斑竹如果readbuffer中读出的是没有数值意义的字符,那是不是可以把这些字符转换成有数值意义的数呢?比如16进制的数?希望斑竹能看看我上面的那个程序框图,帮我修改一下,将感激不尽!</P>
 楼主| 发表于 2005-5-2 01:07:08 | 显示全部楼层
谢谢cpubbs,我今天找到了问题所在:其实从readbuffer显示的就是我送进去的十六进制数,只不过我在它的属性里设为normal,所以一直就不能转换为我想得到的值。谢谢cpubbs帮助我!不过还有一个问题想问问就是转换成正确的值以后我想把他们一个一个存入数组中,我是一个一个单发的,想用build array节点把它们组成数组,但我发现每次appended array中只存入了最后一次转换的那个数,能有什么办法把每次转换完的数值依次存入数组中?
发表于 2005-5-2 01:50:51 | 显示全部楼层
你是一次收到一个数的,然后插进去数组上一次一个数这就是对的呀!也有可能我理解有误!
 楼主| 发表于 2005-5-2 03:33:04 | 显示全部楼层
谢谢cpubbs,可能是我没说清楚,我的意思是把每次读出来的数存入数组中,每次都是按先后顺序存入数组。不过现在问题已经解决了。我用了一个FOR循环加移位寄存器把读出来的数一个一个移入数组中,发现可以满足我的要求。这几天真的非常谢谢你能帮我出主意,感觉学到不少东西。呵呵!以后可能还有很多问题需要你帮助。3ks,cpubbs
发表于 2005-5-2 08:30:51 | 显示全部楼层
不客气,有空常来我们网站玩哈!也多介绍朋友过来,这就是对我们最大的支持呀,呵呵,先谢谢了![em31]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-5-6 22:00 , Processed in 0.761094 second(s), 7 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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