-
如何解决java串口读写乱码问题0
各位大神好,小生最近在公司搞串口通讯项目,在本机创建了虚拟串口,能很好的读写消息,但是就中文乱码问题,一直困扰着我,望大家帮忙,谢谢,所有源码如下:
package com.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
public class serial {
public static void main(String[] args) throws Exception {
listPortChoices();
serialWriteAndReadDatas();
}
// 例举本机所以串口
static void listPortChoices() {
CommPortIdentifier portId;
Enumeration en = CommPortIdentifier.getPortIdentifiers();
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println(portId.getName());
}
}
}
//初始化串口读写操作
static void serialWriteAndReadDatas() throws Exception {
CommPortIdentifier portId = CommPortIdentifier
.getPortIdentifier("COM13");
SerialPort serialPort = (SerialPort) portId.open("aaa", 2000);
InputStream in = serialPort.getInputStream();
OutputStream out = serialPort.getOutputStream();
serialWriteDatas(out);
serialReadDtaas(in);
serialPort.close();
}
//串口写操作
static void serialWriteDatas(OutputStream out) throws Exception {
String Msg = "发送数据aaa656565";
for (int i = 0; i < Msg.length(); i++) {
out.write(Msg.charAt(i)); //这样写到超串口级终端会乱码
}
}
//串口读操作
static void serialReadDtaas(InputStream in) throws IOException {
String content = "";
while (true) {
int c = in.read();//这样从串口读也会乱码
Character d = new Character((char) c);
content = content.concat(d.toString());
System.out.println("content:" + content);
if (content.length() == 20) {
break;
}
}
System.out.println("内容:" + content);
}
}
2014年7月04日 21:01
目前还没有答案
相关推荐
Java串口通信编程指南 Java串口通信编程是嵌入式系统、自动化设备与计算机间进行数据交换的重要方式。在Java环境下,实现串口通信主要依赖于Java Communication API,尽管官方支持在3.0后逐渐转向Linux和Solaris...
Java串口通信RXTX包是一个开源库,主要用于在Java应用程序中实现与串行端口(COM端口)的交互。RXTX这个名字是“RX”(接收)和“TX”(发送)的组合,恰好对应了串口通信中的基本功能。这个库使得Java开发者能够...
1. **字符编码基础**:理解字符编码是解决问题的第一步。常见的字符集有GBK、GB2312(简体中文)、Big5(繁体中文)以及Unicode家族的UTF-8、UTF-16等。UTF-8是一种变长编码,可以兼容全世界几乎所有的字符,因此在...
它提供了一系列的Java API,使得开发者可以方便地打开、配置和读写串口,而无需关心底层操作系统具体的实现细节。 1. **RXTX的基本使用**: - **初始化串口**:首先需要创建`SerialPort`对象,通过`...
Java串口操作是Java应用程序与外部设备通信的重要方式,尤其在工业控制、嵌入式系统以及数据采集等领域中广泛应用。RXTX是一个优秀的开源库,专门用于Java平台上的串行通信,它为开发者提供了简单易用的API,使得...
串口通信中可能会遇到硬件连接问题、权限问题或数据传输错误,ComAssistant应该有良好的错误处理机制,提示用户问题所在,并指导解决。 10. **应用范围**: 串口通信在物联网、自动化控制、设备监控等领域有广泛...
在实际应用中,这样的串口类库通常会配合其他软件工具或编程语言(如C#、Python、Java等)使用,为开发人员提供便捷的串口通信解决方案,从而提高工作效率并减少调试时间。例如,文件名“ComTest”可能是一个测试...
5. **编程实现**:使用编程语言(如C、Python、Java等)编写串口读写函数,实现数据的收发。 6. **异常处理**:考虑到通信过程中的各种异常情况,如超时、数据错误等,编写相应的错误处理代码。 7. **测试验证**:...
1. **Java串口通信**:由于短信猫通常是通过串口(Serial Port)与计算机通信,因此Java源码需要使用Java的串口API来实现数据交互。`javax.comm`库提供了一组接口和类,如`CommPortIdentifier`、`SerialPort`和`...
由于Android原生API并不直接支持串口操作,这个库填补了这一空白,提供了一系列Java类和方法,使得开发者可以通过简单的代码实现串口读写。 三、核心类与接口 1. `SerialPortFinder`:这是一个查找可用串口的工具...
在压缩包内的文件"串口读转发到Socket"来看,这可能是实现串口数据读取并转发至Socket的源代码文件,可能使用了C++、Python、Java等语言编写。这个程序的核心功能可能包括以下几点: 1. **串口通信**:串口(Serial...
2. **Java串口编程**:在Java中,我们可以使用javax.comm库来实现串口通信,但在Android中,这个库并不被支持。因此,我们需要使用特定于Android的库,比如UsbSerial库或者本例中的com.axis4.android.serialport库。...
在Java编程中,IO流用于在内存和外部存储设备(如硬盘、网络、串口等)之间传输数据。本文将详细阐述IO流的基本概念、分类、File类的使用以及字符编码问题和对象序列化。 1. **文件类(File类)的使用** - **定义*...