当前位置: 首页 > article >正文

Proteus仿真单片机STM32F103的TCP通信5

使用WIFI模拟器软件实现Proteus与NetAssist进行TCP通信功能在同一台电脑上下位机为Proteus仿真stm32f103单片机作为服务端上位机使用NetAssist作为客户端使用WIFI模拟器软件与Proteus通过VSPD虚拟串口以JSON格式数据进行通信上位机发送{“LED”:0}、{“LED”:1}控制下位机LED灯亮灭。1.创建Stmcubeide工程配置USART1、USART2均为115200BPS分别连接串口调试软件和WIFI模拟器软件配置PB5口为输出连接LED灯。2.编写程序依赖库cJSON库下载地址cJSON GitHub https://github.com/DaveGamble/cJSON如果解析错误可换json库。/* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#includemain.h#includeusart.h#includegpio.h/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes */#includestring.h#includecJSON.h#includestdio.h#ifdef__GNUC__#definePUTCHAR_PROTOTYPEint__io_putchar(intch)#else#definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)#endifPUTCHAR_PROTOTYPE{HAL_UART_Transmit(huart1,(uint8_t*)ch,1,0xFFFF);returnch;}intfputc(intch,FILE*f){HAL_UART_Transmit(huart1,(uint8_t*)ch,1,0xffff);returnch;}intfgetc(FILE*f){uint8_tch0;HAL_UART_Receive(huart1,ch,1,0xffff);returnch;}uint8_tmy_re_buf2;uint8_tmy_re_buf[2000];uint16_tpt_w20;uint16_tpt0;uint8_taRxBuffer;//接收中断缓冲/*1.模块Station模式下做tcp server ATCWMODE w 开启AP模式 ATCWSAP”y”,”1234567890”,3,0 设置名、密码、加密方式 ATCIPMUX1 开多连接模式 ATCIPSERVER1,8888创建服务器 ATCIFSR 查看本地IP地址 */charCAT[]AT\r\n;charCRST[]ATRST\r\n;charCMODE[]ATCWMODE2\r\n;charCWIFI[]ATCWSAP\MUC\,\\,3,0\r\n;//加密模式 0 - OPEN 1 - WEP 2 - WPA_PSK 3 - WPA2_PSK 4 - WPA_WPA2_PSKcharCMUX[]ATCIPMUX1\r\n;charCSERVER[]ATCIPSERVER1,8080\r\n;charGETIP[]ATCIFSR\r\n;charCSEND[]ATCIPSEND0,5\r\n;//发送5字节到CLIENT连接ID为0的远端charsendBuff[50];charRecive[15];charRecive2[15];/* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/voidSystemClock_Config(void);/* USER CODE BEGIN PFP */voidcommand(charCommand_AT[]){intLenthstrlen(Command_AT);HAL_UART_Transmit(huart2,(uint8_t*)Command_AT,Lenth,0xff);printf(%s,Command_AT);HAL_Delay(3500);}voidwifiSend(chardata[]){uint8_tLenthstrlen(data);sprintf(sendBuff,ATCIPSEND0,%d\r\n,Lenth);command(sendBuff);HAL_UART_Transmit(huart2,(uint8_t*)data,Lenth,0xff);}voidESP8266_Init(void){command(CAT);command(CRST);command(CMODE);command(CWIFI);command(CMUX);command(CSERVER);command(GETIP);//command(CSEND);}/* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *//* USER CODE END 0 *//** * brief The application entry point. * retval int */intmain(void){/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_USART2_UART_Init();/* USER CODE BEGIN 2 */ESP8266_Init();//wifiSend(Im Server.);HAL_UART_Receive_IT(huart2,(uint8_t*)aRxBuffer,1);HAL_Delay(1000);cJSON*json;cJSON*Array_obj1;intsize;/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){if(pt0)// 只有当接收到数据时才处理{// 提取有效的JSON数据char*json_startstrrchr((constchar*)my_re_buf,{);// 找到最后一个{if(json_start!NULL){char*json_endstrrchr(json_start,});// 找到对应的}if(json_end!NULL){// 提取JSON字符串charjson_buffer[100]{0};intjson_lenjson_end-json_start1;if(json_lensizeof(json_buffer)){strncpy(json_buffer,json_start,json_len);json_buffer[json_len]\0;printf(\nRaw JSON: %s,json_buffer);// 解析JSONjsoncJSON_Parse(json_buffer);if(json!NULL){printf(\nJSON parsed successfully);Array_obj1cJSON_GetObjectItem(json,LED);if(Array_obj1!NULL){printf(\nLED object found);// 尝试使用不同的方式获取LED值intled_valueArray_obj1-valueint;printf(\nLED value: %d,led_value);if(led_value){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);printf(\nLED ON);}else{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);printf(\nLED OFF);}}else{printf(\nLED object not found);}cJSON_Delete(json);// 释放JSON对象}else{printf(\nJSON parse error: %s,cJSON_GetErrorPtr());}}}}// 重置接收缓冲区memset(my_re_buf,0,sizeof(my_re_buf));pt0;}HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}/* USER CODE BEGIN 4 */voidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart){UNUSED(huart);if(huarthuart2){my_re_buf2aRxBuffer;if(ptsizeof(my_re_buf)-1)// 防止数组越界{my_re_buf[pt]aRxBuffer;my_re_buf[pt]\0;// 确保字符串结束符}HAL_UART_Receive_IT(huart2,(uint8_t*)aRxBuffer,1);}}/* USER CODE END 4 */3.调试软件使用配置COM10和COM11、COM12和COM13两对串STM32的USART2连接COM11WIFI模拟器串口连接COM11先后打开WIFI模拟器运行Proteus打开网络调试助手设为TCP Server可查到第一个IP并记下再设为TCP Client并填写远程主机地址IP和端口。可以发送{“LED”:0}、{“LED”:1}控制LED灯亮灭了。

相关文章:

Proteus仿真单片机STM32F103的TCP通信5

使用WIFI模拟器软件实现Proteus与NetAssist进行TCP通信 功能:在同一台电脑上,下位机为Proteus仿真stm32f103单片机作为服务端,上位机使用NetAssist作为客户端;使用WIFI模拟器软件与Proteus通过VSPD虚拟串口以JSON格式数据进行通信…...

别再折腾了!用Conda一键搞定ComfyUI安装与Python 3.12环境配置(附常见错误排查)

别再折腾了!用Conda一键搞定ComfyUI安装与Python 3.12环境配置(附常见错误排查) 在AI绘画和工作流领域,ComfyUI凭借其模块化设计和高效性能赢得了大量用户的青睐。然而对于初学者来说,环境配置往往成为第一道门槛——…...

Gradle仓库配置优化:用阿里云镜像替代mavenCentral()、jcenter()和google()

1. 为什么需要替换Gradle默认仓库 如果你在国内做Android开发,大概率遇到过Gradle构建时卡在"Downloading..."的情况。我刚开始接触Android开发时,每次同步项目都要等上十几分钟,甚至经常因为网络问题直接失败。后来才发现&#xf…...

如何在3分钟内为Windows 11 24H2 LTSC系统一键安装微软商店:完整免费解决方案指南

如何在3分钟内为Windows 11 24H2 LTSC系统一键安装微软商店:完整免费解决方案指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 对于选择…...

PX4飞控固件编译调试避坑实录:从GCC版本冲突到Python模块缺失的完整解决流程

PX4飞控固件编译调试避坑实录:从GCC版本冲突到Python模块缺失的完整解决流程 当你在深夜的办公室里,面对着满屏红色错误提示的终端窗口,PX4固件编译又一次失败了——这可能是每个无人机开发者都经历过的噩梦时刻。不同于简单的"复制粘贴…...

如何用EZCard快速批量制作桌游卡牌:400%效率提升的终极指南

如何用EZCard快速批量制作桌游卡牌:400%效率提升的终极指南 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/ca…...

【2026年阿里巴巴集团暑期实习- 4月15日-算法岗-第二题- 何物为真】(题目+思路+JavaC++Python解析+在线测试)

题目内容 你在玩一个 “真假话” 游戏。一共有 nnn 句话,部分句子的真假你已经知道,其余句子未知。我们用 111 表示真话、000</...

【2026年阿里巴巴集团暑期实习- 4月15日-算法岗-第一题- 富豪】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个长度为 nnn 的数组 { a1​,a2​,…,ana_1​,a_2​,…,a_na...

【2026年华为暑期实习-非AI方向(通软嵌软测试算法数据科学)-4月15日-第三题(100分)- 实现一个窗口系统】(题目+思路+JavaC++Python解析+在线测试)

题目内容 实现一个简单的窗口系统。首先初始化一个给定宽高的屏幕,并建立图像坐标系,以屏幕左上角 (0, 0) 为坐标原点。 窗口系统可以容纳窗口,窗口有以下属性: 窗口名 窗口宽高 窗口左上角坐标 窗口层级 支持的操作 窗口系统支持以下操作: 创建窗口 移除窗口 resizere…...

【2026年华为暑期实习-非AI方向(通软嵌软测试算法数据科学)-4月15日-第二题(100分)- 异或树】(题目+思路+JavaC++Python解析+在线测试)

题目内容 老师为孩子们设计了一个使用异或树的游戏。游戏在一棵有 nnn 个节点的树上进行,节点编号从 111 到 nnn...

多模态视觉-语言-时序融合建模,深度解析沃尔玛中国区销量预测误差下降41%的核心架构,

第一章&#xff1a;多模态大模型在零售中的应用 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型正深刻重构零售行业的感知、理解与决策范式。通过联合建模文本、图像、视频、语音及结构化销售数据&#xff0c;模型可实现跨模态语义对齐&#xff0c;支撑从商品识别…...

读懂言外之意,破解模糊困境——如何理解人类意图和模糊指令

日常生活中&#xff0c;我们常常被模糊的表达包围&#xff1a;家人说“帮我拿个东西”&#xff0c;朋友说“有空聚聚”&#xff0c;领导说“这个方案再完善一下”。这些看似简单的指令&#xff0c;背后却隐藏着复杂的人类意图&#xff0c;若无法准确解读&#xff0c;轻则造成误…...

大模型微调进阶:多任务微调实战

什么是多任务微调&#xff1f; 多任务微调的数据组织 多任务微调的训练策略 任务选择与任务冲突 从单任务到多任务&#xff1a;一个渐进路径...

06华夏之光永存:(院士视角)华为未来十年算力生态前瞻 鸿蒙生态·万物互联下的AI模型轻量化部署

华夏之光永存&#xff1a;华为未来十年算力生态前瞻系列第6篇 鸿蒙生态万物互联下的AI模型轻量化部署 一、摘要 鸿蒙生态作为华为万物互联的核心载体&#xff0c;是打通端侧设备、实现AI能力全域覆盖的关键链路&#xff0c;将盘古大模型轻量化部署至鸿蒙全场景终端&#xff0c;…...

05华夏之光永存:(院士视角)华为未来十年算力生态前瞻 昇腾+盘古·算力与大模型端边云协同落地

华夏之光永存&#xff1a;华为未来十年算力生态前瞻系列第5篇 昇腾盘古算力与大模型端边云协同落地 一、摘要 昇腾芯片提供底层算力支撑&#xff0c;盘古大模型输出智能决策能力&#xff0c;二者协同是华为未来十年算力生态实现规模化、高效化、全场景落地的核心组合。本文聚焦…...

手术室里的实时多模态推理:达芬奇+超声+术中病理流式融合模型已进入II期临床,错过将滞后3年临床转化窗口期

第一章&#xff1a;多模态大模型在医疗中的应用 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型正深刻重塑医疗AI的技术边界&#xff0c;其核心能力在于协同理解医学影像、电子病历文本、基因序列、病理切片及实时生理信号等异构数据源&#xff0c;从而支撑诊断辅…...

为什么OpenAI不谈多模态商业化?——SITS2026圆桌深度拆解:中美8家上市公司的多模态收入结构图谱(含未公开合同条款关键字段)

第一章&#xff1a;为什么OpenAI不谈多模态商业化&#xff1f; 2026奇点智能技术大会(https://ml-summit.org) OpenAI在公开技术路线图、开发者大会演讲及API文档中&#xff0c;持续聚焦文本生成、推理优化与Agent架构演进&#xff0c;却对图像、音频、视频等多模态能力的商业…...

【2026奇点智能技术大会权威解码】:多模态金融分析的5大落地瓶颈与金融机构已验证的3步实施框架

第一章&#xff1a;2026奇点智能技术大会&#xff1a;多模态金融分析 2026奇点智能技术大会(https://ml-summit.org) 多模态金融分析正成为大模型落地最关键的垂直场景之一。在2026奇点智能技术大会上&#xff0c;来自高盛、彭博与蚂蚁集团的研究团队联合发布了开源框架FinM3&…...

推理成本直降63%的关键路径,深度解析动态视觉token剪枝与跨模态KV缓存复用技术

第一章&#xff1a;多模态大模型推理成本优化 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型&#xff08;如LLaVA、Qwen-VL、Fuyu-8B&#xff09;在图像理解、跨模态检索与视觉问答等任务中展现出强大能力&#xff0c;但其推理阶段的显存占用高、延迟大、能耗显著…...

为什么你的Qwen2-VL在Jetson AGX Orin上跑不出3FPS?——揭秘多模态实时推理中被低估的ViT Patch Embedding内存带宽墙(附NVLink微调参数表)

第一章&#xff1a;多模态大模型实时处理能力 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的实时处理能力正成为边缘AI与交互式智能系统落地的核心瓶颈。当视觉、语音、文本与传感器信号需在毫秒级完成对齐、融合与推理时&#xff0c;传统批处理范式与静态图优…...

密码学-古典密码

密码学-古典密码 密码学-第一章 古典密码 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 密码学-第一章 古典密码前言一、密码学的概述二、密码的发展阶段 典型应用&#xff1a;古典密码的分类 置换密码代换密…...

新手程序员入门必看!网络安全全攻略+免费学习资源 建议收藏

新手程序员入门必看&#xff01;网络安全全攻略免费学习资源 建议收藏 本文全面科普网络安全的定义、运作机制、常见威胁与防护最佳实践&#xff0c;同时整理了适配零基础的网安入门学习路线&#xff0c;还附带免费学习资源分享&#xff0c;帮助小白、转行及应届生快速入门网络…...

3步打造专业级象棋AI助手:深度学习智能连线实战指南

3步打造专业级象棋AI助手&#xff1a;深度学习智能连线实战指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 想在象棋对弈中获得职业选手般的分析能力吗…...

EuroSAT遥感分类深度解析:从数据架构到生产部署的技术实践

EuroSAT遥感分类深度解析&#xff1a;从数据架构到生产部署的技术实践 【免费下载链接】EuroSAT EuroSAT: Land Use and Land Cover Classification with Sentinel-2 项目地址: https://gitcode.com/gh_mirrors/eu/EuroSAT EuroSAT数据集作为Sentinel-2卫星图像在土地利…...

CefFlashBrowser:在2026年重温Flash经典的终极解决方案

CefFlashBrowser&#xff1a;在2026年重温Flash经典的终极解决方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser CefFlashBrowser 是一款专为Flash内容设计的开源浏览器工具&#xff0c…...

Leaflet实战:从零构建交互式地图应用

1. 为什么选择Leaflet开发地图应用 第一次接触地图开发时&#xff0c;我面对市面上众多的地图库感到眼花缭乱。Google Maps API收费昂贵&#xff0c;OpenLayers学习曲线陡峭&#xff0c;直到发现了Leaflet这个宝藏库。它就像地图开发界的瑞士军刀——轻巧但功能齐全。最让我惊喜…...

DVWA靶场实战:从Low到Impossible,手把手教你绕过文件上传漏洞的层层防御

DVWA靶场实战&#xff1a;文件上传漏洞攻防全解析 1. 初识文件上传漏洞 文件上传功能几乎是每个Web应用都必备的基础模块&#xff0c;但恰恰是这个看似简单的功能&#xff0c;却成为黑客最常利用的攻击入口之一。想象一下&#xff0c;如果网站允许用户上传任意文件到服务器&…...

vxe-table编辑保存踩坑记录:为什么你的修改总是自动提交?(含lodash对比技巧)

vxe-table编辑保存深度解析&#xff1a;如何精准控制数据提交时机 引言 在前端开发中&#xff0c;表格组件的数据编辑功能几乎是每个中大型后台系统的标配需求。vxe-table作为一款功能强大的Vue表格组件&#xff0c;其可编辑行功能在实际业务场景中被广泛使用。然而&#xff0c…...

C++实战:从零构建车牌识别系统(附完整源码解析)

1. 车牌识别系统入门指南 第一次接触车牌识别系统时&#xff0c;我被这个看似神奇的技术深深吸引。想象一下&#xff0c;摄像头拍下一辆飞驰而过的汽车&#xff0c;系统就能自动提取出车牌号码&#xff0c;这背后到底藏着什么玄机&#xff1f;经过几个月的实践摸索&#xff0c;…...

微信小程序跳转外部链接,除了web-view,这3种场景你考虑到了吗?(含代码示例)

微信小程序外部链接跳转的进阶实践&#xff1a;突破web-view的3种高阶场景 在微信小程序开发中&#xff0c;web-view组件是连接外部网页最直接的桥梁&#xff0c;但实际业务场景往往比基础实现复杂得多。当你的小程序需要处理带登录态的跳转、TabBar集成或性能敏感型页面时&…...