java串口问题请帮忙

小弟初接触java串口,写了一段代码,电脑串口接一个刷卡器,想实现功能:当没有卡接近时,打印“请刷卡”,当有卡接近刷卡器时候打印“您的卡号是:”+*******,自己写了些代码,但总出问题,代码如下

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.util.*;



import javax.comm.*;



public class ReadComm implements Runnable,SerialPortEventListener

{

static CommPortIdentifier portId;

static Enumeration portList;

InputStream inputStream;

SerialPort serialPort;

Thread readThread;

String str = "";

public static void main(String[] args)

{

portList = CommPortIdentifier.getPortIdentifiers();

while(portList.hasMoreElements())

{

portId = (CommPortIdentifier) portList.nextElement();

if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL)

{

if(portId.getName().equals("COM2"))

{

ReadComm RC = new ReadComm();

}

}

}

}

public ReadComm()

{

try {

serialPort = (SerialPort) portId.open("ReadCommApp", 2000);

} catch (PortInUseException e) {

e.printStackTrace();

}

try {

serialPort.addEventListener(this);

} catch (TooManyListenersException e) {

e.printStackTrace();

}

serialPort.notifyOnDataAvailable(true);

try {

serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

} catch (UnsupportedCommOperationException e) {

e.printStackTrace();

}

readThread = new Thread(this);

readThread.start();

}

public void run()

{

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

public void serialEvent(SerialPortEvent event)

{

byte[] readBuffer = new byte[60];

try {

inputStream = serialPort.getInputStream();

} catch (IOException e) {

e.printStackTrace();

}

try {

while(inputStream.available()>0)

{

int numBytes = inputStream.read(readBuffer);

}

str = new String(readBuffer);

if(str.equals("")||str==null)

{

System.out.println("请刷卡:");

}

else

{

System.out.println("您的卡号是:"+str);



ReadComm RT = new ReadComm();

RT.ClosePort();

}

} catch (IOException e) {

e.printStackTrace();

}




}

public void ClosePort()

{

serialPort.close();

}

}

希望大哥们给指点指点。

[code="java"]if (str.equals("") || str == null) {
System.out.println("请刷卡:");
}[/code]
这个地方也要改下(与此问题无题)。不然就NullPointerException了
[code="java"]if (str == null || str.equals("")) {
System.out.println("请刷卡:");
}[/code]

[code="java"]while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
}[/code]
这里可能有问题!
docs里这样说:
The available method for class InputStream always returns 0.
InputStream类里的available方法始终返回0
This method should be overridden by subclasses.
这个方法应该被子类重写.

所以这里应该用InputStream的子类