小弟初接触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();
}
}
希望大哥们给指点指点。
java串口问题请帮忙
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 组策略中的计算机配置策略无法下发
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊