嗨,我对 xBee 很陌生,并且在数据传输方面遇到了困难。我的目标是用 Raspberry pi 宽幅拍照并通过 xBee 将其发送回计算机,然后将该图像转换为 hexlify 代码。在计算机上使用 python 接收代码后,我使用 binascii 库通过此代码将这些代码转换回图像
ASCII 到 IMG:
import binascii
with open("file.txt", "r") as f:
data=f.read()
data = data.strip()
data = data.replace('\n', '')
data = binascii.a2b_hex(data)
with open('image.png', 'wb') as image_file:
image_file.write(data)
但在运行该代码后,图像已损坏。所以我开始查看接收代码,但我不确定代码是否正确,因为我得到的文本文件中有很多“0”
接收代码:
from digi.xbee.devices import XBeeDevice
PORT = 'COM11'
BAUD = 19200
ser = XBeeDevice(PORT, BAUD)
try :
ser.open()
def data_receive_callback(xbee_message):
data = xbee_message.data.decode("utf-8")
with open("file.txt","a") as f:
f.write(data)
ser.add_data_received_callback(data_receive_callback)
print("Waiting for data...\n")
input()
finally:
if ser is not None and ser.is_open():
ser.close()
RPi 中的相机代码:
from picamera import PiCamera
import serial
import binascii
ser =serial.Serial(
port='/dev/ttyS0',
baudrate=19200,
parity= serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
camera=PiCamera()
camera.resolution(1920,1080)
camera.capture("img.png")
with open("image.png",'rb') as f:
content=f.read()
a=binascii.hexlify(content)
ser.write(a)
ser.close
我应该怎么做或尝试修复代码。我认为它的接收代码是一个主要问题。
附言。我已经尝试在计算机和 Raspberry Pi 中将图像文件转换为 hexlify 并将其反转回来,它仍然可以正常工作。