auto 发表于 2005-4-30 01:55:14

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

<P></P>
<P>求教:
</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>

auto 发表于 2005-4-30 08:13:25

<P>你是说把从串口出来的字符直接转换为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>

cpubbs 发表于 2005-4-30 10:08:54

<P>http://www.cpubbs.com/old_bbs/dispbbs.asp?boardID=4&amp;ID=1510&amp;page=1</P><P>这里找一个合适于你的吧兄弟!</P>

cpubbs 发表于 2005-4-30 20:57:05

<P>兄弟你所说的这个:“change ASCII to string 也就是有十六进制字符转换成十进制数的vi连到我那个串口通信vi”,我这里需要说一下的是,当一个STRING在NORMAL DISPLAY情况下显示出来的不是发下去的,真正发下去的是在它显示为HEX DISPLAY形式下显示出来的,这时候所见到的就是所发出去的!</P>

cpubbs 发表于 2005-4-30 21:01:07

哦,好像我看错了你的意思,我再看一遍!

cpubbs 发表于 2005-4-30 21:05:44

<P>你所说的:“而我要转换的正是readbuffer中读出的04H这个十六进制数对应的十进制的值4。”这一个我做的一个例子是可以做到的,我做过了,那个贴子上有的,你看一下!</P><P>你还提到的:“如果readbuffer中读出的是没有数值意义的字符,那是不是可以把这些字符转换成有数值意义的数呢?比如16进制的数?”这一个其实就是上面这一个回答,就是能将它转成NUMERIC的形式的,读回来若是以NORMAL DISPLAY的话,它看起来真的是没有任何实在意义的!</P>

cpubbs 发表于 2005-4-30 21:08:25

<P>http://www.cpubbs.com/old_bbs/dispbbs.asp?boardID=4&amp;ID=1396&amp;page=6</P><P>应该是这个例子,转成了STRING以后,再加一个节点转换成NUMERIC就简单了,这样就能达到你的要求了!</P>

vi123 发表于 2005-4-30 04:20:42

16进制STRING转换为10进制STRING,我原来做过,不过这个SUBVI现在找不到了,等几天再做一下看

auto 发表于 2005-4-30 20:40:33

<P>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>

auto 发表于 2005-5-2 01:07:08

谢谢cpubbs,我今天找到了问题所在:其实从readbuffer显示的就是我送进去的十六进制数,只不过我在它的属性里设为normal,所以一直就不能转换为我想得到的值。谢谢cpubbs帮助我!不过还有一个问题想问问就是转换成正确的值以后我想把他们一个一个存入数组中,我是一个一个单发的,想用build array节点把它们组成数组,但我发现每次appended array中只存入了最后一次转换的那个数,能有什么办法把每次转换完的数值依次存入数组中?

cpubbs 发表于 2005-5-2 01:50:51

你是一次收到一个数的,然后插进去数组上一次一个数这就是对的呀!也有可能我理解有误!

auto 发表于 2005-5-2 03:33:04

谢谢cpubbs,可能是我没说清楚,我的意思是把每次读出来的数存入数组中,每次都是按先后顺序存入数组。不过现在问题已经解决了。我用了一个FOR循环加移位寄存器把读出来的数一个一个移入数组中,发现可以满足我的要求。这几天真的非常谢谢你能帮我出主意,感觉学到不少东西。呵呵!以后可能还有很多问题需要你帮助。3ks,cpubbs

cpubbs 发表于 2005-5-2 08:30:51

不客气,有空常来我们网站玩哈!也多介绍朋友过来,这就是对我们最大的支持呀,呵呵,先谢谢了!
页: [1]
查看完整版本: [求助]版主您好,请教一个问题,麻烦帮我看看