首页 > 解决方案 > 如何正确填充缓冲区?

问题描述

我正在使用 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:我没有被套接字卡住(好吧,我想)

标签: pythontypesbuffer

解决方案


您可以使用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,...)

格式字符串还可以具有指示字节顺序的初始字符。请参阅文档


推荐阅读