0

我最近购买了 USB 条形码扫描仪。它有 3 种不同的界面选择选项:

  1. RS-232C
  2. USB
  3. 魔杖仿真

要求仅在Java(Rxtx API)的帮助下使用RS-232C接口接收扫描的条形码。据我所知,我需要在 RXTX 中定义一个 COM 端口才能开始与设备交互

但问题是我在 RS-232C 接口中使用时无法找到它的 COM 端口。

与 RS-232C 端口通信时有什么遗漏吗,如何找到端口号。

请帮助我。

更新:按照建议,我使用下面的代码(使用JSSC)扫描了我的系统中的所有串行端口

 import jssc.SerialPortList;

public class Main {

public static void main(String[] args) {
    String[] portNames = SerialPortList.getPortNames();
    for(int i = 0; i < portNames.length; i++){
        System.out.println(portNames[i]);
    }
}
}

需要注意的一点:当我连接我的条码扫描器并移除扫描器时,上面代码获得的端口列表没有变化。

输出:COM3 COM11 COM18 COM32 COM33 COM34 COM35 COM36 COM37 COM38 COM39 COM40 COM42 COM45 COM52 COM53 COM59 COM60 COM61​​ COM62 COM63

输出后,我尝试使用以下代码一一监听上述每个端口:

导入 jssc.SerialPort;导入 jssc.SerialPortException;

公共类主要{

public static void main(String[] args) {
    SerialPort serialPort = new SerialPort("COM63"); //manually setting all the ports above one by one
    try {
        serialPort.openPort();//Open serial port
        byte[] buffer = serialPort.readBytes(10);
        System.out.println(buffer.toString());
        serialPort.closePort();//Close serial port
    }
    catch (SerialPortException ex) {
        System.out.println(ex);
    }
}
}

我得到端口忙或没有输出(同时我继续使用我的条形码扫描仪扫描)

4

2 回答 2

0

这是StackOverflow 上其他地方发布的解决方案。基本上你需要从你的操作系统循环你可用的 comports 并显示/选择想要的。如果您对此有疑问,请发布一些代码供我们审核。

于 2012-11-05T17:54:14.443 回答
0

我不熟悉这些 API,但对 COM 端口的电气端相当熟悉。与 USB 端口不同,没有自动“握手”来指示设备是否已连接。但是,界面中存在几条状态行。

除了 TD/RD 信号(发送数据/接收数据)之外,还有 RTS/CTS——请求发送和清除发送。RTS 和 CTS 在没有任何连接时会“未准备好”。

通常的协议是设备断言 RTS,然后另一端返回 CTS 以指示一切就绪。然而,由于计算机可以表现为“设备”或“调制解调器”(RS-232 知道的仅有的两件事),这一切都变得复杂了。结果是您可以有几种不同的引脚和信号配置,具体取决于这两个部分的假定模式。(如果你幸运的话,扫描仪文档会描述其中的一些内容。)

更复杂的事情是有 DSR/DTR 信号——数据集(调制解调器)就绪和数据终端就绪。在大多数 PC 配置中,这些都会被忽略,但并非总是如此。

因此,如果您的扫描速度不快,您可能需要查看引脚分配并使用电压表和一些跳线将您的物理端口设置为扫描仪可以找到的状态。然后将进行进一步的实验来确定如何设置状态信号以使扫描仪开始说话。

于 2012-11-05T19:21:03.960 回答