Example #1
0
        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());
                    }
                }
            }
        }
Example #2
0
        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);
                }
            }
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        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;
                }
            }
        }
Example #5
0
        /// <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);
            }
        }
Example #6
0
        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;
            }
        }
Example #7
0
        /// <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);
            }
        }
Example #8
0
 public static bool HasBit(byte val, ECmdType idx)
 {
     return((val & (1 << (byte)idx)) != 0);
 }
Example #9
0
 public static byte ToByte(ECmdType idx)
 {
     return((byte)(1 << (byte)idx));
 }