2016-10-13 93 views
2

空我想測試在這樣的方式包含字節變量的內容:測試是否字節是蟒蛇

line = [] 
while True: 
    for c in self.ser.read(): # read() from pySerial 
     line.append(c) 
     if c == binascii.unhexlify('0A').decode('utf8'): 
      print("Line: " + line) 
      line = [] 
      break 

但是,這並不工作... 我想也來測試,如果一個字節是空的: 在這種情況下

print(self.ser.read()) 

打印:b「」(兩個單引號)

我不知道到現在爲止成功測試該

if self.ser.read() == b'' 

或什麼都總是顯示語法錯誤...

我知道,很基本的,但如果你想驗證的內容,我不明白這一點...

+0

什麼語法錯誤? –

+0

難道這只是因爲你在if語句結尾處遺漏了冒號嗎?請粘貼一個完整的代碼示例,這會給您一個語法錯誤。 –

+0

記住總是包括你得到的錯誤信息。這有助於縮小可能的解決方案並指出問題。 http://stackoverflow.com/help/how-to-ask –

回答

1

謝謝您的幫助。該問題的第一部分是通過answerd @sisanared:

if self.ser.read():

做測試一個空字節

問題的第二部分(與十六進制值的結束線0A)stil不起作用,但我認爲自從給出題目的答案以後,要結束這個問題是庸人。

謝謝大家

1

您你想從pySerial讀變量或字符串,使用repr()功能,是這樣的:

import serial 
import repr as reprlib 
from binascii import unhexlify 
self.ser = serial.Serial(self.port_name, self.baudrate, self.bytesize, self.parity, self.stopbits, self.timeout, self.xonxoff, self.rtscts) 
line = [] 
while 1: 
    for c in self.ser.read(): # read() from pySerial 
     line.append(c) 
     if if c == b'\x0A': 
      print("Line: " + line) 
      print repr(unhexlify(''.join('0A'.split())).decode('utf8')) 
      line = [] 
      break 
+1

爲什麼不是:'if c == b'\ x0A':'? –

+0

是的,我認爲這是合理的 – Ssein

+0

'而真: 打印對於C在self.ser.read()( 「read_line_loop」) : line.append(C) 打印( 「附加」) 如果c == b'\ x0A': print(「stop condition」) print(「Line:」+ line) line = [] break' – fava