葫芦岛
using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using UserDataProtocol; namespace FBGroundControl.Forms { public partial class HLDReception : Form { public HLDReception() { InitializeComponent(); LoadIPv4Addresses();//刷新IP列表 Lhldjs = new List<jylink_huludao_JS>(); } private void HLDReception_FormClosing(object sender, FormClosingEventArgs e) { timer1.Stop();//关闭数据刷新 if (udpReceiver != null) udpReceiver.StopListening();//关闭数据监听 } #region 监听逻辑 private UdpMulticastReceiver udpReceiver; private List<jylink_huludao_JS> Lhldjs; //获取本机的所有IPv4地址并将它们填充到下拉控件中 private void LoadIPv4Addresses() { var ipAddresses = GetLocalIPv4Addresses(); comboBoxIP.Items.AddRange(ipAddresses); } private string[] GetLocalIPv4Addresses() { return NetworkInterface.GetAllNetworkInterfaces() .SelectMany(ni => ni.GetIPProperties().UnicastAddresses) .Where(ua => ua.Address.AddressFamily == AddressFamily.InterNetwork) .Select(ua => ua.Address.ToString()) .ToArray(); } private void btn_Startlistening_Click(object sender, EventArgs e) { string IP = comboBoxIP.Text; string MIp = tbx_zbIP.Text; string port = tbx_port.Text; int portNumber = 0; if (!IsValidIp(IP)) { return; } if (!IsValidIp(MIp)) { return; } if (!int.TryParse(port, out portNumber)) { tbx_port.BackColor = Color.Red; return; } else { tbx_port.BackColor = Color.White; } udpReceiver = new UdpMulticastReceiver(IP, MIp, portNumber); udpReceiver.StartListening(); } public bool IsValidIp(string ip) { return IPAddress.TryParse(ip, out _); } private void btn_Turnofflistening_Click(object sender, EventArgs e) { if (udpReceiver != null) udpReceiver.StopListening(); } int oldvalue = 0; byte[] idsum; private void timer1_Tick(object sender, EventArgs e) { if (udpReceiver.TryDequeueData(out byte[] data)) { byte[] parsedData = udpReceiver.ParseData(data, 23); // 假设固定长度为23 jylink_huludao_JS hldjs = (jylink_huludao_JS)ByteToStruct(parsedData, typeof(jylink_huludao_JS)); if (!MainForm.instance.Table_id.Contains(hldjs.bid))//判断是否为本地站组内靶机编号 { return; } if (Lhldjs.FindAll(s => s.bid == hldjs.bid).Count > 0) { jylink_huludao_JS nhldjs = new jylink_huludao_JS(); nhldjs.xinyuan = hldjs.xinyuan; nhldjs.xinsu = hldjs.xinsu; nhldjs.m_type = hldjs.m_type; nhldjs.mid = hldjs.mid; nhldjs.time = hldjs.time; nhldjs.dec_state = hldjs.dec_state; nhldjs.bid = hldjs.bid; nhldjs.times = hldjs.times; nhldjs.flight_mode1 = hldjs.flight_mode1; nhldjs.flight_mode2 = hldjs.flight_mode2; nhldjs.flight_mode3 = hldjs.flight_mode3; nhldjs.flight_mode4 = hldjs.flight_mode4; nhldjs.kz_type = hldjs.kz_type; Lhldjs.Add(nhldjs); } else { jylink_huludao_JS ohldjs = Lhldjs.Find(s => s.bid == hldjs.bid); ohldjs.xinyuan = hldjs.xinyuan; ohldjs.xinsu = hldjs.xinsu; ohldjs.m_type = hldjs.m_type; ohldjs.mid = hldjs.mid; ohldjs.time = hldjs.time; ohldjs.dec_state = hldjs.dec_state; ohldjs.bid = hldjs.bid; ohldjs.times = hldjs.times; ohldjs.flight_mode1 = hldjs.flight_mode1; ohldjs.flight_mode2 = hldjs.flight_mode2; ohldjs.flight_mode3 = hldjs.flight_mode3; ohldjs.flight_mode4 = hldjs.flight_mode4; ohldjs.kz_type = hldjs.kz_type; } } if (Lhldjs.Count == 0) { return; } if (this.IsHandleCreated && !IsDisposed) BeginInvoke(new Action(delegate { idsum = new byte[Lhldjs.Count]; if (Lhldjs.Count != oldvalue) { this.dataGridView1.Rows.Clear(); this.dataGridView1.Rows.Add(Lhldjs.Count); } int ii = 0; foreach (var JY in Lhldjs) { idsum[ii] = JY.bid; ii++; } Array.Sort(idsum); oldvalue = Lhldjs.Count; for (int i = 0; i < idsum.Length; i++) { dataGridView1.Rows[i].Cells[zdbh.Index].Value = idsum[i].ToString();//战斗编号 foreach (var JY in Lhldjs) { if (idsum[i] == JY.bid) { dataGridView1.Rows[i].Cells[xy.Index].Value = JY.xinyuan.ToString();//信源 dataGridView1.Rows[i].Cells[xs.Index].Value = JY.xinsu.ToString();//信宿 dataGridView1.Rows[i].Cells[xxlb.Index].Value = JY.m_type.ToString();//信息类别 dataGridView1.Rows[i].Cells[mbbh.Index].Value = JY.mid.ToString();//目标编号 dataGridView1.Rows[i].Cells[bjsj.Index].Value = BJSystemTime(JY.time);//北京时间 string eqstatus = ""; if (GetBitAtPosition(JY.dec_state, 0) == 1) { eqstatus += "上行锁定"; } else { eqstatus += "上行失锁"; } if (GetBitAtPosition(JY.dec_state, 1) == 1) { eqstatus += " 下行锁定"; } else { eqstatus += " 下行失锁"; } dataGridView1.Rows[i].Cells[zbzt.Index].Value = JY.dec_state.ToString();//装备状态 dataGridView1.Rows[i].Cells[zdsj.Index].Value = ZDSystemTime(JY.times);//战斗时间 dataGridView1.Rows[i].Cells[sdtj.Index].Value = JY.flight_mode1.ToString();//速度调节 dataGridView1.Rows[i].Cells[hxtj.Index].Value = JY.flight_mode2.ToString();//航向调节 dataGridView1.Rows[i].Cells[cpjtj.Index].Value = JY.flight_mode3.ToString();//侧偏距调节 dataGridView1.Rows[i].Cells[gdtj.Index].Value = JY.flight_mode4.ToString();//高度调节指令 if (JY.kz_type == 1) { dataGridView1.Rows[i].Cells[kzzs.Index].Value = "速度控制"; }//控制指示标志字 else if (JY.kz_type == 2) { dataGridView1.Rows[i].Cells[kzzs.Index].Value = "航向控制"; } else if (JY.kz_type == 3) { dataGridView1.Rows[i].Cells[kzzs.Index].Value = "测偏控制"; } else if (JY.kz_type == 4) { dataGridView1.Rows[i].Cells[kzzs.Index].Value = "高度控制"; } } } } })); } //北京时间解析 public string BJSystemTime(uint timestamp) { // 将时间戳转换为毫秒数 long totalMilliseconds = timestamp / 10; // 将毫秒数转换为秒数 long totalSeconds = totalMilliseconds / 1000; // 计算小时 int hours = (int)(totalSeconds / 3600); totalSeconds %= 3600; // 计算分钟 int minutes = (int)(totalSeconds / 60); // 剩下的就是秒数 int seconds = (int)(totalSeconds % 60); return $"{hours:D2}:{minutes:D2}:{seconds:D2}";//UTC Time: } //战斗时间解析 public string ZDSystemTime(uint timestamp) { // 将时间戳转换为毫秒数 long totalMilliseconds = timestamp; // 将毫秒数转换为秒数 long totalSeconds = totalMilliseconds / 1000; // 计算小时 int hours = (int)(totalSeconds / 3600); totalSeconds %= 3600; // 计算分钟 int minutes = (int)(totalSeconds / 60); // 剩下的就是秒数 int seconds = (int)(totalSeconds % 60); return $"{hours:D2}:{minutes:D2}:{seconds:D2}";//UTC Time: } //byte转数据 public object ByteToStruct(byte[] bytes, Type type) { int size = Marshal.SizeOf(type); if (size > bytes.Length) { return null; } //分配结构体内存空间 IntPtr structPtr = Marshal.AllocHGlobal(size); //将byte数组拷贝到分配好的内存空间 Marshal.Copy(bytes, 0, structPtr, size); //将内存空间转换为目标结构体 object obj = Marshal.PtrToStructure(structPtr, type); //释放内存空间 Marshal.FreeHGlobal(structPtr); return obj; } //获取byte中的bit private int GetBitAtPosition(byte value, int position) { // 检查位置是否在有效范围内(0-7) if (position < 0 || position > 7) { throw new ArgumentOutOfRangeException(nameof(position), "位置必须在0到7之间"); } // 获取指定位置的bit,使用位运算 return (value >> position) & 1; } #endregion #region 数据接收处理类 [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 23)] public struct jylink_huludao_JS//数据接收 { public byte xinyuan;//信源 public byte xinsu;//信宿 public byte m_type;//信息类别 public byte mid;//目标编号 public UInt32 time;//北京时间 public byte dec_state;//装备状态 public byte bid;//战斗编号(战斗编号可灵活配置) public UInt32 times;//战斗时间 public short flight_mode1;//速度调节 public short flight_mode2;//航向调节 public short flight_mode3;//侧偏距调节 public short flight_mode4;//高度调节指令 public byte kz_type;//控制编制 } public class UdpMulticastReceiver { private UdpClient udpClient; private IPEndPoint localEndPoint; private Thread receiveThread; private ConcurrentQueue<byte[]> dataQueue; private volatile bool listening; public UdpMulticastReceiver(string Ip, string multicastIp, int port) { localEndPoint = new IPEndPoint(IPAddress.Parse(Ip), port); udpClient = new UdpClient(); udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); udpClient.Client.Bind(localEndPoint); if (!string.IsNullOrEmpty(multicastIp)) { udpClient.JoinMulticastGroup(IPAddress.Parse(multicastIp)); } dataQueue = new ConcurrentQueue<byte[]>(); } public void StartListening() { listening = true; receiveThread = new Thread(new ThreadStart(ReceiveData)); receiveThread.IsBackground = true; receiveThread.Start(); } public void StopListening() { listening = false; udpClient.DropMulticastGroup(localEndPoint.Address); udpClient.Close(); if (receiveThread != null && receiveThread.IsAlive) { receiveThread.Join(); } } private void ReceiveData() { while (listening) { try { byte[] data = udpClient.Receive(ref localEndPoint); dataQueue.Enqueue(data); } catch (Exception ex) { // Handle exception //MessageBox.Show("Error receiving data: " + ex.Message); } } } public bool TryDequeueData(out byte[] data) { return dataQueue.TryDequeue(out data); } public byte[] ParseData(byte[] data, int length) { if (data.Length < length) { return null; // Not enough data } return data; } } #endregion } } namespace FBGroundControl.Forms { partial class HLDReception { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); this.dataGridView1 = new System.Windows.Forms.DataGridView(); this.xy = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.xs = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.xxlb = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.mbbh = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.bjsj = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.zbzt = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.zdbh = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.zdsj = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.sdtj = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.hxtj = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.cpjtj = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.gdtj = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.kzzs = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.panel2 = new System.Windows.Forms.Panel(); this.btn_Startlistening = new System.Windows.Forms.Button(); this.btn_Turnofflistening = new System.Windows.Forms.Button(); this.tbx_port = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.tbx_zbIP = new System.Windows.Forms.TextBox(); this.label2 = new System.Windows.Forms.Label(); this.timer1 = new System.Windows.Forms.Timer(this.components); this.label1 = new System.Windows.Forms.Label(); this.comboBoxIP = new System.Windows.Forms.ComboBox(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); this.panel2.SuspendLayout(); this.SuspendLayout(); // // dataGridView1 // this.dataGridView1.AllowUserToAddRows = false; this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle4.Font = new System.Drawing.Font("宋体", 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4; this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.xy, this.xs, this.xxlb, this.mbbh, this.bjsj, this.zbzt, this.zdbh, this.zdsj, this.sdtj, this.hxtj, this.cpjtj, this.gdtj, this.kzzs}); dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window; dataGridViewCellStyle5.Font = new System.Drawing.Font("宋体", 15F); dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText; dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False; this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle5; this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; this.dataGridView1.Location = new System.Drawing.Point(0, 30); this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.ReadOnly = true; dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle6.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.dataGridView1.RowHeadersDefaultCellStyle = dataGridViewCellStyle6; this.dataGridView1.RowHeadersWidth = 50; this.dataGridView1.RowTemplate.Height = 20; this.dataGridView1.Size = new System.Drawing.Size(800, 420); this.dataGridView1.TabIndex = 5; // // xy // this.xy.HeaderText = "信源"; this.xy.Name = "xy"; this.xy.ReadOnly = true; this.xy.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // xs // this.xs.HeaderText = "信宿"; this.xs.Name = "xs"; this.xs.ReadOnly = true; this.xs.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // xxlb // this.xxlb.HeaderText = "信息类别"; this.xxlb.Name = "xxlb"; this.xxlb.ReadOnly = true; this.xxlb.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // mbbh // this.mbbh.HeaderText = "目标编号"; this.mbbh.Name = "mbbh"; this.mbbh.ReadOnly = true; this.mbbh.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // bjsj // this.bjsj.HeaderText = "北京时间"; this.bjsj.Name = "bjsj"; this.bjsj.ReadOnly = true; this.bjsj.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // zbzt // this.zbzt.HeaderText = "装备状态"; this.zbzt.Name = "zbzt"; this.zbzt.ReadOnly = true; this.zbzt.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // zdbh // this.zdbh.HeaderText = "战斗编号"; this.zdbh.Name = "zdbh"; this.zdbh.ReadOnly = true; this.zdbh.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // // zdsj // this.zdsj.HeaderText = "战斗时间"; this.zdsj.Name = "zdsj"; this.zdsj.ReadOnly = true; this.zdsj.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; this.zdsj.Visible = false; // // sdtj // this.sdtj.HeaderText = "速度调节"; this.sdtj.Name = "sdtj"; this.sdtj.ReadOnly = true; this.sdtj.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; this.sdtj.Visible = false; // // hxtj // this.hxtj.HeaderText = "航向调节"; this.hxtj.Name = "hxtj"; this.hxtj.ReadOnly = true; // // cpjtj // this.cpjtj.HeaderText = "侧偏距调节"; this.cpjtj.Name = "cpjtj"; this.cpjtj.ReadOnly = true; // // gdtj // this.gdtj.HeaderText = "高度调节"; this.gdtj.Name = "gdtj"; this.gdtj.ReadOnly = true; // // kzzs // this.kzzs.HeaderText = "控制指示"; this.kzzs.Name = "kzzs"; this.kzzs.ReadOnly = true; // // panel2 // this.panel2.Controls.Add(this.btn_Startlistening); this.panel2.Controls.Add(this.btn_Turnofflistening); this.panel2.Controls.Add(this.tbx_port); this.panel2.Controls.Add(this.label3); this.panel2.Controls.Add(this.tbx_zbIP); this.panel2.Controls.Add(this.label2); this.panel2.Controls.Add(this.comboBoxIP); this.panel2.Controls.Add(this.label1); this.panel2.Dock = System.Windows.Forms.DockStyle.Top; this.panel2.Location = new System.Drawing.Point(0, 0); this.panel2.Name = "panel2"; this.panel2.Size = new System.Drawing.Size(800, 30); this.panel2.TabIndex = 6; // // btn_Startlistening // this.btn_Startlistening.Dock = System.Windows.Forms.DockStyle.Right; this.btn_Startlistening.Location = new System.Drawing.Point(668, 0); this.btn_Startlistening.Name = "btn_Startlistening"; this.btn_Startlistening.Size = new System.Drawing.Size(66, 30); this.btn_Startlistening.TabIndex = 7; this.btn_Startlistening.Text = "启动监听"; this.btn_Startlistening.UseVisualStyleBackColor = true; this.btn_Startlistening.Click += new System.EventHandler(this.btn_Startlistening_Click); // // btn_Turnofflistening // this.btn_Turnofflistening.Dock = System.Windows.Forms.DockStyle.Right; this.btn_Turnofflistening.Location = new System.Drawing.Point(734, 0); this.btn_Turnofflistening.Name = "btn_Turnofflistening"; this.btn_Turnofflistening.Size = new System.Drawing.Size(66, 30); this.btn_Turnofflistening.TabIndex = 6; this.btn_Turnofflistening.Text = "关闭监听"; this.btn_Turnofflistening.UseVisualStyleBackColor = true; this.btn_Turnofflistening.Click += new System.EventHandler(this.btn_Turnofflistening_Click); // // tbx_port // this.tbx_port.Location = new System.Drawing.Point(374, 6); this.tbx_port.Name = "tbx_port"; this.tbx_port.Size = new System.Drawing.Size(100, 21); this.tbx_port.TabIndex = 5; // // label3 // this.label3.AutoSize = true; this.label3.Location = new System.Drawing.Point(327, 9); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(41, 12); this.label3.TabIndex = 4; this.label3.Text = "端口号"; // // tbx_zbIP // this.tbx_zbIP.Location = new System.Drawing.Point(221, 6); this.tbx_zbIP.Name = "tbx_zbIP"; this.tbx_zbIP.Size = new System.Drawing.Size(100, 21); this.tbx_zbIP.TabIndex = 3; // // label2 // this.label2.AutoSize = true; this.label2.Location = new System.Drawing.Point(162, 9); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(53, 12); this.label2.TabIndex = 2; this.label2.Text = "组播地址"; // // timer1 // this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(12, 9); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(17, 12); this.label1.TabIndex = 0; this.label1.Text = "IP"; // // comboBoxIP // this.comboBoxIP.FormattingEnabled = true; this.comboBoxIP.Location = new System.Drawing.Point(35, 6); this.comboBoxIP.Name = "comboBoxIP"; this.comboBoxIP.Size = new System.Drawing.Size(121, 20); this.comboBoxIP.TabIndex = 1; // // HLDReception // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); this.Controls.Add(this.dataGridView1); this.Controls.Add(this.panel2); this.Name = "HLDReception"; this.Text = "葫芦岛指令接收"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.HLDReception_FormClosing); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); this.panel2.ResumeLayout(false); this.panel2.PerformLayout(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.DataGridView dataGridView1; private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Label label2; private System.Windows.Forms.TextBox tbx_zbIP; private System.Windows.Forms.TextBox tbx_port; private System.Windows.Forms.Label label3; private System.Windows.Forms.Button btn_Turnofflistening; private System.Windows.Forms.Button btn_Startlistening; public System.Windows.Forms.Timer timer1; private System.Windows.Forms.DataGridViewTextBoxColumn xy; private System.Windows.Forms.DataGridViewTextBoxColumn xs; private System.Windows.Forms.DataGridViewTextBoxColumn xxlb; private System.Windows.Forms.DataGridViewTextBoxColumn mbbh; private System.Windows.Forms.DataGridViewTextBoxColumn bjsj; private System.Windows.Forms.DataGridViewTextBoxColumn zbzt; private System.Windows.Forms.DataGridViewTextBoxColumn zdbh; private System.Windows.Forms.DataGridViewTextBoxColumn zdsj; private System.Windows.Forms.DataGridViewTextBoxColumn sdtj; private System.Windows.Forms.DataGridViewTextBoxColumn hxtj; private System.Windows.Forms.DataGridViewTextBoxColumn cpjtj; private System.Windows.Forms.DataGridViewTextBoxColumn gdtj; private System.Windows.Forms.DataGridViewTextBoxColumn kzzs; private System.Windows.Forms.ComboBox comboBoxIP; private System.Windows.Forms.Label label1; } }
无人机技术交流QQ群:951349285,mavlink,missionplanner,qgroundcontrol,PX4,ArduPilot。
JAVA&NET技术,跳槽,软考交流QQ群:456257217,有问题的可以在群里面提问交流。

浙公网安备 33010602011771号