首页 > 代码库 > LED显示屏通讯协议 1

LED显示屏通讯协议 1

以下说明均以心恬科技的XT-106控制卡作为硬件基础设备。

与LED显示屏通讯,第一步是建立连接(我们称之为Hello)。

网络通讯协议方式为UDP,可以自己定义UDP数据包结构,也可以利用系统提供的Socket工具来访问LED显示屏。

准备好硬件(显示屏配置成功)之后就可以试图通过代码来与显示屏建立连接了。

首先进行UDP的组包,我们以C#为例:

public void Hello()
        {
            byte[] data = http://www.mamicode.com/new byte[256];
            data[0] = 0xF2;
            data[1] = 0xFF;
            for (int i = 0; i < 8; i++)
            {
                data[2 + i] = 0xFF;
            }
            IPAddress Adrr = IPAddress.Parse("255.255.255.255");
            // IPAddress Adrr = IPAddress.Parse("239.0.0.1");
            IPEndPoint ipep = new IPEndPoint(Adrr, 9888);
            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            newsock.EnableBroadcast = true;
            newsock.SendTo(data, ipep);
            newsock.Close();
        }

关于广播地址,视网络环境而定。调试代码过程中注意防火墙拦截,如使用WinPcap自行组包便可以忽略防火墙。

 

下面,建立一个线程来监听LED显示屏返回的Hello数据包。

 

Thread nthread=null;
nthread = new Thread(new ThreadStart(ListenStart));
nthread.IsBackground = true;
nthread.Start();
public void ListenStart()
        {
            UdpClient udp = new UdpClient(9889);
            udp.EnableBroadcast = true;
            IPEndPoint AllIPEndPoint = new IPEndPoint(IPAddress.Any, 9889);
            do
            {

                byte[] mesg = udp.Receive(ref AllIPEndPoint);

                if (mesg[0] == 0xF2 && mesg[1] == 0xFF)
                {
                    Dispatcher.Invoke((Action)delegate
            {
                      // Do Something ...
              });
            // Do Something ...
                }

                mesg = new byte[] { };
            } while (true);
        }        

 

发送至LED显示屏的UDP数据端口为9888,LED显示屏返回至设备的UDP数据端口为9889.