Java 如何从ComPort获取图像

Java 如何从ComPort获取图像,java,python,jpeg,Java,Python,Jpeg,我在工作中遇到了一些问题。。 在Adafruit教程(learn.Adafruit.com/TTL serial camera/overview)的帮助下,我使用Arduino UNO成功地将TTL串行摄像头图像存储到MicroSD卡上,但当我通过Zigbee发射机传输图像时,在comport(Zigbee接收机)我接收到随机字。我认为是ASCII码。 我想将从comport接收的图像保存到电脑的文件夹中。 可能吗? 我在一些论坛上见过使用java或python代码的人,但我不明白如何使用它?

我在工作中遇到了一些问题。。 在Adafruit教程(learn.Adafruit.com/TTL serial camera/overview)的帮助下,我使用Arduino UNO成功地将TTL串行摄像头图像存储到MicroSD卡上,但当我通过Zigbee发射机传输图像时,在comport(Zigbee接收机)我接收到随机字。我认为是ASCII码。 我想将从comport接收的图像保存到电脑的文件夹中。 可能吗? 我在一些论坛上见过使用java或python代码的人,但我不明白如何使用它?

我想这就是你想要的:

import serial
ser = serial.Serial('/dev/tty.usbserial', 9600)
image = ser.read()

with open('/tmp/image', 'wb') as file:
    file.write(image)
仅在Python3中有效,在Python2中需要使用io.open。如果您还没有串行模块,可能需要先安装它。我不熟悉通过com端口发送图像所需的Arduino-C-方言…

正在使用该类通过串行通信端口进行通信

// Receive & send methods from the SerialMonitor class.
private void send(String s) {
    ..
    serial.write(s);
}

public void message(final String s) {
    ..
    textArea.append(s);
}
我的建议是重用该(Java)代码,但由于
Serial
类是专为纯文本通信设计的,因此您需要将图像字节编码为Base64编码,并在PC上对其进行解码

如果传输速度很重要,并且有一个基于Arduino二进制的串行通信库,您应该使用它

更新

您可以通过所述的
serial
类从串行端口读取原始字节,如下所示:

...
Serial port = ...;
byte[] buffer = new byte[1024]; // 1KB buffer
OutputStream imageOutput = new FileOutputStream(...);

// Wait for the image.
while (port.available() > 0) {
  int numBytes = port.readBytes(buffer);
  if (numBytes > 0) {
    imageOutput.write(buffer, numBytes);
  }
}
imageOutput.flush();
imageOutput.close();
...