python - 如何正确填充缓冲区?
问题描述
我正在使用 python 与鹦鹉无人机(跳跃相扑)通信,我需要每 25 毫秒向他发送一个缓冲区以保持连接。问题,我不知道该怎么做^^
受这段代码的启发,用 javascript 编写:https ://github.com/forgeByAcision/node-sumo/blob/master/lib/sumo.js 我试着翻译一下:
var buf = new Buffer(7);
buf.writeUInt8(constants.ARCOMMANDS_ID_PROJECT_JUMPINGSUMO, 0);
buf.writeUInt8(constants.ARCOMMANDS_ID_JUMPINGSUMO_CLASS_PILOTING, 1);
buf.writeUInt16LE(constants.ARCOMMANDS_ID_JUMPINGSUMO_PILOTING_CMD_PCMD, 2);
buf.writeUInt8(this._pcmd.flag || 1, 4);
buf.writeInt8(this._pcmd.speed || 0, 5);
buf.writeInt8(this._pcmd.turn || 0, 6);
我听说过 struct library,但我被困住了。如何编写此类类型,如何仅更改变量的字节顺序?
PS:我没有被套接字卡住(好吧,我想)
解决方案
您可以使用struct
将数据打包到缓冲区中。就像是:
from struct import *
buf = ['\0'] * 7
pack_into('BBHBbb', buf, 0, constants.ARCOMMANDS_ID_PROJECT_JUMPINGSUMO, constants.ARCOMMANDS_ID_JUMPINGSUMO_CLASS_PILOTING, constants.ARCOMMANDS_ID_JUMPINGSUMO_PILOTING_CMD_PCMD,...)
格式字符串还可以具有指示字节顺序的初始字符。请参阅文档。
推荐阅读
- php - 数组到字符串的转换 SOAP
- android - 将在 Android 手机上“执行”短信的链接
- graphql - 在 GraphQL 中传递变量
- excel - 当使用 VBA 在另一个单元格中使用列表更改值时,如何对某些单元格使用复制值?
- symfony - 无法打开远程项目:环境“master”处于非活动状态
- ios - 如何在swiftui中的if-condition语句中显示警报视图?
- ios - 在用户提供的队列上同步或异步调用委托方法
- python - 如何构造 python 导入语句来检查调用命名空间中是否存在模块别名?
- android - Wifi Direct - 此设备地址不适用于 android 10
- react-native - 从 expo 资产中获取标题、专辑和艺术家