作者tkcn (小安)
看板java
标题Re: 关於 RS232 传输接收资料
时间Thu Jul 31 03:40:00 2008
※ 引述《poc7667 (poc)》之铭言:
: 再写有关这类的程式
: 我输入的资料是从Java Text Area读取 "86 00 00 00 01 82 05 "
: 类似这样的字串
: 然後就直接给他写入
: outputStream.write(output.getText().getBytes());
: 在Java Text Area资料格式应该是字串,RS232应该是吃"16进位数值资料"
: 这样直接丢过去会不会有错呢?or应该如何做个转换才好。
你自己都说是收数值资料罗 :)
以 "86" 来说,这是两个 unicode 字元,
在记忆体中的值为 0x0038 和 0x0036
( 印象中 Java 是 big-endian? 若有错请指正 )
而所谓的数值 86,
就真的是 16 进位中的 86,
在记忆体中的值就是 0x86
所以你写入的值确实是有问题的,
如果要自己转成 "数值" 86,
你可能会需要用到 String 和 Integer 所提供的方法。
读的部份也是一样,
从 RS232 收到的是数值,
必须自己转成 unicode,
才会是你想要看到的数字字串。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.169.116
※ 编辑: tkcn 来自: 61.230.169.116 (07/31 03:42)
1F:推 TonyQ:java是big endian没错, 我之前有去看过 . @see #161cst5- 07/31 10:48
2F:→ tkcn:写到档案确定是big-endian没错,但我不敢肯定记忆体中也是 07/31 14:20