Java 串口通讯 - 寒宵飞飞
关于串口通讯,可参考http://blog.csdn.net/kabini/article/details/1601324
一、软件准备
1、虚拟串口工具:
工具名称:vspdconfig
用途:虚拟出一对串口,例如com1-com2,并将两个串口连接起来,如果往其中一个串口写数据,另一个串口可以将数据读取出来
2、串口调试工具
工具名称:CommAssistant.exe
用途:可以往指定串口写入/读取数据
3、Java串口通讯类
工具名称:rxtx-2.1-7-bins-r2
使用方式:
1)将rxtxSerial.dll拷贝到%java_home%/jre/bin,%java_home%为jdk安装目录,例如我的是D:\Program Files\Java\jdk\jre\bin
2)将RXTXcomm.jar加入java工程
二、示例:
SerialPortCommunication:
package GPS;import gnu.io.*;
import java.io.*;
import java.util.*;
public class SerialPortCommunication
{
public static void main(String[] args)
{
CommPortIdentifier portID = null;
SerialPort port=null;
InputStream in=null;
try
{
//获取电脑所有串口信息
getPorts();
//CommPortIdentifier取得
portID = CommPortIdentifier.getPortIdentifier("COM1");
//打开串口
port = (SerialPort)portID.open("portApp", 5000);
//设置串口属性
port.setSerialPortParams(19200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
//得到输入流
in = port.getInputStream();
//得到输出流
//OutputStream out = port.getOutputStream();
int CurrentPackageCount = 0; //本次发送的数据包长度
byte[] CurrentPackage = null; //本次发送的数据包信息
String CurrentPackageText; //本次发送的数据包文本信息
while(true)
{
CurrentPackageCount = 0;
while (CurrentPackageCount == 0) //如果Count不为0,说明有新的数据包进来
{
CurrentPackageCount = in.available();
}
CurrentPackage = new byte[CurrentPackageCount];
in.read(CurrentPackage, 0, CurrentPackageCount);
CurrentPackageText = new String(CurrentPackage, "GB2312");
//输出当前获取的信息
System.out.println(CurrentPackageText);
}
}
catch(Exception e)
{
e.printStackTrace();
try
{
//关闭当前port
port.close();
in.close();
}
catch(Exception e1)
{
}
}
}
//获取本机所有的port
public static void getPorts()
{
CommPortIdentifier portId;
Enumeration en = CommPortIdentifier.getPortIdentifiers();
// iterate through the ports.
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println("port:"+portId.getName());
}
}
}
}
运行SerialPortCommunication,就会监听com1端口获取的信息,利用CommAssistant.exe往com2发送信息,SerialPortCommunication就会将com1获取的信息打印出来。
以上是 Java 串口通讯 - 寒宵飞飞 的全部内容, 来源链接: utcz.com/z/392407.html