首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

JAVA对串口装置进行操作

2012-06-29 
JAVA对串口设备进行操作转自:http://blog.csdn.net/kingvan/article/details/53843?做金融终端开发经常需

JAVA对串口设备进行操作

转自:http://blog.csdn.net/kingvan/article/details/53843

?

做金融终端开发经常需要写一些设备的控制程序,提取出了一个串口操作的基本框架以防日后忘记,当然针对具体串口设备可能要作相关修改。

import java.io.*;
import javax.comm.*;

public class SomeSerial implements SerialPortEventListener {
? private byte[] readinfo;
? private InputStream in;
? private OutputStream out;
? private SerialPort serialPort = null;

? public SomeSerial(String port) throws Exception {
??? CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(port);
??? serialPort = (SerialPort)portId.open("Serial_Communication", 2000);
????? serialPort.setSerialPortParams(9600,
???????????????????????????????????? SerialPort.DATABITS_8,
???????????????????????????????????? SerialPort.STOPBITS_1,
???????????????????????????????????? SerialPort.PARITY_NONE);
? }


? public synchronized void serialEvent(SerialPortEvent event) {
??? switch (event.getEventType()) {
????? case SerialPortEvent.BI:
??????? break;
????? case SerialPortEvent.OE:
??????? break;
????? case SerialPortEvent.FE:
??????? break;
????? case SerialPortEvent.PE:
??????? break;
????? case SerialPortEvent.CD:
??????? break;
????? case SerialPortEvent.CTS:
??????? break;
????? case SerialPortEvent.DSR:
??????? break;
????? case SerialPortEvent.RI:
??????? break;
????? case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
??????? break;
????? case SerialPortEvent.DATA_AVAILABLE:
??????? synchronized (this) {
????????? try {
??????????? int count = in.available();
??????????? readinfo = new byte[count];
??????????? in.read(readinfo);
????????? }
????????? catch (Exception e) {
??????????? e.printStackTrace();
????????? }
????????? this.notify();
??????? }
??????? break;
??? }
? }

? public int nstop() throws Exception {
??? in.close();
??? out.close();
??? serialPort.close();
??? return 0;
? }

? private void getData() throws Exception {
??? serialPort.removeEventListener();
??? serialPort.addEventListener(this);
??? serialPort.notifyOnDataAvailable(true);
??? in = serialPort.getInputStream();
? }
?
? public synchronized int doSomething() throws Exception {
??? try {
????? synchronized (this) {
??????? out = serialPort.getOutputStream();
??????? //发送指令;
??????? out.write(new byte[] {...});
??????? out.flush();
??????? getData();
??????? wait();
??????? //可继续进行处理
??????? ...
????? }
??? }
??? catch (Exception e) {
????? e.printStackTrace();
????? return 1;
??? }
??? return 0;
? }
}

热点排行