首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA串口报NullPointerException错误

2012-11-08 
JAVA串口报NullPointerException异常点击下面标题查看本文完整版:JAVA串口报NullPointerException异常JAVA

JAVA串口报NullPointerException异常
点击下面标题查看本文完整版:JAVA串口报NullPointerException异常

JAVA串口报NullPointerException异常:
package MyComm;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.comm.*;
class S_Frame extends Frame implements Runnable,ActionListener
{
/**//*检测系统中可用的通讯端口类 */
static CommPortIdentifier? portId;
/**//*Enumeration 为枚举型类,在util中? */
static Enumeration? portList;
OutputStream? outputStream;
/**//*RS-232的串行口? */
SerialPort? serialPort;?
Thread? readThread;
Panel? p=new Panel();
TextField in_message=new? TextField("打开COM1,波特率9600,数据位8,停止位1.");
TextArea? out_message=new TextArea();
Button? btnOpen=new Button("打开串口,? 发送数据");
Button? btnClose=new Button("关闭串口, 停止发送数据");
byte? data[]=new byte[10240];
/**//*设置判断要是否关闭串口的标志*/
boolean? mark;

/**//*安排窗体*/
S_Frame()
{ super("串口发送数据");
setSize(200,200);
setVisible(true);
add(out_message,"Center");
add(p,"North");
p.add(btnOpen);
p.add(btnClose);
add(in_message,"South");
btnOpen.addActionListener(this);
btnClose.addActionListener(this);
} //R_Frame() end

/**//*点击按扭打开串口.*/
public void actionPerformed(ActionEvent event)? {
if (event.getSource()==btnClose) {
serialPort.close();//关闭串口
mark=true;? //用于中止线程的run()方法
in_message.setText("串口COM1已经关闭,停止发送数据.");
}
else {? mark=false;
/**//*从文本区按字节读取数据*/
data=out_message.getText().getBytes();
/**//*打开串口*/
start();
in_message.setText("串口COM1已经打开,正在每2秒钟发送一次数据.....");
}
} //actionPerformed() end

/**//*打开串口,并调用线程发送数据*/
public void start(){
/**//*获取系统中所有的通讯端口? */
portList=CommPortIdentifier.getPortIdentifiers();
/**//* 用循环结构找出串口 */
while (portList.hasMoreElements()) {?
/**//*强制转换为通讯端口类型*/
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){
if (portId.getName().equals("COM1")) {
/**//*打开串口 */
try? {
serialPort = (SerialPort) portId.open("ReadComm", 2000);
}
catch (PortInUseException e)? {? }
/**//*设置串口输出流*/
try? {
outputStream = serialPort.getOutputStream();
}
catch (IOException e)? {}
} //if end
} //if end
} //while end
/**//*调用线程发送数据*/
try {
readThread = new Thread(this);
//线程负责每发送一次数据,休眠2秒钟
readThread.start();
}
catch (Exception e)? {? }
}? //start() end

/**//*发送数据,休眠2秒钟后重发*/
public void run() {
/**//*设置串口通讯参数*/
try? {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
}
catch (UnsupportedCommOperationException e)? {? }
/**//*发送数据流(将数组data[]中的数据发送出去)*/
try {
outputStream.write(data);
}
catch (IOException e)? {? }
/**//*发送数据后休眠2秒钟,然后再重发*/     

热点排行