Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java读取串行端口在运行时在文本模式/二进制模式之间切换_Java_Serial Port_Rxtx - Fatal编程技术网

Java读取串行端口在运行时在文本模式/二进制模式之间切换

Java读取串行端口在运行时在文本模式/二进制模式之间切换,java,serial-port,rxtx,Java,Serial Port,Rxtx,我正在使用java RXTX串行端口实现。 场景是,监控设备(传感器组合)以文本模式发送数据,但当摄像头中有新图像时,它应该以二进制模式发送该图像(这是一个简单的jpeg文件)。 如何在运行时处理此问题?大多数设备都实现了一个众所周知的协议来发送数据,因此,无论是谁,只要听并知道此协议,都可以解释此数据。通常,它们以帧的形式发送信息(大多数情况下是固定长度的),其中包含一些附加信息,如状态、数据长度、数据类型等。例如: | 0010 | 0001 | 1101 | 0000 ... 0010 1

我正在使用java RXTX串行端口实现。
场景是,监控设备(传感器组合)以文本模式发送数据,但当摄像头中有新图像时,它应该以二进制模式发送该图像(这是一个简单的jpeg文件)。

如何在运行时处理此问题?

大多数设备都实现了一个众所周知的协议来发送数据,因此,无论是谁,只要听并知道此协议,都可以解释此数据。通常,它们以帧的形式发送信息(大多数情况下是固定长度的),其中包含一些附加信息,如状态、数据长度、数据类型等。例如:

| 0010 | 0001 | 1101 | 0000 ... 0010 1101 | 0111 |

 status  type  length        data            CRC
如果是这种情况,您必须联系制造商以获取协议文档

如果不是,并且此监视设备一直在发送数据,则您可以执行以下操作:

  • 以字节形式读取此数据
  • 如果您收到这对字节:
    0xFF,0xD8
    ,则您将看到一张图片,因为这些字节是图像(SOI)的开始标记。然后,下一个数据应该是图像的一部分,直到您获得这对字节:
    0xFF,0xD9
    ,它们是图像结束(EOI)标记
  • 如果没有收到这对,则可以将这些字节解释为文本字符
  • 以下示例取自RXTX官方网站,它们都以字节形式读取数据:


    大多数设备都实现了一个众所周知的协议来发送数据,因此,无论谁在听,谁知道该协议,都可以解释该数据。通常,它们以帧的形式发送信息(大多数情况下是固定长度的),其中包含一些附加信息,如状态、数据长度、数据类型等。例如:

    | 0010 | 0001 | 1101 | 0000 ... 0010 1101 | 0111 |
    
     status  type  length        data            CRC
    
    如果是这种情况,您必须联系制造商以获取协议文档

    如果不是,并且此监视设备一直在发送数据,则您可以执行以下操作:

  • 以字节形式读取此数据
  • 如果您收到这对字节:
    0xFF,0xD8
    ,则您将看到一张图片,因为这些字节是图像(SOI)的开始标记。然后,下一个数据应该是图像的一部分,直到您获得这对字节:
    0xFF,0xD9
    ,它们是图像结束(EOI)标记
  • 如果没有收到这对,则可以将这些字节解释为文本字符
  • 以下示例取自RXTX官方网站,它们都以字节形式读取数据:


    谢谢,非常有帮助!谢谢,非常有帮助!