如何使用網(wǎng)絡(luò)單片機W7100A實現(xiàn)TCP通信
例1.6 設(shè)置斷開連接
1.7
和斷開的過程不同,關(guān)閉過程可以直接將SOCKET變成SOCK_CLOSED(0×00)。用戶通過
CLOSE(n)函數(shù)選擇合適的端口號,然后無論對端有沒有做出響應(yīng)都將關(guān)閉SOCKET。如果RST數(shù)據(jù)包來自對端,SOCKET將會無條件變成SOCK_CLOSED(0×00)。一旦SOCKET變成為SOCK_CLOSED(0X00), SOCKET將不再可用除非重新打開它。
例1.7 設(shè)置關(guān)閉
2
2.1
例2.1 設(shè)置回路測試(LOOPBACK)服務(wù)器
如上面的例子所示,在SOCKET循環(huán)周期內(nèi)除了connect()函數(shù),其他所有函數(shù)都可以使用。首先利用getSn_SR(s)函數(shù)檢測SOCKET狀態(tài),在W7100A復(fù)位后,所有的SOCKET全都變成SOCK_CLOSED(0×00)狀態(tài)。然后利用close()函數(shù)完全關(guān)閉SOCKET,再通過socket(s,Sn_MR_TCP,port,0×00)函數(shù)來創(chuàng)建一個新的SOCKET。如果SOCKET創(chuàng)建成功,狀態(tài)將會變成SOCK_INIT,再通過listen(s)函數(shù)將SOCKET的狀態(tài)變成監(jiān)聽。一旦與對端建立連接,SOCKET的狀態(tài)將變成SOCK_ESTABLISHED,并且等待數(shù)據(jù)。所有接收到的數(shù)據(jù)都保存在接收緩存器中,recv(s,data_buf,len)函數(shù)中的data_buf變量定義為接收到的數(shù)據(jù)的長度。最后再通過send(s,data,len)函數(shù)將數(shù)據(jù)回送到客戶端。客戶端會比較數(shù)據(jù)交換前后的差異來檢測數(shù)據(jù)通信是否正常。
2.2
例2.2 設(shè)置回路測試(LOOPBACK)客戶端
TCP客戶端的程序例子和TCP服務(wù)器的例子基本相同。唯一的區(qū)別在于SOCK_INIT狀態(tài)下,是通過connect()函數(shù)而不是listen()函數(shù)與服務(wù)器連接。
3
這一章將會介紹TCP回路測試程序運行的例子。在下載完成TCP回路測試應(yīng)用的二進制文件后,運行iMCUW7100單片機內(nèi)的數(shù)據(jù)包實現(xiàn)回路測試的演示過程。更多的詳細信息,請參閱文檔‘如何在W7100A中創(chuàng)建工程’,‘WizISP程序指南’以及‘W7100A Debugger指南’。
對TCP串行回路,用戶按照下面的步驟進行設(shè)定:
●
直接利用UTP線連接PC機與iMCU7100EVB
直接利用串口線連接PC機與iMCU7100EVB
使能iMCU7100EVB的5V電源適配器
●
- IP地址 : 192.168.1.xxx (‘xxx’ 為用戶PC機的IP地址,在客戶端模式下此IP地址
- 網(wǎng)關(guān)IP地址 : 192.168.1.1
- 子網(wǎng)掩碼 : 255.255.255.0
●
3.1
<圖3.1>
在超級終端機程序行完成之后,如圖4.1設(shè)置串行通信的選項。超級終端機程序?qū)@示串行通信時iMCU7100EVB的運行狀態(tài)。
3.2
想了解更多關(guān)于AX1程序的信息,請參考AX1用戶手冊。
3.2.1
一旦連接成功,如圖4.2選擇TCP => SEND 菜單發(fā)送數(shù)據(jù)。因為此時iMCU7100EVB作為服務(wù)器,AX1程序窗口將會顯示客戶端的狀態(tài)。
評論