【发布时间】:2016-08-12 14:52:51
【问题描述】:
我有 2 个关于 Python3 和 PySerial(串行模块)的问题。
我必须通过 USB 端口向我的 IC 的独立 ATMega32 发送数据。一个可能的 sn-p 代码:
import serial
data=serial.Serial(port, speed)
first_data=99.7 # Float point data.
second_data=100 # Only int data like 10, 345, 2341 and so on.
third_data=56.7 # Float data
ValueToWrite=????? # How to convert it?
send=data.write(ValueToWrite)
现在,如果我尝试使用“ValueToWrite=firts_data”发送“first_data”,则会出现以下错误:
TypeError: 'float' object is not iterable
嗯。阅读有关方法 write 的文档(类 serial.Serial - http://pyserial.readthedocs.io/en/latest/pyserial_api.html)我明白了:
将字节数据写入端口。这应该是字节类型(或兼容的,例如 bytearray 或 memoryview)。 Unicode 字符串必须经过编码(例如 'hello'.encode('utf-8')。
- 我的第一个问题:我不明白如何发送我的 float 和 int 数据。如何将它们转换成字符串?
-
我的第二个问题:我想一起发送数据,像这样的唯一值:
99.7F100S56.7T
在这种情况下,使用ATMega的固件,我可以在相应的变量中拆分和更新数据,当遇到第一个数据的“F”字符,第二个数据的“S”字符等等时。
如何在 Python3 中使用 pyserial 做到这一点?
【问题讨论】:
-
你可以简单地发送
data.write("99.7F100S56.7T") -
感谢@njzk2:对不起,我的解释很糟糕,但变量“准实时”每 0.5 秒变化一次。我的 sn-p 代码只是一个非常简单的例子
标签: python linux python-3.x pyserial