2

我目前正在努力从连接到树莓派 uart 电路的相机获取照片。我试图在 pi4j 的帮助下做到这一点。由于我能够初始化相机,我认为问题与我发送的命令无关。但是,当我尝试打开生成的 .jpg 时,文件已损坏。

有没有人知道我做错了什么,或者已经设法从连接到带有 java 的树莓派 uart 的相机中获取图片?

相机:Grove - 串行相机套件

数据表:Grove - 串行相机数据表 PDF

示例代码:Python 代码

    private void getPicture(long pictureLength) {
        try {
            byte[] receiveDataPackageCommand = { (byte) 0xaa, (byte) 0x0e, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                    (byte) 0x00 };
            byte[] ackPackageEndCommand = { (byte) 0xaa, (byte) 0x0e, (byte) 0x00, (byte) 0x00, (byte) 0xf0,
                    (byte) 0xF0 };

            File picture = new File(getFileName());
            console.println("created file " + picture.getName());

            if (picture.createNewFile()) {
                FileOutputStream stream = new FileOutputStream(picture.getName());

                int i = 0;

                while (pictureLength > 0) {

                    receiveDataPackageCommand[4] = (byte) (i & 0xff);
                    receiveDataPackageCommand[5] = (byte) ((i >> 8) & 0xff);

                    serial.write(receiveDataPackageCommand);
                    byte[] bytes = pictureLength >= 128 ? serial.read(128) : serial.read((int) pictureLength);
                    stream.write(bytes);
                    pictureLength = pictureLength - 128;
                    i++;
                }

                stream.close();
                serial.write(ackPackageEndCommand);
                console.println("picture received and saved");
            } else {
                console.println("file already exists");
            }
        } catch (Exception ex) {
            console.println(ex);
        }
    }
4

0 回答 0