当前位置: 首页 > 知识库问答 >
问题:

串口双向通信Java Comm API

公英哲
2023-03-14

大家好,我有以下问题。我有一个扫描仪,我正在用命令和接收一些行。目前,我尝试到目前为止与超级终端,这是完美的工作。但是现在我的程序中需要这些代码行,所以我设置了Java Comm API和RXTX(只是因为我不能让它与Comm API一起工作)。

我已经在论坛上读了很多,但我不能把它发挥作用。

    portList = CommPortIdentifier.getPortIdentifiers();
    int i;
    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                 if (portId.getName().equals("COM3")) {
           // if (portId.getName().equals("/dev/term/a")) {

    try {
                    serialPort = (SerialPort)
                        portId.open("SimpleWriteApp", 2000);
                } catch (PortInUseException e) {System.out.println(e);}
                try {
                    outputStream = serialPort.getOutputStream();
                    inputStream = serialPort.getInputStream();
                } catch (IOException e) {System.out.println(e);}
                try {
                    serialPort.setSerialPortParams(9600,
                        SerialPort.DATABITS_8,
                        SerialPort.STOPBITS_1,
                        SerialPort.PARITY_NONE);
                    serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_XONXOFF_IN);

                } catch (UnsupportedCommOperationException e) {System.out.println(e);}
                            try {               
                    System.out.println(messageString);
                    outputStream.write(messageString.getBytes());
                    BufferedReader portReader = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
                    String line = portReader.readLine();
                    System.out.println(line);


                    if (inputStream != null) inputStream.close();
                    if (outputStream != null) outputStream.close();
                    if (serialPort != null) serialPort.close();
                } catch (IOException e) {System.out.println(e);}    

有人能帮帮我吗?非常感谢你的努力

共有1个答案

孟品
2023-03-14

谢谢你的帮助。问题是在添加串行事件和发送命令之间没有足够的时间。在我将线程设置为睡眠几秒钟后,我得到了没有问题的响应。

 类似资料:
  • 通过serial接口可以使Chrome应用进行串口通信。使用serial接口需要在Manifest中声明serial权限: "permissions": [ "serial" ] 本章内容参考自https://crxdoc-zh.appspot.com/apps/serial。

  • 设备通过串口RX,TX和OBLOQ进行通信,因为波特率的不同,发送的数据可能会乱码或者丢包,设备通过发送这条指令,检测设备串口和OBLOQ串口是否已经正常通信。建议设备通信之前先通过这条指令检查串口连接状态。 请求方式: "|1|1|\r" 返回值: "|1|1|\r"表示已经建立串口通信 Arduino样例: softSerial.print("|1|1|\r");

  • 本文向大家介绍Android中socketpair双向通信详解,包括了Android中socketpair双向通信详解的使用技巧和注意事项,需要的朋友参考一下 Android很多地方会涉及到进程间的通信,比如输入系统,那么进程间通信会涉及哪些内容呢? 1、进程:负责读取和分发事件 2、应用程序:负责处理输入事件 上面这两个进程会涉及哪些双向通信呢: 1.进程会发送输入事件 2.应用程序会告知事件处

  • 本文向大家介绍Android串口通信之串口读写实例,包括了Android串口通信之串口读写实例的使用技巧和注意事项,需要的朋友参考一下 在Android串口通信:基本知识梳理的基础上,我结合我项目中使用串口的实例,进行总结; Android使用jni直接进行串口设备的读写网上已经有开源项目了,本文是基于网上的开源项目在实际项目中的使用做的调整和优化; Google串口开源项目 下面是我项目中的相关

  • 正在开发一个新产品,该产品将使用ESP8266、Xamarin应用程序和Azure IoTHub为客户的设备启用双向通信。 我们有C2D(云2设备)和D2C(设备2云)通信在应用程序和电除尘器上正常工作,但是我们没有找到任何关于设置IoTHub来解释传入的遥测消息、处理它们各自的“到:”字段并将它们回到C2D主题,这应该允许我们的目标设备接收它。 我们的尝试: 逻辑应用。能够触发进入队列的消息,但

  • 本文向大家介绍Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析,包括了Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了,具体代码如下所示: 以上所述是小编给大家介绍的Android Socket 线程连接openwrt与ardui