04_W5500_TCP_Server

上一節我們完成了TCP_Client實驗,這節使用W5500作為服務端與TCP客戶端進行通信。


目錄

1.W5500服務端要做的:

2.代碼分析:

3.測試:


1.W5500服務端要做的:

? ? ?服務端只需要打開socket,然后監聽端口即可。

2.代碼分析:

? ? ? 1.進行單片機外設初始化spi、uart、at24c02等。

? ? ? 2.配置w5500網絡信息。

? ? ? 3.進入socket狀態機。

Sn_SR狀態描述:
? ? ? ? 0x00 ? ? ? ?SOCK_CLOSED
? ? ? ? 0x13 ? ? ? ?SOCK_INIT
? ? ? ? 0x14 ? ? ? ?SOCK_LISTEN
? ? ? ? 0x17 ? ? ? ?SOCK_ESTABLISHED
? ? ? ? 0x1C ? ? ? ?SOCK_CLOSE_WAIT
? ? ? ? 0x22 ? ? ? ?SOCK_UDP

? ? ? ? 我們不斷地去讀取狀態寄存器Sn_SR的值,根據這個值去執行不同的操作,首先我們的socket處于關閉狀態SOCK_CLOSED,執行socket()函數,打開socket,如果打開成功,Sn_SR寄存器會變為SOCK_INIT然后調用listen函數去監聽端口,等待客戶端連接。客戶端連接成功后啊,Sn_SR寄存器會變為SOCK_ESTABLISHED,這時就處于連接狀態。就可以進行數據傳輸測試。

int main(void)
{uint16 local_port = 9000;												// 定義一個本地端口并初始化uint16 len = 0;/***** MCU時鐘初始化 *****/Systick_Init(72);/***** 中斷控制器配置 *****/NVIC_Configuration();/***** GPIO、SPI初始化 *****/GPIO_Configuration();WIZ_SPI_Init();/***** 串口初始化 *****/USART1_Init();/***** 初始化eeprom *****/at24c16_init();/***** 硬重啟W5500 *****/Reset_W5500();/***** W5500的IP信息初始化 *****/set_default(); 														// 設置默認MAC、IP、GW、SUB、DNSset_network();														// 配置初始化IP信息并打印,初始化8個Socket/***** 打開W5500的Keepalive功能 *****/setkeepalive(0);printf("TCP Server Port: %d\r\n", local_port);printf("W5500 Init Complete!\r\n");printf("Start TCP Server Test!\r\n");/*Socket狀態機,MCU通過讀Sn_SR(0)的值進行判斷Socket應該處于何種狀態Sn_SR狀態描述:0x00		SOCK_CLOSED0x13		SOCK_INIT0x14		SOCK_LISTEN0x17		SOCK_ESTABLISHED0x1C		SOCK_CLOSE_WAIT0x22		SOCK_UDP*/while(1)																	// Socket狀態機{switch(getSn_SR(0))										// 獲取socket0的狀態{case SOCK_INIT:											// Socket處于初始化完成(打開)狀態listen(0);											// 監聽剛剛打開的本地端口,等待客戶端連接break;case SOCK_ESTABLISHED:							// Socket處于連接建立狀態if(getSn_IR(0) & Sn_IR_CON){setSn_IR(0, Sn_IR_CON);				// Sn_IR的CON位置1,通知W5500連接已建立}// 數據回環測試程序:數據從上位機客戶端發給W5500,W5500接收到數據后再回給客戶端len = getSn_RX_RSR(0);						// 讀取W5500空閑接收緩存寄存器的值并賦給len,Sn_RX_RSR表示接收緩存中已接收和保存的數據大小if(len > 0){recv(0, buffer, len);						// W5500接收來自客戶端的數據,并通過SPI發送給MCUprintf("%s\r\n", buffer);			// 串口打印接收到的數據send(0, buffer, len);						// 接收到數據后再回給客戶端,完成數據回環}// W5500從串口發數據給客戶端程序,數據需以回車結束if(USART_RX_STA & 0x8000)				// 判斷串口數據是否接收完成{len = USART_RX_STA & 0x3fff;		// 獲取串口接收到數據的長度send(0, USART_RX_BUF, len);			// W5500向客戶端發送數據USART_RX_STA = 0;								// 串口接收狀態標志位清0memset(USART_RX_BUF, 0, len + 1);	// 串口接收緩存清0}break;case SOCK_CLOSE_WAIT:								// Socket處于等待關閉狀態close(0);												// 關閉Socket0break;case SOCK_CLOSED:										// Socket處于關閉狀態socket(0, Sn_MR_TCP, local_port, Sn_MR_ND);		// 打開Socket0,并配置為TCP無延時模式,打開一個本地端口break;}}
}

3.測試:

與之前相同,我們仍要保持w5500配置的IP要和我們電腦的以太網IP地址在同一個網段內,我們使用電腦端的網絡調試助手模擬TCP_Client去連接我們的W5500 TCP_Server端。

上圖表示我們模擬的TCP_Client已經成功連接到W5500TCP_Server端,并且數據傳輸OK

03_W5500TCP_Client <---------上一篇? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下一篇--------> 05_W5500_UDP

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209944.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209944.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209944.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Spring Boot的水產養殖管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于Spring Boot的水產養殖管理系統,jav…

HarmonyOS Developer——鴻蒙【構建第一個JS應用(FA模型)】

創建JS工程 JS工程目錄結構 構建第一個頁面 構建第二個頁面 實現頁面間的跳轉 使用真機運行應用 說明 為確保運行效果&#xff0c;本文以使用DevEco Studio 3.1 Release版本為例&#xff0c;點擊此處獲取下載鏈接。 創建JS工程 若首次打開DevEco Studio&#xff0c;請點擊…

蝦皮什么商品好賣

在蝦皮&#xff08;Shopee&#xff09;平臺上&#xff0c;有許多商品類別都表現出了較好的銷售情況。然而&#xff0c;隨著時間和地區的變化&#xff0c;熱銷商品也會有所不同。本文將介紹一些在蝦皮平臺上表現較好的商品類別&#xff0c;并提供一些建議&#xff0c;幫助您在蝦…

交換機基本原理和配置

目錄 一、數據鏈路層功能 二、交換機的工作原理 三、交換機的四大功能 一、數據鏈路層功能 位于網絡層與物理層之間 數據鏈路的建立、維護與拆除幀包裝、幀傳輸、幀同步幀的差錯恢復流量控制 二、交換機的工作原理 交換機通過數據幀的源 MAC 地址&#xff0c;學習到交換機端…

偶數位字符前置算法

題目描述&#xff1a; 題目描述 編寫函數void myshift(char *s),在不打亂s原本相對位置情況下&#xff0c;將偶數位上的字符全部挪到奇數位字符的前面。輸入格式 輸入一個字符串 s保證輸入字符串 s 的長度大于等于1小于等于100輸出格式 輸出修改后的字符串 s。輸入樣例1 01234…

【算法】直接插入排序

目錄 1. 說明2. 舉個例子3. java代碼示例4. java示例截圖 1. 說明 1.直接插入排序的方式和打牌一樣&#xff0c;剛開始數組為空 2.拿到一個數字后從左到右將它與數組中的每一個數字進行比較&#xff0c;然后插入合適的位置 3.到最后&#xff0c;數組按照既定的順序排序好 2. 舉…

OpenCV基礎篇

OpenCV基礎篇 一、圖像、視頻讀取二、cv::Mat()數據類型三、繪圖功能四、鼠標響應事件五、圖像像素讀寫六、圖像像素運算七、顏色空間轉換八、圖像幾何變換九、圖像濾波十、圖像二值化十一、圖像梯度十二、Canny邊緣檢測十三、圖像形態學十四、圖像直方圖十五、霍夫變換十六、分…

線程池的拒絕策略

文章目錄 線程池的拒絕策略AbortPolicy拒絕策略&#xff1a;CallerRunsPolicy拒絕策略&#xff1a;DiscardOldestPolicy拒絕策略&#xff1a;DiscardPolicy拒絕策略&#xff1a; 線程池的拒絕策略 若在線程池當中的核心線程數已被用完且阻塞隊列已排滿&#xff0c;則此時線程池…

springboot_ssm_java學位論文盲審系統

本系統主要實現用戶登錄驗證&#xff0c;用戶使用郵箱&#xff0c;密碼和選擇身份進行登錄&#xff0c;用戶查看個人中心&#xff0c;提交論文&#xff0c;發表留言和問題反饋。用戶在線注冊。學生模塊功能實現&#xff1a;學生注冊&#xff0c;查看信息&#xff0c;修改資料&a…

智能優化算法應用:基于魚鷹算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于魚鷹算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于魚鷹算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.魚鷹算法4.實驗參數設定5.算法結果6.參考文獻7.MATLAB…

藍橋杯航班時間

藍橋杯其他真題點這里&#x1f448; //飛行時間 - 時差 已過去的時間1 //飛行時間 時差 已過去的時間2 //兩個式子相加會發現 飛行時間 兩段時間差的和 >> 1import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public cl…

Android藍牙協議棧fluoride(四) - 設備管理(bt interface)

設備管理的接口實現了藍牙的開/關、屬性設置、發現設備、獲取profile的接口等等。 接口聲明 接口聲明如下&#xff1a; // include/hardware/bluetooth.h typedef struct {// 打開接口并注冊回調函數int (*init)(bt_callbacks_t* callbacks, bool is_atv);// 關閉接口void (…

目標檢測YOLO系列從入門到精通技術詳解100篇-【圖像處理】邊緣檢測

目錄 知識儲備 算法原理 邊緣檢測(Canny算子) Canny算子邊緣檢測流程 應用案例

[Linux] LAMP架構

一、LAMP架構架構的概述 LAMP 架構是一種流行的 Web 應用程序架構&#xff0c;它的名稱是由四個主要組件的首字母組成的&#xff1a; Linux&#xff08;操作系統&#xff09;&#xff1a; 作為操作系統&#xff0c;Linux 提供了服務器的基礎。它負責處理硬件資源、文件系統管理…

解讀 | 阿里通義千問模型全尺寸開源 “誠意滿滿“背后的名與利

大家好&#xff0c;我是極智視界&#xff0c;歡迎關注我的公眾號&#xff0c;獲取我的更多前沿科技分享 邀您加入我的知識星球「極智視界」&#xff0c;星球內有超多好玩的項目實戰源碼和資源下載&#xff0c;鏈接&#xff1a;https://t.zsxq.com/0aiNxERDq 12 月 1 日阿里開源…

基于Web和深度學習的辣椒檢測產量預測系統

1.研究背景與意義 項目參考AAAI Association for the Advancement of Artificial Intelligence 研究背景與意義 辣椒是一種重要的經濟作物&#xff0c;被廣泛種植和消費。然而&#xff0c;辣椒的產量預測一直是農業生產中的重要問題。準確地預測辣椒的產量可以幫助農民合理安…

第10節:Vue3 論點

如何在UniApp中使用Vue3框架創建論點&#xff1a; <template> <view> <text>{{ segments[currentSegment].content }}</text> </view> </template> <script> import { ref, computed } from vue; export default { setup…

高項備考葵花寶典-項目進度管理輸入、輸出、工具和技術(下,很詳細考試必過)

項目進度管理的目標是使項目按時完成。有效的進度管理是項目管理成功的關鍵之一&#xff0c;進度問題在項目生命周期內引起的沖突最多。 小型項目中&#xff0c;定義活動、排列活動順序、估算活動持續時間及制定進度模型形成進度計劃等過程的聯系非常密切&#xff0c;可以視為一…

【論文筆記】FSD V2: Improving Fully Sparse 3D Object Detection with Virtual Voxels

原文鏈接&#xff1a;https://arxiv.org/abs/2308.03755 1. 引言 完全稀疏檢測器在基于激光雷達的3D目標檢測中有較高的效率和有效性&#xff0c;特別是對于長距離場景而言。 但是&#xff0c;由于點云的稀疏性&#xff0c;完全稀疏檢測器面臨的一大困難是中心特征丟失&…

vFW搭建IRF

正文共&#xff1a;2328字 40圖&#xff0c;預估閱讀時間&#xff1a;5 分鐘 IRF&#xff08;Intelligent Resilient Framework&#xff0c;智能彈性架構&#xff09;技術通過將多臺設備連接在一起&#xff0c;虛擬化成一臺設備&#xff0c;集成多臺設備的硬件資源和軟件處理能…