/// <summary> /// 生成测量序号 /// </summary> /// <param name="pMessageFrame"></param> /// <param name="pIsNewMeasureNumber"></param> /// <param name="pChannelId"> </param> /// <param name="pPricode"> </param> private int GenerateMeasureSerialNumber(CommandMessageFrame pMessageFrame, bool pIsNewMeasureNumber, int pChannelId, int pPricode) { pMessageFrame.Header.Tag = -1; string v = string.Format("{0:d2}{1:d2}{2:d2}{3:d2}{4:d2}", DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second); int serialNumber = int.Parse(v); var key = pChannelId; if (pIsNewMeasureNumber) { pMessageFrame.Header.Tag = serialNumber;//生成测量序号 _deviceMeasureStateCaches[key] = new MonitorMeasureState { MeasureSerialNumber = serialNumber, Channelid = pChannelId, Pricode = pPricode }; } else { //使用已缓存某设备的测量序号 if (_deviceMeasureStateCaches.ContainsKey(key)) { var state = _deviceMeasureStateCaches[key]; pMessageFrame.Header.Tag = serialNumber = state.MeasureSerialNumber; } else { pMessageFrame.Header.Tag = -1; serialNumber = -1; } } return(serialNumber); }
/// <summary> /// 发送测量序号 /// </summary> public void ChannelCommand(int channelid, int pricode) { var cmdMessageFrame = new CommandMessageFrame(RmtpCommand.CHANNEL); var serialNumber = GenerateMeasureSerialNumber(cmdMessageFrame, true, channelid, pricode); var channelList = new List <Tuple <string, string> > { new Tuple <string, string>("MSN", serialNumber.ToString()), }; ExecuteCommand(RmtpCommand.CHANNEL, new object[] { channelList }); }
/// <summary> /// 执行RMTP监测相关指令(监测指令和非监测指令) /// </summary> /// <param name="pCommand">命令类型</param> /// <param name="pParameter">命令携带参数</param> /// <param name="pPricode">是正在进行的控制的优先级代码,默认值:1</param> /// <param name="pChannelid">执行任务的设备通道号,默认值:0</param> /// <param name="pIsNewMeasureNumber">true - 生成新测量序号,false - 保持原测量序号</param> public void ExecuteCommand(RmtpCommand pCommand, object pParameter = null, int pPricode = 1, int pChannelid = 0, bool pIsNewMeasureNumber = false) { if (_rmtpControler == null || !_rmtpControler.IsConnected) { AssistTool.WriteOutput(string.Format("Rmtp服务连接已断开,指令“{0}”无效", pCommand)); return; } if (!_executeRmtpFun.ContainsKey(pCommand)) { return; } var cmdMessageFrame = new CommandMessageFrame(pCommand); _executeRmtpFun[pCommand].CommandHandler(cmdMessageFrame, new[] { pParameter, pPricode, pChannelid }); cmdMessageFrame.Header.ChannelId = pChannelid; _rmtpControler.Send(cmdMessageFrame); }