完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
面向对象
程序使用ALIENTEK 战舰 V3STM32F1 开发板连接ATK-ESP8266 WIFI 模块,串口无线 AP(COM-WIFI AP)、串口无线 STA(COM-WIFI STA)和串口无线AP+STA(COM-WIFI AP+STA)这 3 个模式的测试,每个模式又包含 TCP服务器、 TCP 客户端和 UDP 这 3 个子模式。 使用matlab的GUI编程,选用模式为 COM-WIFI AP+STA 的TCP服务器模式。 TCPIP 根据帮助文档编写代码,最终实现GUI图像: 建立连接 % --- Executes on button press in OpenServer. function OpenServer_Callback(hObject, eventdata, handles) % hObject handle to OpenServer (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) port = get(handles.Text_Port,‘string’);%获得端口 Port = str2num(port); ipdre1 = get(handles.IP1,‘string’); ipdre2 = get(handles.IP2,‘string’); ipdre3 = get(handles.IP3,‘string’); ipdre4 = get(handles.IP4,‘string’); fprintf(‘IP分部集合完毕n’); Ip = strcat(ipdre1+“。”+ipdre2+“。”+ipdre3+“。”+ipdre4);%获得ip地址 fprintf(Ip); % 构造服务器端tcpip对象 echotcpip(‘on’,Port); %启动一个TCPIP回响服务器 t = tcpip(Ip,Port); %创建一个TCPIP global tcpiptext tcpiptext = t; N = 1024; set(t,‘InputBufferSize’,8*N); %设置输入缓存大小 set(t,‘OutputBufferSize’,1024); %设置输出缓存大小 % 打开连接对象 fopen(t); fprintf(‘连接成功n’); %发送指令 %SendText = get(handles.SendText,‘String’); %获取发送文本内容 fwrite(t,‘sending test successful’,‘int8’) %向host写数据 % 等待接收数据 while(1) nBytes = get(t,‘BytesAvailable’); %在输入缓存区的值 if nBytes 》 0 break; end end recvRaw = fread(t,nBytes,‘char’); %从host读数据 S = char(recvRaw‘); %转置 %A = fread(t); % 断开连接 fclose(t); fprintf(’读取完毕,内容如下:n‘); set(handles.State2View,’string‘,’连接成功!此时可发送命令至下位机,接收内容如下:‘); %在text文本中显示读取的数据 set(handles.Data2View,’string‘,S); %在text文本中显示读取的数据 disp(S); %在命令行中显示读取的数据 echotcpip(’off‘); %停止TCPIP回响服务器 fprintf(’echo tcpip链接已停止,此时可发送数据到下位机继续n‘); %guidata(hObject,handles);%保存配置 断开连接 % --- Executes on button press in CloseServer. function CloseServer_Callback(hObject, eventdata, handles) % hObject handle to CloseServer (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Disconnect the TCPIP object from the host and stop the echo server. % 断开连接 global tcpiptext t = tcpiptext; % 关闭和删除连接对象 fclose(t); delete(t); echotcpip(’off‘); fprintf(’断开连接,请重新建立连接或退出!n‘); set(handles.State2View,’string‘,’断开连接,请重新建立连接或退出!‘); %在text文本中显示读取的数据 % --- Executes on button press in quit. 主要问题 1.对matlab编程不熟悉; 2.在tcpip连接时,使用fscanf(),fgets()等函数不能有效读取发送过来的数据,显示报错:无法获得任何tcpip的数据,根据帮助文档以及百度解决问题; 3.初始没有设置输入输出缓存值,读取数据也是ASCII的值,解决方法: set(t,’InputBufferSize‘,8*N); %设置输入缓存大小 set(t,’OutputBufferSize‘,1024); %设置输出缓存大小 while(1) nBytes = get(t,’BytesAvailable‘); %在输入缓存区的值 if nBytes 》 0 break; end end recvRaw = fread(t,nBytes,’char‘); %从host读数据 4.从fread读取的数据是一列,使用转置正确读取数据: recvRaw = fread(t,nBytes,’char‘); %从host读数据 S = char(recvRaw’); %转置 5.使用全局变量global,获得tcpip的链接: t = tcpip(Ip,Port); %创建一个TCPIP global tcpiptext tcpiptext = t; |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1933 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1710 浏览 1 评论
1187 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
785 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1752 浏览 2 评论
1992浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
827浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
279浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
638浏览 3评论
644浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 00:22 , Processed in 0.982152 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号