예제 #1
0
        /// <summary>
        /// 发送一个下置命令消息到消息列表
        /// </summary>
        /// <param name="command"></param>
        private bool SendNetMQ(IO_COMMANDS command)
        {
            try
            {
                ///获取本地的IP地址
                IPAddress AddressIP = IPAddress.Any;
                foreach (IPAddress _IPAddress in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
                {
                    if (_IPAddress.AddressFamily.ToString() == "InterNetwork")
                    {
                        AddressIP = _IPAddress;
                    }
                }

                TcpData tcpData = new TcpData();
                byte[]  datas   = tcpData.StringToTcpByte(command.GetCommandString(), ScadaTcpOperator.置命令);

                AsyncTcpClient Client = new AsyncTcpClient
                {
                    IPAddress         = AddressIP,
                    Port              = int.Parse(Configs.GetValue("Port")),
                    AutoReconnect     = true,
                    ScadaClientType   = ScadaClientType.WebSystem,
                    ConnectedCallback = async(c, isReconnected) =>
                    {
                        if (!c.IsClosing)
                        {
                            await c.WaitAsync();   // 等待服务器


                            //连接到服务器后向服务器发送心跳握手数据
                        }
                    },
                    ConnectedTimeoutCallback = (c, isReconnected) =>
                    {
                    },
                    ClosedCallback = (c, isReconnected) =>
                    {
                    },

                    ReceivedCallback = (c, count) =>
                    {
                        return(Task.CompletedTask);
                    }
                };
                Client.RunAsync().GetAwaiter();
                Client.Send(new ArraySegment <byte>(datas));
                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #2
0
        private void ucBtnSend_BtnClick(object sender, EventArgs e)
        {
            if (comboIOPara.SelectedItem == null)
            {
                FrmDialog.ShowDialog(this, "请选择要设置的参数");
                return;
            }
            double dvalue = 0;

            if (tbValue.Text.Trim() == "")
            {
                FrmDialog.ShowDialog(this, "请输入下置的值");
                return;
            }
            if (!double.TryParse(tbValue.Text.Trim(), out dvalue))
            {
                FrmDialog.ShowDialog(this, "请输入下置的数值,不能是文本");
                return;
            }
            if (FrmDialog.ShowDialog(this, "您确定要下置命令吗?", "提醒", true, true, true, true) == DialogResult.OK)
            {
                IO_COMMANDS cmmd = new IO_COMMANDS();
                cmmd.COMMAND_DATE   = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                cmmd.COMMAND_ID     = GUIDTo16.GuidToLongID().ToString();
                cmmd.COMMAND_RESULT = "false";
                cmmd.COMMAND_USER   = IOCenterManager.IOProject.ServerConfig.User;
                cmmd.COMMAND_VALUE  = tbValue.Text.Trim();
                cmmd.IO_COMM_ID     = Communication.IO_COMM_ID;
                cmmd.IO_DEVICE_ID   = Device.IO_DEVICE_ID;
                cmmd.IO_SERVER_ID   = Server.SERVER_ID;
                cmmd.IO_LABEL       = ((IO_PARA)comboIOPara.SelectedItem).IO_LABEL;
                cmmd.IO_NAME        = ((IO_PARA)comboIOPara.SelectedItem).IO_NAME;
                cmmd.IO_ID          = ((IO_PARA)comboIOPara.SelectedItem).IO_ID;

                Command = cmmd;
                this.ucStep.StepIndex = 0;
                try
                {
                    Scada.AsyncNetTcp.TcpData tcpData = new Scada.AsyncNetTcp.TcpData();
                    byte[] datas = tcpData.StringToTcpByte(cmmd.GetCommandString(), Scada.AsyncNetTcp.ScadaTcpOperator.置命令);
                    this.ucStep.StepIndex = 1;
                }
                catch (Exception ex)
                {
                    FrmDialog.ShowDialog(this, ex.Message);
                }
            }
        }
예제 #3
0
 public void AddCommand(System.Net.EndPoint ep, string server, string communication, string device, string para, IO_COMMANDS command)
 {
     if (IOCenterManager.IsBackRun)
     {
         return;
     }
     if (ucbSendCommand.Checked)
     {
         if (listViewSendCommand.IsHandleCreated)
         {
             listViewSendCommand.BeginInvoke(new EventHandler(delegate
             {
                 try
                 {
                     ListViewItem lvi = new ListViewItem(command.COMMAND_DATE);
                     lvi.SubItems.Add(server);
                     lvi.SubItems.Add(communication);
                     lvi.SubItems.Add(device);
                     lvi.SubItems.Add(para);
                     lvi.SubItems.Add(command.COMMAND_VALUE);
                     if (command.COMMAND_RESULT == "true")
                     {
                         lvi.SubItems.Add("成功");
                     }
                     else
                     {
                         lvi.SubItems.Add("失败");
                     }
                     lvi.SubItems.Add(command.COMMAND_USER);
                     this.listViewSendCommand.Items.Insert(0, lvi);
                     if (this.listViewSendCommand.Items.Count > int.Parse(this.cbSendCommandSize.SelectedValue))
                     {
                         this.listViewSendCommand.Items.RemoveAt(this.listViewSendCommand.Items.Count - 1);
                     }
                     Scada.Logger.Logger.GetInstance().Info(command.COMMAND_DATE + "   " + command.GetCommandString());
                 }
                 catch
                 {
                 }
             }));
         }
     }
 }