62,568
社区成员




package com.test;
import java.io.*;
import java.util.*;
import javax.comm.*;
/**
* @author zcj
* 写串口的例程
*/
public class SimpleWrite {
static Enumeration portList;
static CommPortIdentifier portId;
//static String messageString = "aa00E10000000055";
static String messageString = "aa00db0101000055";//测试红外
static SerialPort serialPort;
static OutputStream outputStream;
static InputStream inputStream;
/**
* 方法过程如下:
* 通过调用CommPortIdentifier端口标识对象的getPortIdentifiers()方法获得CommPortIdentifier的枚举对象Enumeration
* 然后迭代此枚举,获得具体的某一个CommPortIdentifier对象,如果此对象的端口与系统内定的端口相等,并且此对象的名称为COM1,
* 那么首先获得用此端口标识对象打开通讯端口,获得端口对象,将此端口对象强制转换成串口对象。
* 获得此串口对象以后,就可以获得其输出流。先设置串口对象的参数,然后就可以输入自己想要输入串口对象的字符串对象了。
* @param args
*/
public static void main(String[] args) {
/* 获得CommPortIdentifier对象的Enumeration对象 */
portList = CommPortIdentifier.getPortIdentifiers();
byte[] bt = new byte[8];
bt[0] = (byte)0xaa;
bt[1] = (byte)0x00;
bt[2] = (byte)0xdb;
bt[3] = (byte)0x01;//开启1号灯,开启2~4号灯为:0x02~0x04
bt[4] = (byte)0x01; //0x01【启动】 、0x00【关闭】
bt[5] = (byte)0x00;
bt[6] = (byte)0x00;
bt[7] = (byte)0x55;
/* 迭代此枚举对象*/
while (portList.hasMoreElements()) {
/* 获得一个CommPortIdentifier对象 */
portId = (CommPortIdentifier) portList.nextElement();
/**
* 如果端口标识对象的端口为1
* 备注:
* CommPortIdentifier.PORT_SERIAL = 1
* 端口包括:串口、并口。
*/
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals("COM1")) {
//if (portId.getName().equals("/dev/term/a")) {
try {
serialPort = (SerialPort)portId.open("SimpleWriteApp", 2000);
//打开输出流,写入命令
outputStream = serialPort.getOutputStream();
outputStream.write(bt);
//获得输入流,根据输入流获得返回值
inputStream = serialPort.getInputStream();
int count = 0;
StringBuffer sb = new StringBuffer();
while((count=inputStream.read())!=-1){
if('\r' == (char)count){/* '\r'为Enter键 */
}else{
sb.append((char)count);
}
count = 0;
}
System.out.println("结果:"+sb.toString());
} catch (Exception e) {
System.out.println("异常出现:"+e.getMessage());
} finally{
System.out.println("finally...");
//关闭流和端口
try {
inputStream.close();
} catch (IOException e1) {
System.out.println("关闭输入流时异常出现:"+e1.getMessage());
}
try {
outputStream.close();
} catch (IOException e) {
System.out.println("关闭输出流时异常出现:"+e.getMessage());
}
try{
serialPort.close();
}catch(Exception e){
System.out.println("关闭端口时异常出现:"+e.getMessage());
}
}
}
}
}
}
}