我发布这一个博客只是为了方便来者去看比赛的规则,不关心版权等问题 如有问题请与我联系
以下部分是国赛的初赛部分的 规则
关于wifi网络的说明
UDP发送端指令源代码:
class Program
{
private static Socket sock;
private static IPEndPoint iep1;
private static byte[] data;
static void Main(string[] args)
{
string hostName = Dns.GetHostName();//获取本机名
IPHostEntry localhost = Dns.GetHostByName(hostName);//获取本机IPv4的地址
IPAddress localaddr = localhost.AddressList[0];//本机IP地址
//对IP地址进行操作,最后一位拼接为255,做为广播IP地址
string strNowIP = localaddr.ToString();
string[] strNowIPs = strNowIP.Split('.');
string strNewIP = strNowIPs[0] + "." + strNowIPs[1] + "." + strNowIPs[2] + ".255";
sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//iep1 = new IPEndPoint(IPAddress.Broadcast, 9050);//这个是自带的广播地址,但是地址为255.255.255.255,不能用,屏蔽掉
//生成广播地址和端口号,端口号为9050
iep1 = new IPEndPoint(IPAddress.Parse(strNewIP), 9050);
Console.WriteLine("正式广播地址:" + iep1.Address.ToString() + " 广播端口号:9050");
Console.Write("请输入指令,回车进行发送:");
string content = Console.ReadLine();
Console.WriteLine(content);
if (!string.IsNullOrEmpty(content))
{
string hostname = content;// Dns.GetHostName();
data = Encoding.ASCII.GetBytes(hostname);
sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
//开启一个线程,因为此处广播的需求是一直发送消息,所以为了避免卡死现象,开启线程,BroadcastMessage方法中while循环一直发送指令
Thread t = new Thread(BroadcastMessage);
t.Start();
Console.WriteLine("指令持续发送中....");
}
else
{
Console.WriteLine("发送指令为空,发送失败,请重新启动发送程序,回车结束");
}
Console.ReadKey();
}
/// <summary>
/// 线程
/// </summary>
private static void BroadcastMessage()
{
while (true)
{
//线程中,死循环不间断的发送指令
sock.SendTo(data, iep1);
Thread.Sleep(500);
}
}
}
UDP任务指令接收设置(以ESP8266为例):
1、设置STA模式:AT+CWMODE=1;
2、将通信模块加入热点:AT+CWJAP="GXDS2019","xnsq2019";(竞赛WiFi的SSID为"GXDS2019",密码为"xnsq2019");
3、开启单路连接:AT+CIPMUX=0;
4、作为客户端模式加入指定IP的UDP或者广播域:AT+CIPSTART="UDP","192.168.3.50",9050,9050,2;(IP地址为比赛公布地址,9050表示目标UDP端口,9050表示本地端口,2表示远端可变)。
// 博主说:这个其实就是一个 很简单的尝试, 参赛队用ESP8266 傻瓜式的自动连接wifi 然后利用UDP协议的广播功能 将任务信//息 广播到局域网内,然后所有的参赛队一起接收随机生成的任务信息 很简单的一个过程。。。。
//有限的难度应该就是在UDP数据的解包过程, 我用的是DMA 一次收一串的那种。。数据处理? 直接卡位置读就好了
//想要知道怎么处理的可以看我接下来可能会写的代码分析部分(其他博客)
决赛现场是在虚拟社区 临时生成新的任务,所有队伍 相同时间一起开始调试 改代码! 真的很考验实力
虚拟社区拍摄的图片,很震撼,全国最牛(之一)的那一撮本科生几乎都到
这是决赛的场地图(虚拟社区结束回收了)、
图片自己去调整吧 ,为了不让图片失真,,
最终我们抽签使用的是如下图所示的方案
这篇博客的意义在于方便后来人去看这一次比赛。 如果举办方不希望我公开这些资料请联系我 我将删除这些资料