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);