Matlab UDP通信协议与设备通信需要注意的问题

利用Matlab的UDP和设备进行收发指令,指令格式为16进制格式,设备为光纤解调仪,经过一段时间的研究,终于成功实现通信,这中间遇到了许多问题,现在分享出来,供网友们参考。

一.连接过程

先建立UDP通道,输入远端IP和端口号

udp_handle=udp('192.168.137.27','LocalPort',8010,'RemotePort',4569);
set(udp_handle,'InputBufferSize',10000);
set(udp_handle,'OutputBufferSize',10000);%设置缓存区容量
set(udp_handle,'InputDatagramPacketSize',10240);
set(udp_handle,'OutputDatagramPacketSize',10240);
set(udp_handle,'TimeOut',10);%接收和发送前超时时间
fopen(udp_handle);

需要注意的问题:

  1. IP设置: 需确定电脑的IP和设备的IP在同一网段,即IP的前三位是一样的而后一位不一样,如设备的IP为192.168.137.27,电脑的IP需改为192.168.137.10,电脑IP的更改在网络设置里面更改Internet协议版本4(TCP/IPv4) 属性。
  2. 端口号的选择: 需确定端口号没被占用,当被占用是会出现这样的错误Unsuccessful open: Address
    already in use: Cannot bind
    ,有些设备是有专门的端口的,需要提前知道。
  3. 最需注意的一点: Matlab的公用网络是被允许的,或者粗暴一点关闭联网防火墙,这个问题让我陷在里面很久,希望你们提前避免这个坑。
  4. 调试的过程先借助网络调试助手和Matlab进行连接调试,因为这样可以看到发送和接受的信息,直接和设备相连无法看到发送过去的是什么内容。

二.数据的发送

发送的格式: 设备的UDP协议中声明发送和接受指令是16进制的,以下是写入的代码

sent_str=['30';'01';'06';'00';'00';'00'];
sent_str=hex2dec(sent_str);
fwrite(udp_handle, sent_str, 'uint8')

需要注意的问题:
虽然设备声明采用16进制格式,但是发送的时候不能直接写入16进制,要先转化为10进制再发送,还有写入的时候要采用U8格式,这个问题困扰了我很久,我向大佬请教才解决的,来之不易,望珍惜。

三.结语

经过这段时间的探索,对UDP通信也有一些了解,如果对我写的文字存在疑问的欢迎私信我,互相探讨,共同进步。

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
MatlabUDP通信是一种通过用户数据报协议(UDP)进行数据传输的通信方式。UDP是一种无连接的协议,它将数据分成较小的数据包,不保证数据传输的可靠性和顺序。UDP通信在实时性要求较高的应用中常被使用,比如实时数据采集、实时控制等。 在Matlab中,利用UDP通信可以实现两个或多个Matlab实例之间的数据传输。首先,需要创建UDP对象,并设置远程主机和端口号。然后,可以使用read和write方法来接收和发送数据。例如,可以使用fread函数来接收UDP数据,使用fwrite函数来发送UDP数据。 在实际操作中,首先需要创建一个UDP对象,指定要连接的远程主机和端口号。然后,可以通过open方法打开UDP连接。接下来,可以使用fread来接收数据。例如,可以使用如下代码实现UDP接收数据: udpObj = udp('192.168.1.100', 1234); fopen(udpObj); data = fread(udpObj); fclose(udpObj); 同样,可以使用fwrite来发送数据。例如,可以使用如下代码实现UDP发送数据: udpObj = udp('192.168.1.100', 1234); fopen(udpObj); fwrite(udpObj, data); fclose(udpObj); 需要注意的是,在进行UDP通信时,需要保证远程主机的IP地址和端口号是正确的,并且两个Matlab实例之间的UDP设置是一致的。 总而言之,MatlabUDP通信提供了一种实时数据传输的方式,可以用于各种需要实时性的应用中。通过创建UDP对象,并使用读写函数,可以实现Matlab实例之间的数据传输。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值