2015-04-30 39 views
1

我正在編程一個協議以便通過RF發送信息。我從txt獲取信息,我想將每個字母拆分成一個字節並通過Raspberry Pi中的協議SPI將其發送到RF模塊。當我嘗試發送新的行代碼(\n)時,我在代碼中遇到問題。有誰能夠幫助我?提前致謝!txt問題在RF協議中處理

informationpacket1=array.array('B') 
informationpacket2=array.array('B') 
informationpacket3=array.array('B') 
informationpacket4=array.array('B') 

origen=open('origen.txt', 'r') 

    for i in range (0, 4): 
     if i==0: 
      for i0 in range (0, 23): 
       lectura=origen.read(1) 
       origenbinario1=int(binascii.hexlify(lectura), 16) 
       informationpacket1.insert(i0,origenbinario1) 
     elif i==1: 
      for i1 in range (0, 23): 
       lectura=origen.read(1) 
       origenbinario2=int(binascii.hexlify(lectura), 16) 
       informationpacket2.insert(i1,origenbinario2) 
     elif i==2: 
      for i2 in range (0, 23): 
       lectura=origen.read(1) 
       origenbinario3=int(binascii.hexlify(lectura), 16) 
       informationpacket3.insert(i2,origenbinario3) 
     elif i==3: 
      for i3 in range (0, 23): 
       lectura=origen.read(1) 
       origenbinario4=int(binascii.hexlify(lectura), 16) 
       informationpacket4.insert(i3,origenbinario4) 

destino=open('destino.txt', 'w') 

for j in range (0, 4): 
    if j==0: 
     for j0 in range (0, 23): 
      destinoASCII=binascii.unhexlify('%x' % informationpacket1[j0]) 
      destino.write (destinoASCII) 
    elif j==1: 
     for j1 in range (0, 23): 
      destinoASCII=binascii.unhexlify('%x' % informationpacket2[j1]) 
      destino.write (destinoASCII) 
    elif j==2: 
     for j2 in range (0, 23): 
      destinoASCII=binascii.unhexlify('%x' % informationpacket3[j2]) 
      destino.write (destinoASCII) 
    elif j==3: 
     for j3 in range (0, 23): 
      destinoASCII=binascii.unhexlify('%x' % informationpacket4[j3]) 
      destino.write (destinoASCII) 
origen.close()  
destino.close() 

回溯:

Traceback (most recent call last): 
    File "C:\Users\villap01\Documents\UNI\MTP\protocolo.py", line 79, in <module> 
    destinoASCII=binascii.unhexlify('%x' % informationpacket2[j1]) 
TypeError: Odd-length string 

回答

0

TypeError: Odd-length string

我猜你想unhexlify字符串有奇數長度,因此它不可能是有效的十六進制字符串(如單字節總是由兩個十六進制定義位)。