python - 为什么 b'\x02' 与 Python 中的值 2 或 int(2) 不同?
问题描述
我有一台 PC 将字节值 2 发送到 Raspberry Pi。
但我无法弄清楚为什么 Python 程序在接收到值时不会评估为 true。
如果我打印收到的值,它会将 b'\x02' 作为输出写入。
import serial
def GetSerialData():
x = ser.inWaiting()
if x > 0:
received_data = ser.read(x)
print (received_data)
return x
ser = serial.Serial ("/dev/ttyAMA0", 9600)
try:
while True:
SData = GetSerialData ()
if ( SData == b'\x02'):
print ("Ok - value is 2")
except KeyboardInterrupt:
ser.close()
解决方案
您的GetSerialData
函数似乎并未实际返回串行数据。它打印串行数据,但之后您再也不会引用received_data
它,而是 return x
,它似乎是一个表示响应大小的整数。
不要返回 x,而是尝试返回received_data
。
def GetSerialData():
x = ser.inWaiting()
if x > 0:
return ser.read(x)
else:
return b"" #or whatever value is appropriate when no data has been sent yet
推荐阅读
- java - 非属性(内联)文本值的 OpenAPI 注释
- javascript - 如何根据 html 选择选项填充 html 文本输入字段
- ruby-on-rails - 如何将 id 添加到 Friendly_id slug?
- python - 在 Django 中的表单中设置初始值
- javascript - 使用 Google Apps 脚本,我们可以在有人将数据输入 Google 电子表格后立即在 HTML 页面中显示该数据吗?
- firebase - Flutter 中的“未找到匹配的客户端”
- java - java.lang.NoClassDefFoundError: javax/net/ssl/HostnameVerifier
- c++ - C ++中数组中的随机字符串
- flutter - 为什么兄弟应用交叉 mainAxisAlignment?
- web-services - ColdFusion 2021 返回“对象不是声明类的实例”