我有2个关于Python3和PySerial(串行模块)的问题。
我必须通过USB端口将数据发送到我的IC的独立ATMega32。一个可能的代码段:
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
好。阅读有关方法写(类 serial.Serial - http://pyserial.readthedocs.io/en/latest/pyserial_api.html)的文档,我看到了:
将字节数据写入端口。这应该是字节类型(或兼容,如bytearray或memoryview)。必须对Unicode字符串进行编码(例如'hello'.encode('utf-8')。
我的第二个问题:我想一起发送数据,这是一个独特的价值:
99.7F100S56.7T
在这种情况下,使用ATMega的固件,当遇到第一个数据的“F”字符,第二个数据遇到“S”字符时,我可以拆分和更新相应变量中的数据,等等。
如何使用pyserial在Python3中执行此操作?
答案 0 :(得分:1)
str(first_data)
会输出'99 .7'(字符串)。
'{0}F{1}S{2}T'.format(first_data, second_data, third_data)
会输出'99 .7F100S56.7T'
您可以将这些字符串用作serial.send的参数