python - 读取和存储列表中的值
问题描述
目前正在做一个项目,我使用树莓派作为电机的监控设备。在下面的代码部分中,我试图从电机控制器读取测量值并将它们存储在缓冲区中 5 个值,然后打印它们:
def readFromSerial(prefix, command):
buffer = []
ser.write(command.encode()) #send data to controller
data = ser.readline().decode().strip() #receive data from controller
#Checking if data is received and extracting value
if prefix in data:
value = int(data.split('=')[1])
#print("Asked: " + str(command) + ". Got value: " + str(value))
buffer.append(value)
if len(buffer) > 5:
print(*buffer)
buffer = buffer[5:]
else:
print("Message is not received")
但是,当我尝试运行代码时,print(*buffer)
并没有在终端中打印任何内容。也许我没有正确存储要缓冲的值,但我自己无法找出错误,因此非常感谢任何帮助。
解决方案
在您的代码中,您将缓冲区创建为一个空列表。您向控制器发送命令,然后从控制器获得响应。如果前缀在控制器的响应中,则将响应拆分为 = 并获取第二个元素并将其转换为 int。
所以现在你有一个 int 存储在名为 value 的变量中。此时缓冲区仍然是空的。然后将该值附加到缓冲区,缓冲区的长度为 1。
你检查缓冲区的长度是否为 5,它不是唯一的 1,所以你不要调用你的打印。
然后就是这样,这就是你的函数的结尾,你的函数调用返回。所以你的缓冲区只包含 0 或 1 个元素,永远不会达到 5。
如果您再次调用该函数,那么您将创建一个新的空列表并将其分配给缓冲区,因此缓冲区再次为空。
推荐阅读
- r - 如何在 R 中从 Excel 中的数据中绘制多条线
- c# - Xamarin 表单 - 关闭 NavigationPage
- kubernetes - 如何在 K8s 中启用 Feature Gates?
- ios - 您如何正确地将数据传递给 NSObject 类以获取 Firebase 中的集合视图
- javascript - 在后台打开/加载 URL
- java - Appium 无法在 android 设备上找到按钮
- php - Ajax 响应不会打印到目标元素中?
- swift - 用于滚动的 UIGesture 识别器?
- clojure - 如何在 Clojure 中构建字符串
- python - 重命名和删除同一行的列时出错 pandas data.frame