/// <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); } }
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); } } }
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 { } })); } } }