社区
单片机/工控
帖子详情
java 串口通信 数据格式问题
lmya_go
2012-07-30 10:27:39
java 串口通信接收到乱码,怀疑是数据格式的问题,所以想了解一下。
是用C++语言对单片机编程,使单片机传输 unsighed char型(占1个字节)数据。java使用InputStream 类接收数据。
据我了解,inputstream处理的是字节流,那么是否不能接受单片机传来的char型数据,而要用字符流来处理?如果要用字符
流处理的话,java中的字符使用Unicode码,占4个字节,而C++中的字符是ASCII码,占1个字节,这样该怎么处理?
...全文
12107
8
打赏
收藏
java 串口通信 数据格式问题
java 串口通信接收到乱码,怀疑是数据格式的问题,所以想了解一下。 是用C++语言对单片机编程,使单片机传输 unsighed char型(占1个字节)数据。java使用InputStream 类接收数据。 据我了解,inputstream处理的是字节流,那么是否不能接受单片机传来的char型数据,而要用字符流来处理?如果要用字符 流处理的话,java中的字符使用Unicode码,占4个字节,而C++中的字符是ASCII码,占1个字节,这样该怎么处理?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Frog1228
2012-07-31
打赏
举报
回复
你做串口通信也要按协议的吧,MODBUS?MODBUS分RTU格式和ASCII格式,一般都是用RTU格式(如果我没记错的话)如果下位机传过来的是32这个数据,那么它就是以32传递到上位机,而不是把32拆成3的ASCII码和2的ASCII码传递到上位机,我觉得用InputStream流应该没有问题,只是在上位机取和解码的时候要知道协议。PS:为什么不用数组去取呢?
lbing7
2012-07-31
打赏
举报
回复
可不可以看看InputStream流里的一个UNICODE字符是包含了四个字节的串口数据还是一个字节串口数据,其它的数据为空?
Frog1228
2012-07-31
打赏
举报
回复
sbyte数组是8位有符号整型数组。
Frog1228
2012-07-31
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
使用的是RS232。有关接收数据的代码如下,请帮我看一下是不是有问题:
InputStream is;
byte[] readbuffer=new byte[20];
is=serialPort.getInputStream();
int num=is.read(readbuffer);
String str=new String(readbuffer);
[/Quote]
你不能用byte数组去构造String的吧,byte是无符号一个字节,可以和单片机的 unsighed char型配对,但是它不是Unicode字符,所以不能由它去构造String,在C#中char是Unicode字符,可以用char数组构造String,可以有sbyte数组,指定编码格式构造String,JAVA中不知道能不能这样。你先加个断点,看接收到的readbuffer是不是和下位单片机传过来的内容一样,判断接收有没有错误。
lmya_go
2012-07-31
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
可不可以看看InputStream流里的一个UNICODE字符是包含了四个字节的串口数据还是一个字节串口数据,其它的数据为空?
[/Quote]
java是用不同的类处理字节流和字符流,我没办法确定的是这样属于什么数据类型,该用哪种类处理
lmya_go
2012-07-31
打赏
举报
回复
字节和char是一回事的话,那用字节流来处理就没问题了?。。
我再找找看其他问题
lmya_go
2012-07-31
打赏
举报
回复
使用的是RS232。有关接收数据的代码如下,请帮我看一下是不是有问题:
InputStream is;
byte[] readbuffer=new byte[20];
is=serialPort.getInputStream();
int num=is.read(readbuffer);
String str=new String(readbuffer);
dceacho
2012-07-31
打赏
举报
回复
inputstream处理的是字节流
字节和char是一会事
如果java中不是用的什么什么编码的话应该有其他问题
JAVA
串口助手接收数据并解析数据存入MySQL数据库中
JAVA
串口助手接收串口来的数据,并将数据解析存储入MySQL数据库中,在使用前串口需要有设备,同时自己创建数据库与数据表,见README
java
串口通讯 rs232
eclipse导入可以直接运行 测试代码在Test.
java
文件中
java
读取串口数据(绝对可使用)
JAVA
读取串口数据,推荐使用串口调试工具先测试成功在使用。
JAVA
串口通信
实例(GUI图像化界面)
利用GUI图形化界面实现
JAVA
串口通信
java
实现
串口通信
demo(含
串口通信
jar包)
jar包含32位与64位版本使用方法如下:拷贝 RXTXcomm.jar 到 <
JAVA
_HOME>\jre\lib\ext目录中
单片机/工控
27,511
社区成员
28,797
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章