2013-05-03 2 views
0

Я хотел сделать программу, которая получает данные из последовательного порта, который бит запуска и остановки будет * и #. Полученные данные будут находиться в * 1234567 # этот бланк. Но он говорит, что мой объект типа не подлежит расшифровке. Я действительно новичок в Python, я не знаю, что делать дальше, может ли кто-нибудь помочь мне решить эту проблему?ошибка типа произошла с использованием памяти bufferview

import serial 

ser = serial.Serial(
    port='COM5',\ 
    baudrate=9600,\ 
    parity=serial.PARITY_NONE,\ 
    stopbits=serial.STOPBITS_ONE,\ 
    bytesize=serial.EIGHTBITS,\ 
     timeout=0) 

MAX_BUF_SIZE = 16 
bits = 0 

v = memoryview 



print("connected to: " + ser.portstr) 



while(1): 
    for memoryview in ser.read(): 
     if v[0] == 42: 

      if v[-1] == 35: 

       print(v[1:-1].tobytes()) 

     else: 
      memoryview = 0 
ser.close() 

connected to: COM5 
Traceback (most recent call last): 
    File "C:\Python33\Saves\Receive using buff.py", line 24, in <module> 
    if v[0] == 42: 
TypeError: 'type' object is not subscriptable 
>>> 
+0

Что такое 'memoryview' изначально? Вы назначаете его на v. В основном ошибка говорит, что вы не можете использовать оператор [] для v в 'v [0]' – Juho

+1

@Juho: 'memoryview' является встроенным. –

ответ

1

То, что вы делаете, это дико чрезмерно сложным. Я понятия не имею, почему вы используете memoryview. Просто сделайте это:

import serial 

ser = serial.Serial(
    port='COM5', 
    baudrate=9600, 
    parity=serial.PARITY_NONE, 
    stopbits=serial.STOPBITS_ONE, 
    bytesize=serial.EIGHTBITS, 
    timeout=0) 

print("connected to: " + ser.portstr) 
for data in ser.read(): 
    if data[0] == 42 and data[-1] == 35: 
      print(data[1:-1].decode()) 
ser.close() 

Это вряд ли на самом деле работает, как вы хотите, но это упрощение кода. Как сделать Фактически справиться с этим зависит от того, как данные выглядят более подробно.

+0

Это 'v' вероятно должно быть' data' – Juho

+0

@Juho: Да, спасибо. –

+0

Эй, этот код, похоже, не работает>< – user2294001

Смежные вопросы