- 浏览: 606007 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Garlic_90:
ireport分页的话代码写起来有些复杂,我以前试过,比较简单 ...
ireport分页显示 -
feijiing:
nice,problem solved,thanks!
虚拟机安装centos no valid devices were found on which to cereate new file systems -
Jocken:
引用的jar包需要怎么加在命令里面?十多个呢,为什么配在MAN ...
linux 如何运行jar包 -
xiaoqiao800:
看到你的问题,有帮助,我之前都是手动的clear项目下的cla ...
The project cannot be built until build path errors are resolved -
mfkdzhou:
楼主好,我现在也遇到这个问题,可以把源代码发一份不?谢谢了。8 ...
java打印
1.了解一下什么是串口.
串口叫做串行接口,也称串行通信接口,按电气标准及协议来分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。
而我需要记录的也是RS232标准串口
RS-232-C:也称标准串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座。后来的PC上使用简化了的9芯D型插座。现在应用中25芯插头座已很少采用。现在的台式电脑一般有两个串行口:COM1和COM2,从设备管理器的端口列表中就可以看到。硬件表现为计算机后面的9针D形接口,由于其形状和针脚数量的原因,其接头又被称为DB9接头。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连,很多投影机,液晶电视等设备都具有了此接口,厂家也常常会提供控制协议,便于在控制方面实现编程受控,现在越来越多的智能会议室和家居建设都采用了中央控制设备对多种受控设备的串口控制方式。
2.如果你是用笔记本开发串口程序,可以使用pcmicia转串口设备.
3.关于在linux下开发基于串口的java程序
下载jar包http://java.sun.com/products/javacomm/
解压,把其中so文件复制到/usr/lib
把javax.comm.properties复制到jre目录下
把comm.jar放到classpath目录下
串口连接:
CommPortIdentifier portID;
String owner = new String("modem");
int keeptime = 5000;
Enumeration portList;
portList = CommPortIdentifier.getPortIdentifiers();
// String driverName = "com.sun.comm.Win32Driver";
String driverName = "com.sun.comm.LinuxDriver";
CommDriver driver = null;
try {
// System.loadLibrary("win32com");
driver = (CommDriver) Class.forName(driverName).newInstance();
driver.initialize();
System.out.println("Win32Driver Initialized");
} catch (Exception e) {
e.printStackTrace();
}
// 如果有多个端口
while (portList.hasMoreElements()) {
portID = (CommPortIdentifier) portList.nextElement();
System.out.println("COM:" + portID.getName());
// if (portID.getName().equals("COM1"))
if (portID.getName().equals("/dev/ttyS0"))
try {
sPort = (SerialPort) portID.open(owner, keeptime);
break;
}catch (PortInUseException e) {
e.printStackTrace();
System.exit(1);
}
}
try{
if (sPort != null)
{
in = sPort.getInputStream();
out = sPort.getOutputStream();
try {
sPort.addEventListener(this);
sPort.notifyOnDataAvailable(true);
} catch (TooManyListenersException e) {
e.printStackTrace();
}
}
}catch(Exception e)
{
e.printStackTrace();
}
其中注释掉的是windows下的连接方法
全部代码
import javax.comm.*;
import java.util.Enumeration;
import java.util.TooManyListenersException;
import java.io.*;
public class ATSms implements SerialPortEventListener {
private SerialPort sPort = null;
private InputStream in = null;
private OutputStream out = null;
private byte b[] = new byte[1024];
private String cmd = "";
private int len = 0;
private String recvMsg = "";
public ATSms()
{
init();
}
public synchronized void serialEvent(SerialPortEvent serialPortEvent) {
int c = 0;
// 如果有串口事件发生
if (serialPortEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE)
{
try {
System.out.print("Recv :" );
while ((c = in.read()) != -1) {
System.out.print((char)c);
recvMsg += ((char)c);
}
}// try
catch (IOException e) {
e.printStackTrace();
}
}
}
private static String getUnicodeString(String s)
{
String unicodeStr = "";
for(int i=0;i<S.LENGTH();I++)
{
String c = Integer.toHexString(s.charAt(i) & 0xffff);
while(c.length()<4)
{
c = "0" + c;
}
unicodeStr += c;
}
return unicodeStr;
}
private static String getSMobile(String mobile)
{
StringBuffer sMobile = new StringBuffer("68");
for( int i=0;i<MOBILE.LENGTH();I=I+2)
{
sMobile.append((i+1<MOBILE.LENGTH())?MOBILE.CHARAT(I+1):"F");
</MOBILE.LENGTH())?MOBILE.CHARAT(I+1):"F");
sMobile.append(mobile.charAt(i));
}
return sMobile.toString();
}
private void init()
{
CommPortIdentifier portID;
String owner = new String("modem");
int keeptime = 5000;
Enumeration portList;
portList = CommPortIdentifier.getPortIdentifiers();
// String driverName = "com.sun.comm.Win32Driver";
String driverName = "com.sun.comm.LinuxDriver";
CommDriver driver = null;
try {
// System.loadLibrary("win32com");
// System.out.println("Win32Com Library Loaded");
driver = (CommDriver) Class.forName(driverName).newInstance();
driver.initialize();
System.out.println("Win32Driver Initialized");
} catch (Exception e) {
e.printStackTrace();
}
// 如果有多个端口
while (portList.hasMoreElements()) {
portID = (CommPortIdentifier) portList.nextElement();
System.out.println("COM:" + portID.getName());
// if (portID.getName().equals("COM1"))
if (portID.getName().equals("/dev/ttyS0"))
try {
// System.out.println("try to open the /dev/ttyS0");
sPort = (SerialPort) portID.open(owner, keeptime);
// System.out.println("try to open the /dev/ttyS0 OK");
break;
}catch (PortInUseException e) {
e.printStackTrace();
System.exit(1);
}
}
try{
if (sPort != null)
{
in = sPort.getInputStream();
out = sPort.getOutputStream();
try {
sPort.addEventListener(this);
sPort.notifyOnDataAvailable(true);
} catch (TooManyListenersException e) {
e.printStackTrace();
}
}
/**
System.out.print("set PDU mode :");
out.write("at+cmgf=0\r".getBytes());
out.flush();
// len = in.read(b);
for(int i=0;i<3;i++)
{
recvMsg = readThread.readComMsg();
if(!"".equals(recvMsg))break;
Thread.sleep(1000);
System.out.println("Sleep 1001.");
}
if(recvMsg.indexOf("OK")>=0)
{
System.out.println("OK");
}else
{
System.out.println("ERROR");
}
*/
}catch(Exception e)
{
e.printStackTrace();
}
}
public void close()
{
try {
Thread.sleep(4000);
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
sPort.close();
}
public int sendSms(String recv,String content)
{
int sendok = 1;
for(int i=0;i<CONTENT.LENGTH();I=I+70)
{
sendok = sendShortSms(recv, ((i+70<=content.length())?content.substring(i,i+70):content.substring(i)) );
}
return sendok;
}
private int sendShortSms(String recv,String content)
{
int sendok = -1;
try{
System.out.println("send sms to:" + recv + "\ncontent:" + content);
content = getUnicodeString(content);
// content = (j+70>uc.length()/2)?uc.substring(j):uc.substring(j,j+140);
// System.out.println(j + ":" + content);
cmd = "at+cmgs=" + Integer.toString(15+content.length()/2) + "\r";
out.write(cmd.getBytes());
out.flush();
System.out.println("Send:" + cmd);
for(int i=0;i<5;i++)
{
if(recvMsg.indexOf(">")>=0)
{
recvMsg = recvMsg.substring(recvMsg.indexOf(">")+1);
break;
}else
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
}
}
}
cmd = Integer.toHexString(content.length()/2 & 0xffff);
if(cmd.length()<2)cmd="0"+cmd;
cmd = "0011000D91" + getSMobile(recv) + "000800" + cmd + content;
cmd = cmd.toUpperCase();
out.write(cmd.getBytes());
out.write(26);
out.flush();
System.out.println("Send:" + cmd);
for(int i=0;i<5;i++)
{
if(recvMsg.indexOf("OK")>=0)
{
recvMsg = recvMsg.substring(recvMsg.indexOf("OK")+2);
sendok = 1;
break;
}else
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
}
}
}
}catch(Exception e)
{
sendok = -1;
e.printStackTrace();
}
return sendok;
}
public static void main(String args[])
{
String c = ("16日" );
ATSms at = new ATSms();
at.sendSms("13999999999",c);
at.close();
}
}
串口叫做串行接口,也称串行通信接口,按电气标准及协议来分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。
而我需要记录的也是RS232标准串口
RS-232-C:也称标准串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座。后来的PC上使用简化了的9芯D型插座。现在应用中25芯插头座已很少采用。现在的台式电脑一般有两个串行口:COM1和COM2,从设备管理器的端口列表中就可以看到。硬件表现为计算机后面的9针D形接口,由于其形状和针脚数量的原因,其接头又被称为DB9接头。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连,很多投影机,液晶电视等设备都具有了此接口,厂家也常常会提供控制协议,便于在控制方面实现编程受控,现在越来越多的智能会议室和家居建设都采用了中央控制设备对多种受控设备的串口控制方式。
2.如果你是用笔记本开发串口程序,可以使用pcmicia转串口设备.
3.关于在linux下开发基于串口的java程序
下载jar包http://java.sun.com/products/javacomm/
解压,把其中so文件复制到/usr/lib
把javax.comm.properties复制到jre目录下
把comm.jar放到classpath目录下
串口连接:
CommPortIdentifier portID;
String owner = new String("modem");
int keeptime = 5000;
Enumeration portList;
portList = CommPortIdentifier.getPortIdentifiers();
// String driverName = "com.sun.comm.Win32Driver";
String driverName = "com.sun.comm.LinuxDriver";
CommDriver driver = null;
try {
// System.loadLibrary("win32com");
driver = (CommDriver) Class.forName(driverName).newInstance();
driver.initialize();
System.out.println("Win32Driver Initialized");
} catch (Exception e) {
e.printStackTrace();
}
// 如果有多个端口
while (portList.hasMoreElements()) {
portID = (CommPortIdentifier) portList.nextElement();
System.out.println("COM:" + portID.getName());
// if (portID.getName().equals("COM1"))
if (portID.getName().equals("/dev/ttyS0"))
try {
sPort = (SerialPort) portID.open(owner, keeptime);
break;
}catch (PortInUseException e) {
e.printStackTrace();
System.exit(1);
}
}
try{
if (sPort != null)
{
in = sPort.getInputStream();
out = sPort.getOutputStream();
try {
sPort.addEventListener(this);
sPort.notifyOnDataAvailable(true);
} catch (TooManyListenersException e) {
e.printStackTrace();
}
}
}catch(Exception e)
{
e.printStackTrace();
}
其中注释掉的是windows下的连接方法
全部代码
import javax.comm.*;
import java.util.Enumeration;
import java.util.TooManyListenersException;
import java.io.*;
public class ATSms implements SerialPortEventListener {
private SerialPort sPort = null;
private InputStream in = null;
private OutputStream out = null;
private byte b[] = new byte[1024];
private String cmd = "";
private int len = 0;
private String recvMsg = "";
public ATSms()
{
init();
}
public synchronized void serialEvent(SerialPortEvent serialPortEvent) {
int c = 0;
// 如果有串口事件发生
if (serialPortEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE)
{
try {
System.out.print("Recv :" );
while ((c = in.read()) != -1) {
System.out.print((char)c);
recvMsg += ((char)c);
}
}// try
catch (IOException e) {
e.printStackTrace();
}
}
}
private static String getUnicodeString(String s)
{
String unicodeStr = "";
for(int i=0;i<S.LENGTH();I++)
{
String c = Integer.toHexString(s.charAt(i) & 0xffff);
while(c.length()<4)
{
c = "0" + c;
}
unicodeStr += c;
}
return unicodeStr;
}
private static String getSMobile(String mobile)
{
StringBuffer sMobile = new StringBuffer("68");
for( int i=0;i<MOBILE.LENGTH();I=I+2)
{
sMobile.append((i+1<MOBILE.LENGTH())?MOBILE.CHARAT(I+1):"F");
</MOBILE.LENGTH())?MOBILE.CHARAT(I+1):"F");
sMobile.append(mobile.charAt(i));
}
return sMobile.toString();
}
private void init()
{
CommPortIdentifier portID;
String owner = new String("modem");
int keeptime = 5000;
Enumeration portList;
portList = CommPortIdentifier.getPortIdentifiers();
// String driverName = "com.sun.comm.Win32Driver";
String driverName = "com.sun.comm.LinuxDriver";
CommDriver driver = null;
try {
// System.loadLibrary("win32com");
// System.out.println("Win32Com Library Loaded");
driver = (CommDriver) Class.forName(driverName).newInstance();
driver.initialize();
System.out.println("Win32Driver Initialized");
} catch (Exception e) {
e.printStackTrace();
}
// 如果有多个端口
while (portList.hasMoreElements()) {
portID = (CommPortIdentifier) portList.nextElement();
System.out.println("COM:" + portID.getName());
// if (portID.getName().equals("COM1"))
if (portID.getName().equals("/dev/ttyS0"))
try {
// System.out.println("try to open the /dev/ttyS0");
sPort = (SerialPort) portID.open(owner, keeptime);
// System.out.println("try to open the /dev/ttyS0 OK");
break;
}catch (PortInUseException e) {
e.printStackTrace();
System.exit(1);
}
}
try{
if (sPort != null)
{
in = sPort.getInputStream();
out = sPort.getOutputStream();
try {
sPort.addEventListener(this);
sPort.notifyOnDataAvailable(true);
} catch (TooManyListenersException e) {
e.printStackTrace();
}
}
/**
System.out.print("set PDU mode :");
out.write("at+cmgf=0\r".getBytes());
out.flush();
// len = in.read(b);
for(int i=0;i<3;i++)
{
recvMsg = readThread.readComMsg();
if(!"".equals(recvMsg))break;
Thread.sleep(1000);
System.out.println("Sleep 1001.");
}
if(recvMsg.indexOf("OK")>=0)
{
System.out.println("OK");
}else
{
System.out.println("ERROR");
}
*/
}catch(Exception e)
{
e.printStackTrace();
}
}
public void close()
{
try {
Thread.sleep(4000);
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
sPort.close();
}
public int sendSms(String recv,String content)
{
int sendok = 1;
for(int i=0;i<CONTENT.LENGTH();I=I+70)
{
sendok = sendShortSms(recv, ((i+70<=content.length())?content.substring(i,i+70):content.substring(i)) );
}
return sendok;
}
private int sendShortSms(String recv,String content)
{
int sendok = -1;
try{
System.out.println("send sms to:" + recv + "\ncontent:" + content);
content = getUnicodeString(content);
// content = (j+70>uc.length()/2)?uc.substring(j):uc.substring(j,j+140);
// System.out.println(j + ":" + content);
cmd = "at+cmgs=" + Integer.toString(15+content.length()/2) + "\r";
out.write(cmd.getBytes());
out.flush();
System.out.println("Send:" + cmd);
for(int i=0;i<5;i++)
{
if(recvMsg.indexOf(">")>=0)
{
recvMsg = recvMsg.substring(recvMsg.indexOf(">")+1);
break;
}else
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
}
}
}
cmd = Integer.toHexString(content.length()/2 & 0xffff);
if(cmd.length()<2)cmd="0"+cmd;
cmd = "0011000D91" + getSMobile(recv) + "000800" + cmd + content;
cmd = cmd.toUpperCase();
out.write(cmd.getBytes());
out.write(26);
out.flush();
System.out.println("Send:" + cmd);
for(int i=0;i<5;i++)
{
if(recvMsg.indexOf("OK")>=0)
{
recvMsg = recvMsg.substring(recvMsg.indexOf("OK")+2);
sendok = 1;
break;
}else
{
try
{
Thread.sleep(1000);
}catch(Exception e)
{
}
}
}
}catch(Exception e)
{
sendok = -1;
e.printStackTrace();
}
return sendok;
}
public static void main(String args[])
{
String c = ("16日" );
ATSms at = new ATSms();
at.sendSms("13999999999",c);
at.close();
}
}
发表评论
-
linux 操作系统分区
2021-08-20 11:24 517https://www.cnblogs.com/cobcmw/ ... -
ipad白屏并且上面有苹果图标不停的重启无法开机
2020-04-14 16:58 16331.长按开机键5秒,同时按住home建10秒,松开开机键,这个 ... -
shadowsocksr
2018-06-02 17:37 6461、开通Vultr 我当时选的是2.5$/month的套餐, ... -
记录
2014-07-29 08:27 7771.修改httpclient中源码关于cookie头中的过期时 ... -
yum 安装php遇到php53-common conflicts with php-common
2014-01-08 12:06 18811yum 安装php的时候,用命令yum -y install ... -
关于u盘无法引导的可能原因
2013-04-05 17:42 1235前几天在使用u盘引导的时候无法正常引导,首先检查启动u盘是否制 ... -
boot.ini修改导致系统无法正常启动
2013-04-05 17:35 1329前几天由于装双系统,修改了boot.ini,里面的内容都是网上 ... -
bt4在启动时出现filename must be either or block list...
2013-04-05 17:28 1361在启动bt4的时候出现这个报错,经检查是由于menu.lst中 ... -
如何制作BT4 u盘启动盘
2013-04-05 17:21 1709所需要软件:①UltraISO;②grubinst;③grub ... -
windows7中的telnet命令无法识别
2012-04-17 11:40 2094在windows7 cmd命令中,可以正常的使用ping命令, ... -
如何windows远程控制mac电脑
2012-03-15 16:54 18892VNC (Virtual Network Computing) ... -
如何禁用xp的自动播放功能
2012-02-25 13:09 882测试环境:xp professional sp3 在网上搜索地 ... -
不能停用网卡
2011-09-15 23:02 1237以下内容摘自电脑报,如有侵权,请告知! 问题描述: 停用 ... -
linux使用wget请求地址时报错
2011-07-26 14:07 2951需求: 在crontab中使用wget请求某个url地址 ... -
虚拟机安装centos no valid devices were found on which to cereate new file systems
2011-06-30 10:25 3355以下文章是我在安装过 ... -
centos 5.5无线上网
2011-05-17 23:22 1848环境: 无线网卡型号 intel wifi link51 ... -
两台电脑局域网内互访注意事项
2011-03-06 15:08 1959此文章转载自电脑报,如有侵权请即时告知 环境: wind ... -
linux修改ip地址及dns
2011-01-25 12:27 1314linux命令修改ip,网关,dns方法 1.命令行的方式: ... -
linux如何运行后台进程跟当前会话无关
2011-01-05 04:57 1509在linux中放了一个jar包,运行 java -classp ... -
vmware卸载脚本
2010-10-13 17:46 1471%%a %%a %%a %%a %%a %%a %%a %%a ...
相关推荐
Linux系统下用Java开发串口通信程序的类库,从Arduino的IDE中扒出来的,比官方的更加好用,Bug少,支持Arduino设备与Linux之间的串口通信;Linux系统下用Java开发串口通信程序的类库,从Arduino的IDE中扒出来的,比...
Linux 下串口开发实例 Linux 下串口开发实例中,涉及到串口的各项设置、读写操作。本文将对串口的设置、读写操作进行详细的介绍,并提供相关的代码示例。 一、串口设置 在 Linux 中,串口的设置包括串口速度、...
在“用QT做的LINUX下串口通信(测试可用)”项目中,描述中提到了一个简单的用户界面,包含一个LABEL和三个按键。这很可能是一个用于演示串口通信基本功能的最小化应用。LABEL可能用来显示从串口接收到的数据,而三...
linux下串口程序,实现串口回环自发自收,测试串口
以上就是在Linux下进行串口监控的一些常用方法和工具。选择哪种工具取决于你的具体需求,从简单的命令行工具到功能丰富的图形界面应用,Linux为各种级别的用户提供了广泛的选择。在实际操作中,结合使用这些工具,...
### 嵌入式Linux下串口应用开发 #### 摘要 串口因其成本低廉、编程便捷等优势,在嵌入式系统中扮演着重要角色。随着Linux成为嵌入式系统中最常用的开源操作系统之一,了解如何在嵌入式Linux环境下进行串口应用开发...
总之,Linux下的串口编程是一个涉及操作系统、硬件接口和通信协议的综合实践。C语言提供的低级接口使我们能够灵活地控制串口,实现包括非标准波特率在内的各种功能。通过深入研究并实践,你将能够熟练掌握这一技能,...
"Linux下的串行接口C语言编程方法" 本文主要介绍了在Linux操作系统下,使用C语言编程来控制串行接口的方法。串行接口是一种常用的数据通信接口,广泛应用于嵌入式系统中。 串行接口简介 串行接口是一种串行二进制...
总的来说,"Linux下串口通讯程序C++源代码"提供了在Linux系统下进行串口通信的C++实现,通过理解并分析源代码,我们可以学习到如何在不依赖额外库的情况下,利用系统调用进行低级别的硬件接口编程,这对于嵌入式系统...
本篇将深入探讨Linux下串口程序开发的关键步骤,并结合一个指纹识别程序实例,帮助你理解串口通信的工作原理和实践应用。 一、串口通信基础 串口通信基于RS-232标准,通常包括TX(发送)和RX(接收)两条线,用于...
总结来说,基于ARM9的嵌入式Linux串口驱动开发是一项重要的任务,它涉及到硬件接口的理解、Linux驱动模型的运用以及针对具体应用场景的优化。通过这样的驱动开发,可以实现嵌入式设备与其他设备的有效通信,是构建...
Linux下C++串口通信,支持ubuntu,树莓派等系统。
本文将详细介绍一种在Linux下使用的串口调试工具——xgcom,这是一个图形界面的串口调试工具,能够提供方便的串口通信功能。 **一、xgcom简介** xgcom是一款开源的、跨平台的串口通信软件,其设计目的是为了简化...
linux下串口工具,比minicom方便很多,内附破解文件
linux下串口编程(读写)linux下串口编程(读写)
### Linux下串口程序开发详解 #### 一、串口基础知识 串行接口(简称串口)是一种常见的数据传输方式,其特点在于数据位按顺序一位接一位地发送或接收,这种方式大大简化了硬件设计,并降低了成本。串口通常被用于...
先在命令行运行make编译,生成串口读写共享库,然后运行gcc -s -shared -fPIC test.c -lSetupSerialPort -o test.so,...还有Linux下Socket通讯开发例程及Firefox浏览器插件开发例程,有空时会一起整理出来贡献给大家
1. **串口(Serial Port)**:串行端口或串口是一种计算机接口标准,用于将数据一位一位地顺序发送和接收。它通常用于低速设备之间的连接,如调制解调器、打印机等。 2. **TTY设备**:在Linux中,串行端口被映射为...
【嵌入式Linux下串口应用开发】 嵌入式Linux系统在各种硬件平台上广泛应用,尤其在需要高效能、低功耗以及实时性要求的设备中。串口(Serial Port)作为传统的通信接口,在嵌入式系统中扮演着重要的角色,由于其...
RXTX是Java平台上一个开源的串口通信库,它为开发者提供了在Linux和Windows操作系统下进行串行通信的能力。本文将详细探讨如何使用RXTX进行Java串口开发,以及在开发过程中可能遇到的问题及其解决方案。 首先,我们...