我有三个紫外线传感器-整数输出; 1个BME280-浮子输出(温度和压力);和一个GPS模块-浮动输出。我需要以这种形式构建一个字符串-#teamname; temperature; pressure; uv_1; uv_2; uv_3; gpscoordinates#
并且每秒至少通过ser.write发送一次-我正在使用APC220模块
这是正确(也是最快)的方法吗?
textstr = str("#" + "teamname" + ";" + str(temperature) + ";" + str(pressure) + ";" + str(uv_1) + ";" + str(uv_2) + ";" + str(uv_3) + "#")
(...)
ser.write(('%s \n'%(textstr)).encode('utf-8'))
您可以尝试这样的事情:
vars = [teamname, temperature, pressure, uv_1, uv_2, uv_3, gpscoordinates]
joined = ';'.join( map( str, vars ))
ser.write( '#%s# \n', joined )
如果使用python 3.6+
,则可以代替
textstr = f"#teamname;{temperature};{pressure};{uv_1};{uv_2};{uv_3}# \n"
(...)
ser.write((textstr).encode('utf-8'))
如果teamname
和gpscoordinates
也是变量,则以相同的方式添加它们
textstr = f"#{teamname};{temperature};{pressure};{uv_1};{uv_2};{uv_3};{gpscoordinates}# \n"
(...)
ser.write((textstr).encode('utf-8'))
使用python的format
可能会提高可读性:
textstr = "#teamname;{};{};{};{};gpscoordinates#".format(temperature, pressure, uv_1, uv_2, uv_3)
ser.write(('%s \n'%(textstr)).encode('utf-8'))
假设gpscoordinates
是文本(不在您尝试的代码中)。如果它是变量,则用{}
替换文本,并将其作为参数添加到format
。