private void OnClientRPTCmd(object sender, CClient.CCmdArgs e) { ShowClientLog("【RPT COMMAND】:" + DateTime.Now.ToString("HH:mm:ss.") + DateTime.Now.Millisecond.ToString("D3") + "\r\n", Color.Black); ShowClientLog("【Topic】:", Color.Black); ShowClientLog(e.topic + "\r\n", Color.Blue); ShowClientLog("【Message】:", Color.Black); ShowClientLog(e.message + "\r\n", Color.Green); ECmdType cmdType = (ECmdType)e.data.Data[0].CmdType; ShowClientCmdName(e.data.Header.ID, e.data.Header.Name, cmdType.ToString()); if (cmdType == ECmdType.报状态) { cycleTime = System.Convert.ToDouble(e.data.Data[0].CmdInfo); ShowCycleTime(cycleTime); if (cycleTime != -1) { if (!task_Status) { task_Status = true; Task.Factory.StartNew(() => OnTask_Report()); } } } }
private void OnClientREQCmd(object sender, CClient.CCmdArgs e) { ShowClientLog("【REQ COMMAND】:" + DateTime.Now.ToString("HH:mm:ss.") + DateTime.Now.Millisecond.ToString("D3") + "\r\n", Color.Black); ShowClientLog("【Topic】:", Color.Black); ShowClientLog(e.topic + "\r\n", Color.Blue); ShowClientLog("【Message】:", Color.Black); ShowClientLog(e.message + "\r\n", Color.Green); ECmdType cmdType = (ECmdType)e.data.Data[0].CmdType; ShowClientCmdName(e.data.Header.ID, e.data.Header.Name, cmdType.ToString()); if (cmdType == ECmdType.控制指令) { string er = string.Empty; int runStatus = System.Convert.ToInt16(e.data.Data[0].CmdInfo); ShowRunStatus(runStatus); if (!_client.Reponse_Command(runStatus.ToString(), out er)) { ShowClientStatus(er, true); } } }
/// <summary> /// 发布点对点消息 /// </summary> /// <returns></returns> public bool Publish_Device(EMessageType messageType, ECmdType cmdType, string cmdName, string cmdInfo, List <CDevList> devList, out string er) { try { CMessage <CData_Cmd> message = new CMessage <CData_Cmd>(); CHeader header = new CHeader() { ID = _pc_idNo, Name = _pc_name, Type = (int)ENodeType.主控端, Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; message.Header = header; message.Data = new List <CData_Cmd>(); for (int i = 0; i < devList.Count; i++) { message.Data.Add(new CData_Cmd() { ID = devList[i].idNo, Name = devList[i].Name, CmdType = (int)cmdType, CmdName = cmdName, CmdInfo = cmdInfo, Remark1 = string.Empty, Remark2 = string.Empty }); } string topic = _publishTopics[messageType]; string cmd = CJSon.Serializer <CMessage <CData_Cmd> >(message); if (!_mqtt.Publish(topic, cmd, out er)) { return(false); } return(true); } catch (Exception ex) { er = ex.ToString(); return(false); } }
private void OnServiceRPTCmd(object sender, CService.CCmdArgs e) { lock (cmdLock) { ShowServiceLog("【RPT COMMAND】:" + DateTime.Now.ToString("HH:mm:ss.") + DateTime.Now.Millisecond.ToString("D3") + "\r\n", Color.Black); ShowServiceLog("【Topic】:", Color.Black); ShowServiceLog(e.topic + "\r\n", Color.Blue); ShowServiceLog("【Message】:", Color.Black); ShowServiceLog(e.message + "\r\n", Color.Green); ShowServiceStatus("接收到设备编号【" + e.data.Data[0].ID + "】请求指令", false); List <CDevList> devList = new List <CDevList>(); for (int i = 0; i < e.data.Data.Count; i++) { devList.Add(new CDevList() { idNo = e.data.Data[i].ID, Name = e.data.Data[i].Name } ); } string er = string.Empty; string cmdInfo = txtCmdInfo.Text; ECmdType cmdType = ECmdType.报状态; string cmdName = cmdType.ToString(); if (!_service.Publish_Device(EMessageType.广播指令, cmdType, cmdName, cmdInfo, devList, out er)) { ShowServiceStatus(er, true); return; } } }
/// <summary> /// 接收广播指令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnIotRPTCmd(object sender, CClient.CCmdArgs e) { FrmClient.Subscribe("【RPT COMMAND】:" + DateTime.Now.ToString("HH:mm:ss.") + DateTime.Now.Millisecond.ToString("D3") + "\r\n", Color.Black); FrmClient.Subscribe("【Topic】:", Color.Black); FrmClient.Subscribe(e.topic + "\r\n", Color.Blue); FrmClient.Subscribe("【Message】:", Color.Black); FrmClient.Subscribe(e.message + "\r\n", Color.Green); try { ECmdType cmdType = (ECmdType)e.data.Data[0].CmdType; if (cmdType == ECmdType.报状态) { for (int i = 0; i < e.data.Data.Count; i++) { if (!ContainDeviceId(e.data.Data[i].ID)) { continue; } Iot_CycleTime = System.Convert.ToDouble(e.data.Data[i].CmdInfo); if (Iot_CycleTime != -1) { if (!Iot_Task_Cycle) { Iot_Task_Cycle = true; Task.Factory.StartNew(() => OnTask_ReportStatus()); } } } } } catch (Exception ex) { FrmClient.Subscribe(ex.ToString() + "\r\n", Color.Red); } }
private void btnServerCmd_Click(object sender, EventArgs e) { try { btnServerCmd.Enabled = false; string er = string.Empty; EMessageType messType = EMessageType.广播指令; string cmdInfo = txtCmdInfo.Text; if (cmbMesType.SelectedIndex == 1) { messType = EMessageType.应答指令; EDevRunStatus runStat = (EDevRunStatus)Enum.Parse(typeof(EDevRunStatus), cmbCmdInfo.Text); cmdInfo = ((int)runStat).ToString(); } ECmdType cmdType = (ECmdType)cmbCmdType.SelectedIndex; string cmdName = cmdType.ToString(); if (!_service.Publish_ALL(messType, cmdType, cmdName, cmdInfo, out er)) { ShowServiceStatus(er, true); return; } ShowServiceStatus("发布消息OK", false); } catch (Exception ex) { ShowServiceStatus(ex.ToString(), false); } finally { btnServerCmd.Enabled = true; } }
/// <summary> /// 接收应答指令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public virtual void OnIotREQCmd(object sender, CClient.CCmdArgs e) { try { FrmClient.Subscribe("【REQ COMMAND】:" + DateTime.Now.ToString("HH:mm:ss.") + DateTime.Now.Millisecond.ToString("D3") + "\r\n", Color.Black); FrmClient.Subscribe("【Topic】:", Color.Black); FrmClient.Subscribe(e.topic + "\r\n", Color.Blue); FrmClient.Subscribe("【Message】:", Color.Black); FrmClient.Subscribe(e.message + "\r\n", Color.Green); ECmdType cmdType = (ECmdType)e.data.Data[0].CmdType; } catch (Exception ex) { FrmClient.Subscribe(ex.ToString() + "\r\n", Color.Red); } }
public static bool HasBit(byte val, ECmdType idx) { return((val & (1 << (byte)idx)) != 0); }
public static byte ToByte(ECmdType idx) { return((byte)(1 << (byte)idx)); }