/// <summary> /// 根据参数获得定值,软压板,装置设置 /// </summary> /// <param name="staName">站名称</param> /// <param name="equName">装置名称</param> /// <param name="menuPath">菜单路径</param> /// <param name="dsType">在配置文件中的数据集类型,保护定值填1,其他定值填3,默认值是3</param> /// <param name="actSg">表示定值区号,只有保护定值有区号,别的定值没有,填0,默认值是1。具体查看mmssgcfg.cfg</param> /// <returns></returns> public static SettingData GetSetting(string staName, string equName, string menuPath, int dsType = 1, int actSg = 1) { SettingData setting = new SettingData(); int iMaxNum = 256; int size = Marshal.SizeOf(typeof(DATA_ITEM)); IntPtr pBuffer = Marshal.AllocHGlobal(size * iMaxNum); try { int iGet = dse_get_setting(staName, equName, menuPath, dsType, actSg, pBuffer, iMaxNum); IntPtr ipC = new IntPtr(pBuffer.ToInt64()); for (int i = 0; i < iGet; i++) { DATA_ITEM dataItem = (DATA_ITEM)Marshal.PtrToStructure(ipC, typeof(DATA_ITEM)); SettingData addData = new SettingData(dataItem); setting.Add(addData); ipC += size; } } finally { Marshal.FreeHGlobal(pBuffer); } if (setting.Count == 0) return null; else return setting; }