ZLIP從增值版V1.0開始支持在uc/os-II下運行。uc/os-II的多任務機制使得ZLIP的各個套接字能夠在相互獨立的任務中運行,減少了編程的復雜度。
實例程序
打開開發(fa)板(ban)文檔“代(dai)碼\UseZLIP\UCOSII\ZLIP_UCOS.Uv2”,該工(gong)程(cheng)中包含有uc/os-II部(bu)分、ZLIP部(bu)分和(he)例子(zi)程(cheng)序socket_test_ucosii.c。在例子(zi)程(cheng)序中實現(xian)兩(liang)個任(ren)(ren)務:接(jie)(jie)(jie)(jie)收(shou)任(ren)(ren)務和(he)發(fa)送(song)任(ren)(ren)務。接(jie)(jie)(jie)(jie)收(shou)任(ren)(ren)務用于(yu)接(jie)(jie)(jie)(jie)收(shou)PC發(fa)來的文件,發(fa)送(song)任(ren)(ren)務不斷向PC發(fa)起連接(jie)(jie)(jie)(jie),一(yi)旦連接(jie)(jie)(jie)(jie)后(hou)將每隔(ge)1秒鐘向PC發(fa)送(song)數據。由于(yu)發(fa)送(song)任(ren)(ren)務優先級高于(yu)接(jie)(jie)(jie)(jie)收(shou)任(ren)(ren)務,所(suo)以只要一(yi)秒時間間隔(ge)到(dao)了(le),接(jie)(jie)(jie)(jie)收(shou)任(ren)(ren)務會被打斷,執行(xing)(xing)發(fa)送(song)任(ren)(ren)務,發(fa)送(song)完畢(bi)后(hou)又(you)會執行(xing)(xing)接(jie)(jie)(jie)(jie)收(shou)任(ren)(ren)務。
在板子上運行該程序。
1. 串口提示:
start
TODO:Peer TCP should listen at 192.168.0.3:1024
peer connect to 192.168.0.2:1024 at any timeand send big data.
2. 打開SocketTestDlg程序(xu),Send mode選擇Send Message,并(bing)在1024端口監聽。板子會在15秒之(zhi)內(nei)連(lian)接上SocketTestDlg,連(lian)接上后,板子每隔1秒向SocketTestDlg發送1字節(jie)數據,SocketTestDlg可以接收到該數據,如圖所示:

3. 再運行一個SocketTestDlg實例,向192.168.0.2:1024端口(kou)連(lian)接。之后(hou)使(shi)用(yong)ClientSend發送一個文件給開發板。發送完畢以后(hou)使(shi)用(yong)ClientClose關閉連(lian)接。通過SocketTestDlg輸(shu)出的校(xiao)驗(yan)和(he)和(he)串口(kou)輸(shu)出的校(xiao)驗(yan)和(he)可以確定文件發送無誤。
4. 觀察第一個SocketTestDlg實例的輸出信息可知在板子接收文件的同時,每隔1秒繼續向PC發送數據。
該例(li)子演示了(le),如何使用ZLIP和uc/os-II同時運(yun)行(xing)兩個獨立的通信任(ren)務。
程序部分代碼
main()
{
struct zlip_addr_info xdata addr_info=
{
ETHER_ADDR,
IPAddr,
NetMask,
GateWay
};
ZLIP_Init(&addr_info);
OSInit();
printf("\nstart");
OSTaskCreate(Task_recv, (void xdata *)0, &Task_recv_stack[0],3);
OSTaskCreate(Task_send, (void xdata *)0, &Task_send_stack[0],2);
OSStart();
ZLIP_Release();
return TRUE;
}