基于Matlab的udp通信的简单实现

 基于 AN108 模块的ADC 采集以太网传输

在上一实验中,上位机发送询问/控制命令及接收板卡回传的应答命令该部分采用的是网络调试助手NetAssist进行收发信息,虽然便捷但限制了进一步实验或二次开发。因此,本节将基于Matlab实现udp通信,代码及实验结果分析如下。

代码部分

%-------------------新建udp连接-------------------%
u1 = '192.168.1.42'; %Local IP,本地主机IP地址
port1 = 8080;%监听所有发到8080端口的消息;
u2 = '192.168.1.10';%远程主机IP地址
port2 = 8080;%监听所有发到8080端口的消息;

u = udpport("LocalHost","192.168.1.42","LocalPort",8080,"EnablePortSharing",true);%本地IP及端口,设置端口共享
u.Timeout = 30 ;%设置溢出时间,单位s
u.EnableBroadcast = true ;%是否可以收发广播包

%--------------------udp收发--------------------%
%data = ['28';'00';'01';'00';'01']; %询问命令
data = ['28';'00';'01';'00';'02';'00';'0A';'35';'00';'01';'02';'00';'00';'00';'00';'00';'08';'00';'00'];%控制命令
data = hex2dec(data);
%data = [0x28,0x00,0x01,0x00,0x01];
write(u,data,"uint8","192.168.1.10",8080);
%adc = read(u,27,"uint8");
adc = read(u,1030,"int16");
flush(u,"output");%刷新输出缓冲区
clear u %断开并清除udp连接

一开始采用的是udp函数创建udp目标及连接,然而在matlab 2019及后续版本中,udp函数将被删除,故采用udpport进行替代,调用方法有一定差别,可与下面这篇文章进行对照学习。

UDP理解及UDP的MATLAB实现 Matlab UDP_大佟的博客-CSDN博客

需要注意的一点是,虽然udp协议中声明发送和接受指令为16进制,但是需先转换为十进制,然后以u8的形式写入。

此外,从 R2019b 开始可以直接以十六进制格式写入值,而无需使用 hex2dec。使用 0x前缀,不要使用引号。此处保留了之前的部分代码。

运行结果 

首先通过write函数向远程 IP"192.168.1.10",端口号8080的板卡以uint8的形式写入询问命令28 00 01 00 01,运行程序,通过wireshark软件观察结果如下图:

上位机向板卡发送5字节的询问命令,随后,板卡回传27字节的应答命令,观察其内容如下图所示: 

观察adc保存的27字节数据如下图所示,与协议制定的应答命令一致

 在倒数第二行代码前设置断点,运行程序可观察udp属性对象u的属性如下图:

 通过write函数向板卡写入控制命令28 00 01 00 02 00 0A 35 00 01 02 00 00 00 00 00 08 00 00,运行程序,通过wireshark软件观察其结果:

上位机向板卡发送19字节的控制命令,随后,板卡回传1029字节的应答命令,观察其内容如下图所示: 

通过上文可知,本节基于matlab设计了一个简单的udp通信程序,替换了上一节实验中的网络调试助手NetAssist,并且将读取的数据保存在adc中,可进行二次开发。

参考资料

[1]Connect to UDP socket - MATLAB - MathWorks 中国

[2]UDP理解及UDP的MATLAB实现 Matlab UDP_大佟的博客

[3]Matlab UDP通信协议与设备通信需要注意的问题_不懂程序的小戎的博客

  • 3
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值