2014-03-01 41 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列表添加它。