189 8069 5689

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://jkwzsj.com/article/cdpgii.html

其他资讯