赞
踩
目录
1、设备链表 没添加一个载具/飞机,就在链表里面添加一个实例化了的类(飞机/载具对象)
2、Device类包含了串口和TCP通讯的方法,添加一个新的载具飞机,只需要实例化这个类即可。Device类解析: Device这个类里面包含了所有通讯连接,数据读取的方法。
本模式采用大功率WiFi数传配合大功率AP构成,覆盖距离比较远的局域网。
大功率WiFi和大功率AP的覆盖范围可以达到600M,如果考虑更远的距离可以考虑,加中继。局域网支持双向通信,我们认为是天然的组网环境,技术也相对比较成熟。这种方式也是支持,飞机与飞机的通讯的。
设备列表理论上在目前的构架里面支持255架飞机,这里测试只是列出了5架。
目前的通讯方式支持COM的串口通讯,还有TCP/IP通讯,如果用UDP通讯也是可以的。采用TCP通讯方式,地面站和每一架飞机可以通讯,飞机与同一局域网的飞机也可以通讯的,这种构架可以做到理论上的多机协同。
采用一个飞机/车辆实例化一个对象的方式。如果有多架飞机加入,那么就在实例化一个设备对象即可。同时维护一个设备对象链表,这样一来就可以一个地面站连接多架飞机/车辆。
SortedList<int, Device> SorlistDevice = new SortedList<int, Device>();
上图是Device里面所有的成员。
为了不用每次上电都手动点击设备连接,设计了上电自动读取设备,自动连接的方式。通过读取XML配置文件,来达到自动读取的目的。
- for (int i = 1; i <=5; i++)//Tool类里面做了自动连接的配置,在Set文件中配置了连接类型,程序上电自动连接设备
- {
- bool _have = false;
- int n = 0;
- for ( n = 0; n < Tool.ConfSet.Count; n++)
- {
- if (Tool.ConfSet[n].DeviceId == i)
- {
- _have = true;
- break;
- }
- }
- if (_have)
- {
- Device dev = new Device();
- if (Tool.ConfSet[n].IsComm)
- dev.ConnectType = ConnectType.Com;
- else
- dev.ConnectType = ConnectType.Tcp;
- dev.linkEvent += Dv1_linkEvent;
- dev.Index = i;
- dev.ConnectState = Tool.ConfSet[n].IsConnect;
- dev.ComPort = Tool.ConfSet[n].ComPort;
-
- dev.IP = Tool.ConfSet[n].IP;
- dev.Port = Tool.ConfSet[n].Port;
- dev.Baud = 115200;
- if (dev.ConnectState)
- {
- dev.Start();
- }
- SorlistDevice.Add(i, dev);
- if (i == 1)
- {
- dv1 = dev;
- }
-
- }
- else
- {
- Device dev = new Device(ConnectType.Tcp);
- dev.ConnectState = false;
- dev.Index = i;
- dev.linkEvent += Dv1_linkEvent;
- dev.Baud = 115200;
- SorlistDevice.Add(i, dev);
- Set se = new Set();
- se.DeviceId = i;
- se.IsConnect = false;
- if (i == 1)
- {
- dv1 = dev;
- }
-
- Tool.ConfSet.Add(se);
- }
说明: 我们计划做成自动写入航点的模式,就像用XML来自动连接设备一样。原理都一样,只要地面站可以手动写入航点,用自动脚本就可以写入。这是编队飞机之前航线写入的基础。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。