c#winform做接口实现接受udp报文和发送UDP报文

dssdfs232342 CSDN会员 dssdfs232342 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
1. 使用UDP 协议,RCU模块在UDP 3341端口接收外部软件发送过来的控制指令
2. UDP报文数据部分格式:
union host2rcu_frame_type //主机到RCU数据结构
{
unsigned char bytes[1600];
struct{
union
{
unsigned char bytes[SYSTEM_HEADER_LEN];
system_header_type header_data;
}system_header_union;
union {
unsigned char bytes[DEVICE_HEADER_LEN];
device_header_type device_data;
}device_header_union;
union
{
unsigned char bytes[1550];
scene_ctrl_type scene_ctrl_cmd;
}data_union;
}st;
};

#define SYSTEM_HEADER_LEN 14
//系统通信网络数据报文头协议,最长限定30字节,目前使用18字节
struct system_header_type{
unsigned char reserved; //必须是0x00
unsigned char frame_len; //帧总字节数,包括头部和数据
char system_id[4]; //固定为”HMIS”
unsigned char dest_devid; //目标设备,要求为0x00
unsigned char src_devid; //源设备,要求为0x08
unsigned short packet_id; //为0
unsigned long project_id; //为0xffffffff
};

#define DEVICE_HEADER_LEN 8
//设备头协议,最长限定20字节,目前使用10字节
struct device_header_type
{
unsigned char nodeaddr; //目标模块设备, 0是主控器,其它的模块按地址拨码开关
unsigned short cmdtype; //必须为0x60
unsigned char askack; //必须为0x00
unsigned char nbuild; //必须为0xff
unsigned char nfloor; //必须为0xff
unsigned char nroom; //必须为0xff
unsigned char nunit; //必须为0xff
};

struct scene_ctrl_type
{
unsigned char srcdev; //必须为0x41
unsigned char srcnet; //必须为0xff
unsigned char snumh; //场景命令代号(高字节)
unsigned char snuml; //场景命令代号(低字节)
unsigned char flag1; //必须为0x00
unsigned char flag2; //必须为0x00
unsigned char flag3; //必须为0x00
};

场景命令代号即功能号,外部软件将每个控制事件编成一个命令代号。


UDP数据格式实例:
Byte0 Byte1 Byte2-5 Byte6 Byte7 Byte8-9 Byte10-13
LEN 帧长度
为0x1b =byte0
=0x1b 系统标识码“HMIS”
Byte2:0x48
Byte3:0x4d
Byte4:0x49
Byte5:0x53 目标设备号
必须为0x00 源设备号
必须为0x05 报文号
为0x0000 工程号
为0xffffffff

Byte14 Byte15-16 Byte17 Byte18-21 Byte22-26 (数据部分)
目标模块
必须为0xff
命令代号
Byte15:0x81
Byte16:0x01 ASK
必须为0x01
0x00无应答 目标主机编码
必须为0xffffffff Byte22:0x00
Byte23:这个控制对应的通道号,计算方法((n-1)<<1)+s
N为 对应的通道号,s为按下抬起状态,例如对应为in2,则这个字节计算为((2-1)<<1)+1按下,抬起((2-1)<<1)+0
Byte24:0x01
Byte25:0x00
Byte26:0x00

例子数据:
1b 1b 48 4d 49 53 00 05 00 00 ff ff ff ff ff 81 01 01 ff ff ff ff 00 00 01 00 00
...全文

相关推荐

C#winform TCP通信 UDP通信 Socket通信 vs2017 .net4.0

TCPServer tcpClient udp通信,定时发送,hex字符普通字符 收发...等功能,为基础参考项目

TianMen_Long

C# WinForm中实现Socket通讯的客户/服务端IP+UDP项目

WinForm是Microsoft推出的一款基于Windows平台的应用程序框架,旨在为开发者提供一种快速创建传统桌面应用程序的途径。C# WinForm应用程序利用.NET Framework的强大功能,通过拖放控件和编写代码,可以构建具有丰富用户界面的软件系统。WinForm提供了多种控件供开发者使用,包括但不限于按钮(Button)、文本框(TextBox)、列表框(ListBox)等。以下是几个常用控件的介绍:Button控件:用于触发事件,可以设置文本、图标以及点击时的响应逻辑。

目楚

基于C#WinForm的网络发送接收统计源码.zip

基于C#WinForm的网络发送接收统计源码.zip

程序员添宇

C#winform 局域网IP和端口扫描

基于VS开发环境,C#编程语言;局域网tcp/udp 扫描IP和端口;

Stone_KINGDom

C#WINFORM实时连接UDP打洞测试程序

本程序为UDP打洞原理的测试程序。为了简单起见,该程序服务器就接收两个客户端的连接,使两客户端建立UDP通道。两客户端建立UDP通道后,互相发送的数据不经过服务器转发,直接进行数据交互,这时可以关闭服务器程序。服务器的默认服务端口是10000,如果该端口已经被占用,请自行修改服务端口。

钟泉清
评论 7
收藏 已收藏
分享
返回顶部
dssdfs232342 CSDN会员
C# 111,129 成员 642,539 内容