社区
单片机/工控
帖子详情
java 串口通信 数据格式问题
lmya_go
2012-07-30 10:27:39
java 串口通信接收到乱码,怀疑是数据格式的问题,所以想了解一下。
是用C++语言对单片机编程,使单片机传输 unsighed char型(占1个字节)数据。java使用InputStream 类接收数据。
据我了解,inputstream处理的是字节流,那么是否不能接受单片机传来的char型数据,而要用字符流来处理?如果要用字符
流处理的话,java中的字符使用Unicode码,占4个字节,而C++中的字符是ASCII码,占1个字节,这样该怎么处理?
...全文
12113
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数据库中
这可能涉及字符串分割、正则表达式匹配或者JSON/XML解析等,具体取决于
数据格式
。例如,如果数据是以逗号分隔值(CSV)格式,可以使用`String.split()`方法来拆分。 4. **MySQL数据库操作** 在
Java
中,我们可以使用...
java
串口通讯 rs232
Java
串口通信
(Serial Communication)是通过RS-232标准接口进行设备间数据传输的一种技术。RS-232,全称为“电子工业协会标准232”,是一种广泛应用于计算机串行通信的接口标准。它允许计算机与其他设备,如打印机...
java
读取串口数据(绝对可使用)
Java
读取串口数据是
Java
编程中一个重要的部分,特别是在物联网(IoT)设备通信、嵌入式系统以及工业自动化等领域。RXTX库是一个流行的开源
Java
库,用于实现与串行端口(COM口)和并行端口的交互。在本教程中,我们将...
JAVA
串口通信
实例(GUI图像化界面)
Java
串口通信
是一种在计算机之间通过串行接口进行数据传输的技术。在
Java
中,我们可以使用
java
x.comm库或者RXTX库来实现
串口通信
。这个实例是关于如何使用GUI(图形用户界面)来构建一个
Java
应用程序,使得用户可以...
java
实现
串口通信
demo(含
串口通信
jar包)
Java
串口通信
是一种在计算机之间或计算机与其他设备(如PLC、Arduino等)进行低级数据传输的方法。在
Java
中实现
串口通信
通常需要依赖外部库,如本示例中的"RXTXcomm.jar"。这个jar包包含了32位和64位版本,适用于...
单片机/工控
27,517
社区成员
28,798
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章