joyeux2008 2008-12-02 10:44
浏览 220
已采纳

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();

}

}

希望大哥们给指点指点。

  • 写回答

2条回答 默认 最新

  • hkliya 2008-12-02 13:57
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊