/// <summary> /// 校准参数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void checkGetMessage_CalibrationMessageArrived(object sender, TransmitEventArgs <TypeIdentification, APDU> e) { try { appMessageManager.UpdateReceiveSequenceNumber(e.mdata2.APCI.TransmitSequenceNumber, e.mdata2.APCI.ReceiveSequenceNumber); BeginInvokeUpdateHistory(e.mdata2.FrameArray, e.mdata2.FrameArray.Length, "从站发送:I帧:校准参数"); switch ((TypeIdentification)e.mdata2.ASDU.TypeId) { case TypeIdentification.P_AC_NA_1: // 参数激活 { break; } case TypeIdentification.P_ME_NC_1: // 测量值参数,短浮点数 { break; } } } catch (Exception ex) { MessageBox.Show(ex.Message, "校准命令"); } }
/// <summary> /// 电能脉冲 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void checkGetMessage_ElectricEnergyArrived(object sender, TransmitEventArgs <TypeIdentification, APDU> e) { try { appMessageManager.UpdateReceiveSequenceNumber(e.mdata2.APCI.TransmitSequenceNumber, e.mdata2.APCI.ReceiveSequenceNumber); BeginInvokeUpdateHistory(e.mdata2.FrameArray, e.mdata2.FrameArray.Length, "从站发送:I帧:电能脉冲"); switch ((TypeIdentification)e.mdata2.ASDU.TypeId) { case TypeIdentification.C_CI_NA_1: //电能脉冲召唤 { break; } case TypeIdentification.M_IT_NA_1: //累积量 { Action <APDU> update = UpdateElectricEnergy; Dispatcher.BeginInvoke(update, e.mdata2); break; } } } catch (Exception ex) { MessageBox.Show(ex.Message, "遥测命令"); } }
/// <summary> /// 遥控命令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void checkGetMessage_TelecontrolCommandArrived(object sender, TransmitEventArgs <TypeIdentification, APDU> e) { try { var id = (TypeIdentification)e.mdata2.ASDU.TypeId; var cot = (CauseOfTransmissionList)e.mdata2.ASDU.CauseOfTransmission1; var m = eventTypeIDManager.GetEventProcess(id); if (m != null) { m.Event.Set(); } appMessageManager.UpdateReceiveSequenceNumber(e.mdata2.APCI.TransmitSequenceNumber, e.mdata2.APCI.ReceiveSequenceNumber); BeginInvokeUpdateHistory(e.mdata2.FrameArray, e.mdata2.FrameArray.Length, "从站发送:I帧:遥控命令:"); switch (cot) { case CauseOfTransmissionList.ActivationACK: //激活确认 { SendSupervisoryFrame((ushort)(appMessageManager.RealReceiveSequenceNumber)); Action <APDU> lamp = ar => { UpdateTelecontrolState(ar); }; Dispatcher.BeginInvoke(lamp, e.mdata2); break; } case CauseOfTransmissionList.DeactivateACK: //停止激活确认 { break; } case CauseOfTransmissionList.ActivateTermination: //激活终止 { break; } case CauseOfTransmissionList.Deactivate: { break; } } //Action<APDU> update = UpdateTelesignalisation; //Dispatcher.BeginInvoke(update, e.mdata2); } catch (Exception ex) { MessageBox.Show(ex.Message, "checkGetMessage_TelecontrolCommandArrived"); } }
/// <summary> /// 遥信信息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void checkGetMessage_TelesignalisationMessageArrived(object sender, TransmitEventArgs <TypeIdentification, APDU> e) { try { appMessageManager.UpdateReceiveSequenceNumber(e.mdata2.APCI.TransmitSequenceNumber, e.mdata2.APCI.ReceiveSequenceNumber); BeginInvokeUpdateHistory(e.mdata2.FrameArray, e.mdata2.FrameArray.Length, "从站发送:I帧:遥信命令:"); Action <APDU> update = UpdateTelesignalisation; Dispatcher.BeginInvoke(update, e.mdata2); } catch (Exception ex) { MessageBox.Show(ex.Message, "heckGetMessage_TelesignalisationMessageArrived"); } }
/// <summary> /// 文件服务 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void checkGetMessage_FileServerArrived(object sender, TransmitEventArgs <TypeIdentification, FilePacket> e) { try { appMessageManager.UpdateReceiveSequenceNumber(e.mdata2.APCI.TransmitSequenceNumber, e.mdata2.APCI.ReceiveSequenceNumber); BeginInvokeUpdateHistory(e.mdata2.FrameArray, e.mdata2.FrameArray.Length, "从站发送:I帧:文件服务:"); if (callDirectoryServer != null) { callDirectoryServer.Enqueue(e.mdata2); } } catch (Exception ex) { MessageBox.Show(ex.Message, "checkGetMessage_FileServerArrived"); } }
/// <summary> /// 遥测命令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void checkGetMessage_TelemeteringMessageArrived(object sender, TransmitEventArgs <TypeIdentification, APDU> e) { try { appMessageManager.UpdateReceiveSequenceNumber(e.mdata2.APCI.TransmitSequenceNumber, e.mdata2.APCI.ReceiveSequenceNumber); BeginInvokeUpdateHistory(e.mdata2.FrameArray, e.mdata2.FrameArray.Length, "从站发送:I帧:遥测命令"); //var m = eventTransmissionManager.GetEventProcess(TransmissionCotrolFunction.StartDataTransmission); //if (m != null) //{ // m.Event.Set(); //} Action <APDU> update = UpdateTelemetering; Dispatcher.BeginInvoke(update, e.mdata2); } catch (Exception ex) { MessageBox.Show(ex.Message, "遥测命令"); } }
private void btn_Ok_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(txt_Code.Text)) { MessageBox.Show("请输入编号", " 警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification); return; } DataTable dt = new DAL_dt_Settings().Getdt_SettingsByCode(txt_Code.Text); if (dt == null) { MessageBox.Show("暂未查询此编号内容", " 警告", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification); return; } var args = new TransmitEventArgs(dt.Rows[0]["dt_Code"].ToString(), dt.Rows[0]["info_DangH"].ToString()); Transmit(this, args); this.Dispose(); }
/// <summary> /// S帧,监控数据到达 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void checkGetMessage_SupervisoryCommandArrived(object sender, TransmitEventArgs <ushort, byte[]> e) { try { //同步释放相应事件 if (supervisoryFrameEvent != null) { supervisoryFrameEvent.Set(); } BeginInvokeUpdateHistory(e.mdata2, e.mdata2.Length, "从站发送:S帧:接收序列号:" + e.mdata1.ToString()); appMessageManager.AckReceiveSequenceNumber(e.mdata1); } catch (Exception ex) { MessageBox.Show(ex.Message, "checkGetMessage_SupervisoryCommandArrived"); } // throw new NotImplementedException(); }
/// <summary> /// 未知ID命令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void checkGetMessage_UnknowMessageArrived(object sender, TransmitEventArgs <TypeIdentification, byte[]> e) { MessageBox.Show(e.mdata1.ToString(), "未识别的ID帧"); }
/// <summary> ///U帧 TCF传输控制功能事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void checkGetMessage_TransmitControlCommandArrived( object sender, TransmitEventArgs <TransmissionCotrolFunction, byte[]> e) { try { //同步释放相应事件 //var m = eventTransmissionManager.GetEventProcess(e.mdata1); //if (m != null) //{ // m.Event.Set(); //} switch (e.mdata1) { case TransmissionCotrolFunction.StartDataTransmission: { BeginInvokeUpdateHistory(e.mdata2, e.mdata2.Length, "从站发送:U帧:启动数据传输STARTDT命令:"); break; } case TransmissionCotrolFunction.AcknowledgementStartDataTransmission: { BeginInvokeUpdateHistory(e.mdata2, e.mdata2.Length, "从站发送:U帧:启动数据传输STARTDT确认:"); Action lamp = () => { UpdateDeviceOnlineStatusBar(true); }; Dispatcher.BeginInvoke(lamp); var m = eventTransmissionManager.GetEventProcess(TransmissionCotrolFunction.StartDataTransmission); if (m != null) { m.Event.Set(); } break; } case TransmissionCotrolFunction.StopDataTransmission: { BeginInvokeUpdateHistory(e.mdata2, e.mdata2.Length, "从站发送:U帧:停止数据传输STARTDT命令:"); break; } case TransmissionCotrolFunction.AcknowledgementStopDataTransmission: { BeginInvokeUpdateHistory(e.mdata2, e.mdata2.Length, "从站发送:U帧:停止数据传输STARTDT确认:"); break; } case TransmissionCotrolFunction.TestFrame: { BeginInvokeUpdateHistory(e.mdata2, e.mdata2.Length, "从站发送:U帧:测试帧TESTFR命令"); SendTCFCommand(TransmissionCotrolFunction.AcknowledgementTestFrame); var m = eventTransmissionManager.GetEventProcess(TransmissionCotrolFunction.AcknowledgementTestFrame); if (m != null) { m.Event.Set(); } break; } case TransmissionCotrolFunction.AcknowledgementTestFrame: { BeginInvokeUpdateHistory(e.mdata2, e.mdata2.Length, "从站发送:U帧:测试帧TESTFR确认"); break; } } } catch (Exception ex) { MessageBox.Show(ex.Message, "checkGetMessage_TransmitControlCommandArrive"); } }