【发布时间】:2015-12-02 18:14:23
【问题描述】:
首先,我要感谢任何帮助我的人。
- 环境
我在 Windows 8 操作系统中使用 Python v2.7。 我正在使用 COM4 通过在 Python 代码中发送一些命令来与机器人交谈。
我向机器人发送命令getversion 并假设得到一堆数据,格式如下(我省略了一些,它太长了):
组件、主要、次要、构建、辅助
APP密码,956FC721
BaseID,1.2,1.0,18000,2000,
电池类型,4,LIION_4CELL_SMART,
蜂巢网址,beehive.cloud.com
BlowerType,1,BLOWER_ORIG,
引导程序版本,27828,,,
BrushMotorType,1,BRUSH_MOTOR_ORIG,
BrushSpeed,1400,,,
BrushSpeedEco,800,,
底盘转速,1,,
云选择器,2
DropSensorType,1,DROP_SENSOR_ORIG,
液晶面板,137,240,124,
LDS CPU,F2802x/c001,,,
LDS 串口,KSH13315AA-0000153,,,
- 我的问题是: 基于这种格式,如何得到上述结果的大小(以字节为单位)? 这个问题的原因是,只要我知道它有多大,我就可以获得完整/完整的结果。
具体来说,我的代码是:
ser.write('getver \n') # send 'getversion' cmd to robot
ser.read(1305)
getver 的响应大小是 1305 字节,是的,我是手动计算的,所以我想请 Python 自动告诉我它有多大。
【问题讨论】:
-
可能类似于:
data=ser.read()然后size=len(data) -
答案看起来并不总是相同的大小。必须有不同的方式来读取响应。也许你应该设置一个合理的超时时间(检测结束)然后调用
ser.readlines()? -
你可以给机器人编程吗?例如使其在其输出的末尾输出类似“END”的内容。
-
另外,正如 zvone 提到的,你的输出可能会有不同的长度。但是,行数应该相同。为什么不继续阅读,直到你有 16 个换行符?
-
你是对的,输出会随着不同的大小和线条而不同。所以恐怕我不能继续跟踪 16 个换行符,因为它们是不同的... =(
标签: python python-2.7