2014-03-01 66 views
0

我想通过50个字节的块发送图像。我能够通过两个xbees串行发送它。现在,我想读取前50个字节并将其附加到一个变量,然后在接下来的50个字节后面追加它,等等。但我根本找不到一个好的解决方案。任何帮助?如何逐步读取pyserial中的数据?

我现在正在收到错误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() 
+2

你已经写了什么代码(你可以编辑你的问题在这里添加它)? – tomlogic

+0

欢迎来到SO!请给出一个[SSCCE](http://sscce.org),并请提出一个真正的问题。 – zmo

+0

@tomlogic我修改了我的问题。请帮帮我 。 – user3368375

回答

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列表添加它。