-
java串口问题请帮忙10
小弟初接触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();
}
}
希望大哥们给指点指点。2008年12月02日 10:44
2个答案 按时间排序 按投票排序
-
采纳的答案
if (str.equals("") || str == null) { System.out.println("请刷卡:"); }
这个地方也要改下(与此问题无题)。不然就NullPointerException了if (str == null || str.equals("")) { System.out.println("请刷卡:"); }
2008年12月02日 13:57
-
while (inputStream.available() > 0) { int numBytes = inputStream.read(readBuffer); }
这里可能有问题!
docs里这样说:
The available method for class InputStream always returns 0.
InputStream类里的available方法始终返回0
This method should be overridden by subclasses.
这个方法应该被子类重写.
所以这里应该用InputStream的子类2008年12月02日 13:50
相关推荐
在开发Java串口通讯程序时,要特别注意不同操作系统下的兼容性问题,因为串口API可能会有所不同。同时,为了提高代码的可维护性和可扩展性,建议采用模块化设计,将串口操作、数据解析和用户界面等功能分开实现。...
8. **调试与日志**:为了便于调试和问题排查,源码中可能包含日志记录功能,例如使用java.util.logging.Logger或第三方日志框架如Log4j,记录串口操作的详细信息。 9. **上位机概念**:上位机一般指的是控制设备或...
Java串口调试助手是一款用于Java开发中的串口通信调试工具,它可以帮助开发者便捷地测试和调试串行端口(Serial Port)的通信功能。在Java编程中,串口通信是硬件设备之间数据交换的一种常见方式,例如打印机、GPS...
Java 串口通信编程 Java 串口通信编程是指使用 Java 语言开发串口通信程序的过程。串口通信是一种常见的通信方式,广泛应用于工业自动化、机器人控制、物联网等领域。Java 语言作为一门跨平台的编程语言,能够在...
Java串口通信是一种在计算机之间或计算机与其他设备(如PLC、Arduino等)进行低级数据传输的方法。在Java中实现串口通信通常需要依赖外部库,如本示例中的"RXTXcomm.jar"。这个jar包包含了32位和64位版本,适用于...
Java串口通信是一种在Java应用程序之间或Java应用程序与硬件设备之间进行数据传输的方法。RXTX是一个开源的Java库,它提供了对串行(RS232)和并行(IEEE1284)通信的支持,使得Java开发者能够方便地进行串口通信。...
Java串口通信是一种在两台计算机之间通过串行接口进行数据传输的技术,广泛应用于设备控制、数据采集、物联网等场景。在Java中实现串口通信,通常需要借助第三方库,如RXTX或JSSC(Java Simple Serial Connector)。...
Java串口通信是一种在计算机与外部设备之间进行数据交换的技术,它通过标准的串行物理接口(例如RS-232)实现。在Java中,虽然标准库并未直接支持串口通信,但可以通过第三方库来实现,如RXTX和Java Comm API。本...
通过深入理解和应用上述知识点,可以有效地解决Java串口操作中遇到的各种问题,包括描述中提及的0x0A和0x0D的问题。在yhj_java20090512这个文件中,很可能是包含了一个示例程序,展示了如何处理这个问题的具体代码...
Java串口通信是一种在计算机与外部设备之间进行数据交换的技术,尤其在嵌入式系统、自动化设备、物联网应用中广泛应用。本资源“java串口通信全套完整代码-导入eclipse直接用”提供了一套完整的Java串口通信实现,...
Java调用串口设备之ModbusRTU协议
7. **错误处理**:在实际应用中,必须考虑到串口通信可能出现的各种问题,如连接失败、数据传输错误等。需要设置适当的异常处理机制,提供友好的错误提示。 8. **效果图和项目源代码**:提供的效果图可以展示最终...
Java实现串口通信是计算机编程中的一个重要领域,特别是在嵌入式系统、自动化设备以及物联网(IoT)设备的控制和数据传输中。Java虽然不是直接支持串口操作的语言,但通过一些库和API,我们可以创建应用程序来实现串口...
Java虚拟串口模拟工具是一种软件解决方案,用于在Java应用程序中模拟物理串行端口,以进行串口通信。这类工具通常被开发人员用来测试、调试或实现与硬件设备的通信,而无需实际的物理串口。VSPD(Virtual Serial ...
在实际应用中,可能会遇到跨平台兼容性问题,尤其是在Web应用程序或Applet中使用Java串口API时。解决这类问题通常需要深入了解操作系统和Java虚拟机的交互,以及对网络通信的理解。 总的来说,Java串口通信涉及的...
Java串口编程是Java开发中一个重要的领域,尤其在物联网(IoT)、嵌入式系统和设备通信中,它扮演着关键角色。本资源包包含的8个文件旨在帮助开发者全面理解并掌握这一技术。以下是对每个知识点的详细解释: 1. **...
Java串口通讯是一种在计算机与外部设备之间进行数据交换的技术,尤其在嵌入式系统、自动化设备、物联网应用中广泛应用。这个"Java 串口通讯demo"是一个实战项目,它结合了网页界面并通过WebSocket实现与服务器的实时...
Java串口开发是一种在Java...了解并掌握Java串口开发能力,能帮助开发者解决实际工作中的许多问题。 通过深入研究"demo01"案例,开发者可以了解并掌握Java串口通信的基本原理和实践技巧,从而在实际项目中灵活运用。