本文共 1521 字,大约阅读时间需要 5 分钟。
1 结构体的数组指针
DataFormatStr g_out_data_buf[2];
DataFormatStr g_int_data_buf[20];typedef struct
{ UINT32 di; UINT32 len; UINT8 buf[256]; }DataFormatStr;/**
@brief 电表数据格式转集中器数据格式 @param [in] UINT32 orignal_id - 集中器原始命令id @param [in] DataFormatStr *p_in_data - 输入电表数据结构体数组指针 @param [in] UINT8 in_num - 输入电表数据个数 @param [out] DataFormatStr *out_data_buf - 输出 转化后的集中器数据格式 @return 返回转化生成的电表数据个数,-1:转化失败 @warning */ INT32 format_csg645_2_dc(UINT32 orignal_id,DataFormatStr *p_in_data, UINT8 in_num, DataFormatStr *out_data_buf );dc_data_num = format_csg645_2_dc(tem_di, g_int_data_buf, meter_di_num, g_out_data_buf);
if(dc_data_num >0){
for (i=0;i<dc_data_num ;i++)什么 = g_out_data_buf[i].di; 等等
}
2 结构体双指针
/** 参数更新数据描述结构 */
typedef struct { UINT32 di; TerminalDataStruct pdata; }IdTerminalData;IdTerminalData* pid_data = NULL;
paratasknum=db_read_parameter(P_ID_RDMETER,Pn,DI,BlockFlag,&pid_data);if(paratasknum>0){
for (i=0;i<paratasknum;i++)什么 = pid_data[i].di; 等等
}
/**
* @brief 从/MEDIA/RAM/参数数据库读取参数 * @param [in] UINT8 task_id 进程id序号,为0-31的数,每个进程占一个号,不能重复 * @param [in] UINT16 pn 待读取测量点号 * @param [in] UINT32 di 待读取对象数据标识 * @param [in] blockFlag 标识DI是否为块,0-标识DI非块;1-DI0为块结构;2-DI1为块结构;3-DI2为块结构;4-DI3为块结构 * @param [out] IdTerminalData **ppdata 输出读取到的参数,可能是多个参数 * @return >0:成功,值为参数个数;<0:错误码,错误码见dberrordef.h。 * @warning 输出的参数为动态分配空间,使用完数据后需要调用db_free_idTerminalData(&ppdata,num)释放ppdata的空间!!! */ DBPARAM_INTERFACE_API INT32 db_read_parameter(UINT8 task_id, UINT16 pn, UINT32 di, UINT8 blockFlag, IdTerminalData **ppdata);转载地址:http://fuexi.baihongyu.com/