如何逐步从pyserial读取数据?

时间:2014-03-01 14:07:08

标签: python pyserial xbee

我试图通过50个字节的块发送图像。我可以通过Python连续两个xbees发送它。现在,我想读取前50个字节并将其附加到变量,然后在接下来的50个字节之后,追加它,依此类推。但我无法找到一个好的解决方案。有什么帮助吗?

我现在收到错误f.write(data_stream [i:i + inc])。类型错误必须是字符串或缓冲区。 发送方的字节数,图像长度为6330。但在接收方面它是129.我现在不在。     ##发件人代码

import serial
from xbee import XBee

ser = serial.Serial('COM27',9600)  

fn='cameraman.jpeg'
f = open(fn, 'rb')
data = f.read()
f.close()
bytes = len(data)
inc=50
for i in range(0, bytes+1, inc): 
    string=data[i:i+inc]
    f.close()
     ser.write(string)

## Reciever Side
import serial

ser = serial.Serial(port='COM28', baudrate=9600,timeout=20)
inc=50
fileNames=[]
data_stream = []
while True:
  data_stream.append(ser.read(50))
  l=len(data_stream)
  print l
  for i in range(0, l+1, inc):
    fn1 = "image%s" % i
    fileNames.append(fn1)
    f = open(fn1, 'wb')
    f.write(data_stream[i:i+inc])
    print  fn1
    x.append(fn1)
    f.close()
 new_file = 'elmi666_image.jpg'
 dataList = []

 for fn in fileNames:
    f = open(fn, 'rb')
    dataList.append(f.read())
    f.close()
 f = open(new_file, 'wb')
 for data in dataList:
    f.write(data)
f.close()

1 个答案:

答案 0 :(得分:0)

使用pyserial读取50个字节,这里应该如何:

from serial import Serial

data_stream = []
with Serial(SERIAL_PORT) as ser:
    while ser.open():
        data_stream.append(ser.read(50))
        # use data_stream

从串口获取每50个字节,并将其附加到data_stream列表中。