public int[] AsyncRead(int connection, OpcDataSource source, int[] serverHandles, out int transactionId) { var ppErrors = IntPtr.Zero; AsyncIO.Read(connection, (OPCDATASOURCE)source, serverHandles.Length, serverHandles, out transactionId, out ppErrors); return(ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true)); }
public bool Read(OpcDataSource p_Src, int[] p_ArrHSrv, out OpcItemState[] p_ArrStat) { p_ArrStat = null; int l_Count = p_ArrHSrv.Length; IntPtr l_PtrStat; IntPtr l_PtrErr; int l_HResult = m_IfSync.Read(p_Src, l_Count, p_ArrHSrv, out l_PtrStat, out l_PtrErr); if (HResults.Failed(l_HResult)) { Marshal.ThrowExceptionForHR(l_HResult); } int l_RunErr = (int)l_PtrErr; int l_RunStat = (int)l_PtrStat; if ((l_RunErr == 0) || (l_RunStat == 0)) { Marshal.ThrowExceptionForHR(HResults.E_ABORT); } p_ArrStat = new OpcItemState[l_Count]; for (int i = 0; i < l_Count; ++i) { p_ArrStat[i] = new OpcItemState(); p_ArrStat[i].Error = Marshal.ReadInt32((IntPtr)l_RunErr); l_RunErr += 4; p_ArrStat[i].HandleClient = Marshal.ReadInt32((IntPtr)l_RunStat); if (HResults.Succeeded(p_ArrStat[i].Error)) { short l_VT = Marshal.ReadInt16((IntPtr)(l_RunStat + 16)); if (l_VT == (short)VarEnum.VT_ERROR) { p_ArrStat[i].Error = Marshal.ReadInt32((IntPtr)(l_RunStat + 24)); } p_ArrStat[i].Timestamp = Marshal.ReadInt64((IntPtr)(l_RunStat + 4)); p_ArrStat[i].Quality = Marshal.ReadInt16((IntPtr)(l_RunStat + 12)); p_ArrStat[i].DataValue = Marshal.GetObjectForNativeVariant((IntPtr)(l_RunStat + 16)); DummyVariant.VariantClear((IntPtr)(l_RunStat + 16)); } else { p_ArrStat[i].DataValue = null; } l_RunStat += 32; } Marshal.FreeCoTaskMem(l_PtrStat); Marshal.FreeCoTaskMem(l_PtrErr); return(l_HResult == HResults.S_OK); }
public OpcItemState[] Read(OpcDataSource source, int[] serverHandles) { var ppItemValues = IntPtr.Zero; var ppErrors = IntPtr.Zero; SyncIO.Read((OPCDATASOURCE)source, serverHandles.Length, serverHandles, out ppItemValues, out ppErrors); var errors = ComUtils.GetInt32s(ref ppErrors, serverHandles.Length, true); var values = GetStructures <OPCITEMSTATE>(ppItemValues, serverHandles.Length) .Zip(errors, (v, e) => new OpcItemState { ClientHandle = v.hClient, DataValue = v.vDataValue, ErrorCode = e, Quality = v.wQuality, Timestamp = ComUtils.GetDateTime(v.ftTimeStamp) }) .ToArray(); return(values); }
/// <summary> /// 更新单机姿态 /// </summary> /// <param name="machine_name">单机名称</param> /// <param name="radar_info">雷达信息实体</param> /// <param name="gnss_info">GNSS信息实体</param> /// <returns></returns> public int UpdateMachinePosture(string machine_name, RadarProtoInfo radar_info, GnssProtoInfo gnss_info, OpcDataSource opc_source) { string sql = string.Format("update t_rcms_machineposture_time t set t.walking = {1}, t.pitch = {2}, t.yaw = {3}, local_tipx = {4}, local_tipy = {5}, local_tipz = {6}, walking_left_plc = {7}, walking_right_plc = {8}, pitch_plc = {9}, yaw_plc = {10}, local_tipz_abs = {11}, working = {12}, isfixed = {13}, quality = '{14}', latitude = {15}, longitude = {16}, altitude = {17}, coal_on_belt = {18}, local_antex = {19}, local_antey = {20}, local_antez = {21}, stream_per_hour = {22}, stream_total = {23}, wheel_left_dist = {24}, wheel_right_dist = {25}, belt_dist = {26}, wheel_power_raw = {27}, wheel_power_polished = {28}, wheel_left_radius = {29:f3}, wheel_right_radius = {30:f3}, wheel_left_surface_angle = {31}, wheel_right_surface_angle = {32}, beyond_stack_left = {33}, beyond_stack_right = {34}, t.time = sysdate where t.machine_name = '{0}'", machine_name, gnss_info.WalkingPosition, gnss_info.PitchAngle, gnss_info.YawAngle, gnss_info.LocalCoor_Tipx, gnss_info.LocalCoor_Tipy, gnss_info.LocalCoor_Tipz, opc_source.WalkingPosition_Plc, opc_source.WalkingPosition_Plc, opc_source.PitchAngle_Plc, opc_source.YawAngle_Plc, gnss_info.LocalCoor_Tipz + Config.HeightOffset, gnss_info.Working ? 1 : 0, gnss_info.IsFixed ? 1 : 0, gnss_info.PositionQuality, gnss_info.Longitude, gnss_info.Latitude, gnss_info.Altitude, opc_source.CoalOnBeltPlc, gnss_info.LocalCoor_Antex, gnss_info.LocalCoor_Antey, gnss_info.LocalCoor_Antez, opc_source.StreamPerHour, opc_source.StreamTotal, radar_info.DistWheelLeft, radar_info.DistWheelRight, radar_info.DistBelt, opc_source.WheelPowerRaw, opc_source.WheelPowerPolished, radar_info.RadiusAverageLeft, radar_info.RadiusAverageRight, radar_info.SurfaceAngleWheelLeft, radar_info.SurfaceAngleWheelRight, opc_source.WheelLeftBeyondStack, opc_source.WheelRightBeyondStack); return(this.provider.ExecuteSql(sql)); }
public void Refresh2(OpcDataSource p_SourceMode, int p_TransactionID, out int p_CancelID) { m_IfAsync.Refresh2(p_SourceMode, p_TransactionID, out p_CancelID); }
public void Refresh(int connection, OpcDataSource source, out int transactionId) { AsyncIO.Refresh(connection, (OPCDATASOURCE)source, out transactionId); }