ZLIP從增值版V1.0開始支持在uc/os-II下運(yùn)行。uc/os-II的多任務(wù)機(jī)制使得ZLIP的各個(gè)套接字能夠在相互獨(dú)立的任務(wù)中運(yùn)行,減少了編程的復(fù)雜度。
實(shí)例程序
打開開發(fā)板文檔“代碼\UseZLIP\UCOSII\ZLIP_UCOS.Uv2”,該工程中包含有uc/os-II部分、ZLIP部分和例子程序socket_test_ucosii.c。在例子程序中實(shí)現(xiàn)兩個(gè)任務(wù):接收任務(wù)和發(fā)送任務(wù)。接收任務(wù)用于接收PC發(fā)來的文件,發(fā)送任務(wù)不斷向PC發(fā)起連接,一旦連接后將每隔1秒鐘向PC發(fā)送數(shù)據(jù)。由于發(fā)送任務(wù)優(yōu)先級高于接收任務(wù),所以只要一秒時(shí)間間隔到了,接收任務(wù)會被打斷,執(zhí)行發(fā)送任務(wù),發(fā)送完畢后又會執(zhí)行接收任務(wù)。
在板子上運(yùn)行該程序。
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程序,Send mode選擇Send Message,并在1024端口監(jiān)聽。板子會在15秒之內(nèi)連接上SocketTestDlg,連接上后,板子每隔1秒向SocketTestDlg發(fā)送1字節(jié)數(shù)據(jù),SocketTestDlg可以接收到該數(shù)據(jù),如圖所示:

3. 再運(yùn)行一個(gè)SocketTestDlg實(shí)例,向192.168.0.2:1024端口連接。之后使用ClientSend發(fā)送一個(gè)文件給開發(fā)板。發(fā)送完畢以后使用ClientClose關(guān)閉連接。通過SocketTestDlg輸出的校驗(yàn)和和串口輸出的校驗(yàn)和可以確定文件發(fā)送無誤。
4. 觀察第一個(gè)SocketTestDlg實(shí)例的輸出信息可知在板子接收文件的同時(shí),每隔1秒繼續(xù)向PC發(fā)送數(shù)據(jù)。
該例子演示了,如何使用ZLIP和uc/os-II同時(shí)運(yùn)行兩個(gè)獨(dú)立的通信任務(wù)。
程序部分代碼
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;
}