社区
单片机/工控
帖子详情
java 串口通信 数据格式问题
lmya_go
2012-07-30 10:27:39
java 串口通信接收到乱码,怀疑是数据格式的问题,所以想了解一下。
是用C++语言对单片机编程,使单片机传输 unsighed char型(占1个字节)数据。java使用InputStream 类接收数据。
据我了解,inputstream处理的是字节流,那么是否不能接受单片机传来的char型数据,而要用字符流来处理?如果要用字符
流处理的话,java中的字符使用Unicode码,占4个字节,而C++中的字符是ASCII码,占1个字节,这样该怎么处理?
...全文
12149
8
打赏
收藏
java 串口通信 数据格式问题
java 串口通信接收到乱码,怀疑是数据格式的问题,所以想了解一下。 是用C++语言对单片机编程,使单片机传输 unsighed char型(占1个字节)数据。java使用InputStream 类接收数据。 据我了解,inputstream处理的是字节流,那么是否不能接受单片机传来的char型数据,而要用字符流来处理?如果要用字符 流处理的话,java中的字符使用Unicode码,占4个字节,而C++中的字符是ASCII码,占1个字节,这样该怎么处理?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
实现
串口通信
(二)
本文介绍了一种使用
Java
实现
串口通信
的方法,重点优化了串口数据读取逻辑,确保数据完整性。同时,增加了
数据格式
设置功能,支持ASCII和Hex两种
数据格式
的发送与接收,解决了常见
问题
。
java
读取串口数据_使用
Java
实现
串口通信
(二)
本文介绍了如何使用
Java
进行
串口通信
的优化,包括使用RXTX库、设置波特率、数据位等参数,并解决了数据读取不完整的
问题
。文章提供了串口管理类`SerialPortManager`的详细代码,支持打开、关闭串口,发送和接收数据,以及添加监听器。此外,还展示了主窗口`MainFrame`的实现,允许用户选择ASCII或Hex
数据格式
进行发送和接收,增强了
数据格式
处理功能。
关于
串口通信
的那些事
本文讲述了作者从
Java
开发者转行至电气自动化行业,介绍了
串口通信
的基本概念,如232、485的区别,
数据格式
、通信方式、波特率、奇偶校验和停止位等,并分享了WindowsAPI实现串口操作的代码实例。,
Java
串口 mysql_
JAVA
串口通信
源码
本文档详细介绍了如何在Windows环境下设置和操作
串口通信
,包括串口选择、波特率设置、
数据格式
选择以及串口打开与关闭、数据发送等关键步骤。适合初学者及开发者解决串口连接
问题
。
Android
串口通信
开发详解与实战
本文深入讲解Android平台
串口通信
的核心技术,涵盖UART通信原理、串口参数配置、硬件连接调试、Android串口API调用方式、第三方串口库使用、
数据格式
处理、多线程与线程安全机制、异常处理与资源管理等内容。结合Serial_Demo项目源码,帮助开发者掌握实际开发中的
串口通信
实现与优化策略。
单片机/工控
27,521
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章