python和c字节对齐的用法-创新互联
问题描述:
创新互联公司是专业的剑阁网站建设公司,剑阁接单;提供成都做网站、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行剑阁网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!上位机传递参数到下位机中,用到了结构体,加上字节对齐保证传递正确
上位机python代码:
class HT_TAL_TBS_CMP_TypeDef(LittleEndianStructure):
_pack_ = 1
_field_ = [
('c', c_int16),
('lcmp', c_int16),
('hcmp', c_int16),
('a', c_int16),
('b', c_int16)
]
class HT_TAL_TBS_CONFIG_Typedef(LittleEndianStructure):
_pack_ = 1
_field_ = [
('channel_en', HT_TAL_TBS_EN_Typedef),
('ie', HT_TAL_TBS_EN_Typedef),
('clk', c_uint8),
('filter', c_uint8),
('TBSPRD', HT_TAL_TBSPRD_TypeDef),
('OSRSEL', c_uint8),
('cmp', HT_TAL_TBS_CMP_TypeDef)
]
# 传递的数据:
‘cmp': {'c': 0xabcd,
'低阈值': 0x54B2,
‘高阈值': 0x13f6,
’a': 0x1234,
'b': 0x5678
}
下位机keil工程c代码:
#pragma pack(1)
typedef struct{int16_t c;
int16_t lcmp;
int16_t hcmp;
int16_t a;
int16_t b;
}TBS_CMP_T;
typedef struct{TBS_EN_T channel_en;
TBS_EN_T ie;
uint8_t clk;
uint8_t filter;
TBSPRD_T TBSPRD;
uint8_t OSRSEL;
TBS_CMP_T cmp;
} TBS_CONFIG_T;
#pragma pack()
不加#pragma pack 结果,上位机字节对其了但下位机没有,会出现数据缺失、移位的错误
加上后收到的数据准确无误
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章标题:python和c字节对齐的用法-创新互联
网站链接:http://azwzsj.com/article/cdpgii.html