Matlab 网络通信(TCP IP)
import Net.*%建立连接
net = Net();
net = net.connectNet('127.0.0.1', 9515);
data = zeros(4, 6);
for i = 1 : 4for j = 1: 6data(i, j) = i + j;end
end%发送数据
net = net.sendWarnTarget( 123, 1, 38.123, 128.34, 1234567, 890, 1000, data);%关闭TCP连接
net = net.closeNet();
下面是网络通信模块,文件名为 Net.m,以类的形式封装提供调用,与其它语言编写的应用程序时注意设置大小端,matlab语言所有的类型都是double类型,因此fwrite时注意标注希望转换的数据类型,matlab网络数据默认以大端法发送,而x86机器一般都是小端法,因此在tcpip()函数调用时指定好数据发送的大小端法。
classdef Net%NET 此处显示有关此类的摘要% 此处显示详细说明properties%连接对象m_tcp_netendmethods%与服务端建立连接function obj = connectNet( obj, ip, port) obj.m_tcp_net = tcpip(ip, port,'NetworkRole', 'client', 'ByteOrder','littleEndian', 'OutputBufferSize', 4 * 1024 * 1024);fopen(obj.m_tcp_net ); end%关闭与服务端的连接function obj = closeNet(obj)fclose(obj.m_tcp_net);end%发送包头数据,内部使用function obj = sendPkHead(obj, pkSize, pkType, pkExtern, pkReserve) fwrite( obj.m_tcp_net, pkSize, 'uint32' );fwrite( obj.m_tcp_net, pkType, 'uint8');fwrite( obj.m_tcp_net, pkExtern, 'uint8' );fwrite( obj.m_tcp_net, pkReserve, 'uint16' );endfunction obj = sendWarnTarget( obj, eventID, eventType, tarLati, tarLng, utcSec, utcMSec, fs, data)%发送包头数据%|--事件ID(uint32)---||--事件类型(uint32)--||--纬度(float32)--||--经度(float32)--||--utc时间(uint32)--||--utc毫秒(uint32)--||--采样频率(uint32)--|pkSize = 4 *7 + size(data, 1) * size( data, 2) * 8;pkType = 1;pkExtern = size(data, 1); %数组行数pkReserve = size( data, 2);%数组列数obj.sendPkHead( pkSize, pkType, pkExtern, pkReserve);%发送包体数据fwrite(obj.m_tcp_net, eventID, 'uint32' );fwrite( obj.m_tcp_net, eventType, 'uint32' );fwrite( obj.m_tcp_net, tarLati, 'float32' );fwrite( obj.m_tcp_net, tarLng, 'float32' );fwrite( obj.m_tcp_net, utcSec, 'uint32' );fwrite( obj.m_tcp_net, utcMSec, 'uint32' );fwrite( obj.m_tcp_net, fs, 'uint32' );%包体的波形数据,因为matlab的数据内存是以列为主序,因此将数据数据置后按内存发送,对多行的数据必须转化成一行发送data2 = reshape(data', 1, 1 * size(data, 1) * size(data,2));fwrite( obj.m_tcp_net, data2, 'double');endendend
下面是服务端数据接收测试程序,python3.0或以上版本可正常运行
#coding=gbk
from socket import *
from time import ctime
import struct
import arraydef recvData( client, dataSize ):data = b''while dataSize > 0:datat = tctimeClient.recv(dataSize); if not datat:data = Nonebreakdata += datatdataSize -= len(datat);return data;host = ''
port = 9515
ADDR = (host,port)tctime = socket(AF_INET,SOCK_STREAM)
tctime.bind(ADDR)
tctime.listen(3)while True:print('Wait for connection ...')tctimeClient,addr = tctime.accept()print("Connection from :",addr)while True:#接收8字节的包头data = recvData( tctimeClient, 8);if not data:break; pkSize, pkType, pkExtern, pkReserve = struct.unpack('IBBH', data);print( '包大小:', pkSize);print( '包类型:', int(pkType));print( '数据行:', int(pkExtern));print( '数据列:', pkReserve);#接收包体数据data = recvData(tctimeClient, pkSize); if not data:break;eventID, eventType, tarLati, tarLng, utcSec, utcMSec, fs = struct.unpack('IIffIII', data[0: 28])print( '事件ID:', eventID);print( '事件类型:', eventType);print( '纬度:', tarLati);print( '经度:', tarLng);print( 'utc秒:', utcSec);print( 'utc毫秒:', utcMSec);print( '频率:', fs);#wave = array.array( 'd', data[28:]);#for i in range( int(pkExtern)):# for j in range( int(pkReserve)):# print( '%0.1f' % wave[i * pkReserve + j ], end = ', ')# print('\n');tctimeClient.close()
tctimeClient.close()
Matlab 网络通信(TCP IP)相关推荐
- tcp ip协议_网络通信-TCP/IP协议族简述
导读:计算机与网络设备要相互通信需要遵守同样的规则.例如,如何找到通信目标.该使用哪种语言通信.怎么结束通信等规则.不同的硬件.操作系统之间的通信都需要遵循同一种规则,这种规则也称为是协议.下面本文主 ...
- MATLAB实现TCP/IP通信
1.使用R2021a版本的函数 参考链接:MATLAB TCP t = tcpclient(address,port) t = tcpclient(address,port,Name,Value) 使 ...
- 网络通信TCP/IP
文章目录 1.简述FTP工作流程 2.同步I/O和异步I/O本质区别 3.TCP和UDP的区别及TCP怎么保证传输的可靠性 4.短链接和长链接的区别 5.Tcp 0.tcp 协议介绍 1.TCP三次握 ...
- gmr 通信 matlab,matlab使用TCP/IP Server Sockets
server 与 client 通信:(image) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- MATLAB与DSP(C6657)的TCP/IP通信实现
最近尝试使用从MATLAB端键入输入,将输入值传给DSP,DSP运算之后将结果传回MATLAB并显示.我所设置的PC的IP地址是192.168.2.101,DSP的IP地址是192.168.2.100 ...
- 【计算机网络】网络协议与计算机网络体系结构(OSI参考模型、TCP/IP体系、网络通信标准化组织)及 Java网络编程
网络协议与计算机网络体系结构 知识点总结 网络协议与分层体系结构 开放系统互连参考模型OSI/RM 五层的体系结构 [例]主机甲向主机乙发送数据 实体和服务访问点SAP PDU:协议数据单元 TCP/ ...
- 深入理解网络通信与tcp/ip协议
计算机网络发展简史 1.诞生阶段,20世纪60年代中期之前的第一代计算机网络是以单个计算机为中心的远程联机系统. 2.ARPANET,多个主机通过通信线路互联起来.60年代初.当时,美国国防部为了保证 ...
- OSI模型、TCP/IP模型、数据封装与解封装-----网络通信原理
OSI模型.TCP/IP模型.数据封装与解封装 OSI模型 OSI模型的由来 OSI七层模型 TCP/IP模型 数据通信流程 OSI模型 OSI模型 开放式系统互连参考模型(Open system i ...
- 网络通信原理——OSI模型、TCP/IP模型、数据通信原理
网络通信原理 OSI模型 OSI模型的由来 OSI模型是一种网络标准,所有软件和硬件开发都遵循统一的标准(OSI模型). OSI七层模型(物 数 网 传 会 表 应) 层名称 功能 应用层 为用户提供 ...
- simulink调用python_如何通过TCP/IP将Simulink/MATLAB连接到Python?
我想把MATLAB/Simulink和PythonAPI通过可视化组件连接在一起.我想在运行时/分步更新中共享信息.有某种类型的连接,但它突然发生并停止,它也不是一步一步的,而且端口有一个与给定地址完 ...
最新文章
- 2021-7-26 pytorch深度学习框架学习
- PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0
- 退出出库复核是什么意思_干货 | 电商仓储与传统仓储有什么不同?
- 【 数字信号处理 】定点数的表示之二进制数的原码与补码
- FusionCharts Free(3)
- redis php操作日志,php-redis笔记
- 走近华为“天才少年”钟钊:入职两年两度突破业界学界极限
- BZOJ1901:Zju2112 Dynamic Rankings——题解
- iOS12系统图片heic如何在电脑上查看
- 安装 Linux 系统,如何选择操作系统和电脑硬件
- 小米手机MIUI功能测试代码
- Linux——常用工具
- 50篇各种磨皮大法PS教程集合,想学磨皮方法的可以看看
- 别费劲找站长工具共享VIP了 这个工具也不错
- python中del什么意思_python del函数是什么以及如何使用?
- java线程报时代码_什么?一个核同时执行两个线程?
- Kaspersky Anti-Virus NDIS Filter导致的网络故障一例
- 【深科信动态】科技创新与产业发展政策研究院揭牌成立!
- 你不是输给了物联网,是输给了不信物联网
- POJ 3320 Jessica's Reading Problem
热门文章
- 让人醍醐灌顶的线性代数视频,深刻理解线性代数
- SSM+高校学生综合评测系统 毕业设计-附源码200851
- Cocos2d-x 中文标题设置
- 为什么学校计算机没有声音,电脑为什么没声音,教您电脑为什么没声音
- 玩玩Spring之初章
- spark学习之执行计划explain
- OCT-模拟电路设计八边形法则的探讨
- 微型计算机每秒计算,微型计算机主要技术指标
- MongoDB学习笔记(五) MongoDB文件存取操作
- 大学计算机基础及应用课后题答案第二版,《大学计算机基础》课后题答案完整版...