JAVA中可以利用SUN公司提供的comm包提供的类型来实现,下面为在windows下的环境搭建过程和简单实例程序:
1、下载 javacomm20-win32 开发包,网上都有提供,随便下一个
2、 配置:(如果使用的是Myeclipse,注意其是自带有jdk的安装目录的,需要在其下配置)
javax.comm.properties放在java_home\jre\lib\下
comm.jar放在java_home\jre\lib\ext\下
win32com.dll放在java_home\jre\bin\下
3、 简单例程(更深入理解可看包下提供的例子):
package com.function;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Enumeration;
import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import org.json.JSONObject;
public class SerialDemo2 implements SerialPortEventListener{
private SerialPort sPort ;
private CommPortIdentifier portId;
// private BufferedReader mReader;
// private BufferedWriter mWriter;
private OutputStream os;
private InputStream is;
private String message;
public static JSONObject mJsonObject;
public SerialDemo2() {
try {
mJsonObject = new JSONObject();
portId = CommPortIdentifier.getPortIdentifier("COM2");
sPort = (SerialPort) portId.open("name",2000);
os = sPort.getOutputStream();
is = sPort.getInputStream();
// mReader = new BufferedReader(new InputStreamReader(sPort.getInputStream()));
// mWriter = new BufferedWriter(new OutputStreamWriter(sPort.getOutputStream()));
sPort.addEventListener(this);
sPort.notifyOnDataAvailable(true);
sPort.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
} catch (Exception e) {
e.printStackTrace();
}
}
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
/**
* 存放传过来的数据,注意定义的大小
*/
byte[] readBuffer = new byte[44];
try{
while (is.available()>0) {
// int numBytes = is.read(readBuffer);
is.read(readBuffer);
}
// while((message = mReader.readLine())!=null){
// System.out.println(message);
//
// }
message = new String(readBuffer);
System.out.println(message);
/**
* 把message字符串根据分隔符做成jsonobject
*/
String[] value = message.split("/");
mJsonObject.put("press", value[0].toString());
mJsonObject.put("temp", value[1].toString());
mJsonObject.put("dist", value[2].toString());
mJsonObject.put("speed", value[3].toString());
mJsonObject.put("rec", value[4].toString());
System.out.println(mJsonObject);
}catch (Exception e) {
e.printStackTrace();
}
default:
break;
}
}
public static void main(String[] args) {
new SerialDemo2();
}
}