zoukankan      html  css  js  c++  java
  • C# 通讯协议封装

    1、发送内码文字内容        0x31

    **************************************************

    FE 5C 4B 89                           包头

    5E 00 00 00                    总长

    31                                 消息类型

    00 00 9E E4                            ID

    4B 00 00 00                             数据长度(不包括此四字节及包尾)

    30 30 30 30 30 30 30 30 31             素材UID              

    2C                                     分隔符‘,‘

    01                                     移动方式

    01                                     移动速度

    01                                     停留时间

    30 31 30 31 30 31 39 39 31 32 33 31    播放时间段

    13 00 00 00                            素材属性长度(不包括此四字节)

    55 AA                                  标志字节

    00 00                                  保留字节

    37                                     内容属性,默认37

    31                                     存储方式

    31                                     更新时间

    31                                     文本起始标志

    32                                     显示屏颜色(单、双基色)

    31                                     图片编码方式

    00 00                                  保留字节

    08 00                                  区域宽度   64

    10 00                                  区域高度   16

    01 11                                   颜色(红) 字体字号(宋体16*16)

    00                                      保留字节

    14 00 00 00                             素材内容长度(不含此四字节)

    31 32 33 34 35 36 37 38 39 30           素材内容“1234567890”

    FF 00                                   素材内容特性字

    01 00                                   本次素材内容的序号

    01 00 01 00                             固定字节

    10 48                                   保留字节

    2D 31 2C                                素材内容结束标志  

    FF FF                                   包尾

     

     

    往UID为000000001发送“1234567890”

    发送:

    FE 5C 4B 89 5E 00 00 00 31 00 00 9E E4 4B 00 00 00 30 30 30 30 30 30 30 30 31 2C 01 01 01 30 31 30 31 30 31 39 39 31 32 33 31 13 00 00 00 55 AA 00 00 37 31 31 31 32 31 00 00 08 00 10 00 01 11 00 14 00 00 00 31 32 33 34 35 36 37 38 39 30 FF 00 01 00 01 00 01 00 10 48 2D 31 2C FF FF

     

     

    返回:FE 5C 4B 89 15 00 00 00 81 00 00 9E E4 02 00 00 00 31 23 FF FF

     

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.Net.Sockets;


    namespace 内码文字协议发送
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    UdpNet();

    }

    public void UdpNet()
    {
    Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(txtIP.Text), 8800);
    byte[] data = Senddata();
    socketClient.SendTo(data, endPoint);

    IPEndPoint send = new IPEndPoint(IPAddress.Any,0);
    EndPoint Remote = (EndPoint)send;

    byte[] rec = new byte[21];
    int receive = socketClient.ReceiveFrom(rec, ref Remote);
    if (rec[17] == 0x31)
    {
    MessageBox.Show("成功");
    }
    else
    {
    MessageBox.Show("失败");
    }

    }

    public byte[] Senddata()
    {
    byte[] SendBuffer = new byte[500];

    int TotalLenth,//总产
    OrderLenth,//具体指令的字符串长度
    //ScLenth,
    StrLen,//发送字符串长度
    DataLen;//字符串数据长度
    string txt=txtStr.Text.Trim();


    //声明字符集
    System.Text.Encoding utf8, gb2312;
    //utf8
    utf8 = System.Text.Encoding.GetEncoding("utf-8");
    //gb2312
    gb2312 = System.Text.Encoding.GetEncoding("gb2312");
    byte[] Str;
    Str = utf8.GetBytes(txt);
    Str = System.Text.Encoding.Convert(utf8, gb2312, Str);


    // byte[] Str = UTF8Encoding.UTF8.GetBytes(txt);
    DataLen = Str.Length;
    byte[] SData = new byte[84 + DataLen];

    //int Width, Height;
    //Width = Convert.ToInt32(textBoxWidth.Text.Trim());
    //Height = Convert.ToInt32(textBoxHeight.Text.Trim());


    //1.帧开始符
    SendBuffer[0] = 0xfe;
    SendBuffer[1] = 0x5C;
    SendBuffer[2] = 0x4B;
    SendBuffer[3] = 0x89;

    //2.所有字节的长度
    //低字节在前,高字节在后
    TotalLenth = 84 + DataLen;
    SendBuffer[7] = (Byte)(TotalLenth /(256*256*256));
    TotalLenth = TotalLenth % (256 * 256 * 256);
    SendBuffer[6] = (Byte)(TotalLenth /(256*256));
    TotalLenth = TotalLenth % (256 * 256);
    SendBuffer[5] =(Byte)( TotalLenth/256);
    TotalLenth = TotalLenth % 256;
    SendBuffer[4] = (Byte)(TotalLenth);

    //3. 固定字符31
    SendBuffer[8] = 0x31;

    //4.辅助字段无意义(固定)
    SendBuffer[9] = 0x00;
    SendBuffer[10] = 0x00;
    SendBuffer[11] = 0x9E;
    SendBuffer[12] = 0xE4;

    //5.具体指令的字符串长度
    OrderLenth = 65 + DataLen;
    SendBuffer[16] = (Byte)(OrderLenth / (256 * 256 * 256));
    OrderLenth = OrderLenth % (256 * 256 * 256);
    SendBuffer[15] = (Byte)(OrderLenth / (256 * 256));
    OrderLenth = OrderLenth % (256 * 256);
    SendBuffer[14] = (Byte)(OrderLenth /256);
    OrderLenth = OrderLenth % 256;
    SendBuffer[13] = (Byte)(OrderLenth);

    //6.UID 地址
    SendBuffer[17] = 0x30;
    SendBuffer[18] = 0x30;
    SendBuffer[19] = 0x30;
    SendBuffer[20] = 0x30;
    SendBuffer[21] = 0x30;
    SendBuffer[22] = 0x30;
    SendBuffer[23] = 0x30;
    SendBuffer[24] = 0x30;
    SendBuffer[25] = 0x31;


    //7.固定
    SendBuffer[26] = 0x2C;

    //8.移动方式
    SendBuffer[27] = 0x01;
    //9.移动速度
    SendBuffer[28] = 0x01;
    //10.显示方
    SendBuffer[29] = 0x01;

    //11.固定-播放结束起始年月日
    SendBuffer[30] = 0x30;
    SendBuffer[31] = 0x31;
    SendBuffer[32] = 0x30;
    SendBuffer[33] = 0x31;
    SendBuffer[34] = 0x30;
    SendBuffer[35] = 0x31;
    SendBuffer[36] = 0x39;
    SendBuffer[37] = 0x39;
    SendBuffer[38] = 0x31;
    SendBuffer[39] = 0x32;
    SendBuffer[40] = 0x33;
    SendBuffer[41] = 0x31;

    //12.素材指令长度
    SendBuffer[42] = 0x13;
    SendBuffer[43] = 0x00;
    SendBuffer[44] = 0x00;
    SendBuffer[45] = 0x00;

    //13.素材开始格式标志
    SendBuffer[46] = 0x55;
    SendBuffer[47] = 0xAA;

    //14.固定
    SendBuffer[48] = 0x00;
    SendBuffer[49] = 0x00;

    SendBuffer[50] = 0x37;
    SendBuffer[51] = 0x31;

    SendBuffer[52] = 0x31; //刷新本区域

    //与素材内容属性段配合的12个字节:
    SendBuffer[53] = 0x31;
    //15.示屏像素色彩:0x31:单基色,0x32:双基色
    SendBuffer[54] = 0x32;

    //16.固定
    SendBuffer[55] = 0x31;
    SendBuffer[56] = 0x00;
    SendBuffer[57] = 0x00;

    //17.长度 64
    //SendBuffer[58] =(Byte)( Width % 256);
    //SendBuffer[59] =(Byte)( Width / 256);
    SendBuffer[58] = 0x08;
    SendBuffer[59] = 0x00;

    //18.高度 16
    //SendBuffer[60] = (Byte)(Height % 256);
    //SendBuffer[61] = (Byte)(Height/ 256);
    SendBuffer[60] = 0x10;
    SendBuffer[61] = 0x00;

    //19.字符颜色
    SendBuffer[62] =0x01;

    //20.字符大小
    SendBuffer[63] =0x11;

    //21.固定
    SendBuffer[64] = 0x00;

    //22.发送字符串长度
    StrLen = 10 + DataLen;
    SendBuffer[68] = (Byte)(StrLen / (256 * 256 * 256));
    StrLen = StrLen % (256 * 256 * 256);
    SendBuffer[67] = (Byte)(StrLen / (256 * 256));
    StrLen = StrLen % (256 * 256);
    SendBuffer[66] = (Byte)(StrLen / 256);
    StrLen = StrLen % 256;
    SendBuffer[65] =(Byte) (StrLen);

    //23.字符串数据
    for (int i = 0; i < DataLen; i++)
    SendBuffer[69 + i ] = Str[i];

    //24.传送控制
    SendBuffer[69 + DataLen] = 0xFF;
    SendBuffer[70 + DataLen] = 0x00;

    //25.本次通讯发送文本素材的序号
    SendBuffer[71 + DataLen] = 0x01;
    SendBuffer[72 + DataLen] = 0x00;

    //26.固定
    SendBuffer[73 + DataLen] = 0x01;
    SendBuffer[74 + DataLen] = 0x00;
    SendBuffer[75 + DataLen] = 0x01;
    SendBuffer[76 + DataLen] = 0x00;

    SendBuffer[77 + DataLen] = 0x10;
    SendBuffer[78 + DataLen] = 0x48;

    //27.发送过程结束标记
    SendBuffer[79 + DataLen] = 0x2D;
    SendBuffer[80 + DataLen] = 0x31;
    SendBuffer[81 + DataLen] = 0x2C;

    //28.包尾
    SendBuffer[82 + DataLen] = 0xFF;
    SendBuffer[83 + DataLen] = 0xFF;

    for (int i = 0; i < 84 + DataLen; i++)
    SData[i] = SendBuffer[i];

    return SData;
    }

    }
    }

  • 相关阅读:
    CentOS7下Tomcat启动慢的原因及解决方案
    在SpringBoot中使用RabbitMQ
    SpringBoot 中使用Redis分布式锁
    微信小程序个人入门开发
    CentOS 通过 expect 批量远程执行脚本和命令
    (七)Spring Cloud 配置中心config
    (六)Spring Cloud 网关Zuul
    (五)Spring Cloud 熔断器 hystrix
    用Sql Server自动生产html格式的数据字典
    TCP介绍
  • 原文地址:https://www.cnblogs.com/laowengdiaodayu/p/4032092.html
Copyright © 2011-2022 走看看