ARM設(shè)計(jì)的高速數(shù)據(jù)采集遠(yuǎn)程監(jiān)控系統(tǒng)技術(shù)
int Net— Send— SysConfig(int Conn—ID,char Cmdname)
∥向服務(wù)器反饋工作狀態(tài)即執(zhí)行服務(wù)器下達(dá)的命令情況
∥Conn—ID為已經(jīng)建立的套接字描述符
{
status=write(Conn—ID,sendbuff,len);
∥向服務(wù)器發(fā)送信息
}
④ Read()函數(shù):從套接字緩沖區(qū)讀取數(shù)據(jù)
int Receive_ Command(int Conn—ID)
{
return len=read(Conn—ID,NetBuf,REC—BUFF_SIZE);
∥成功返回實(shí)際收到的字節(jié)總數(shù),出錯(cuò)返回一1
}
⑤ Close()函數(shù):用于關(guān)閉一個(gè)套接字描述符。
close(Socket—ID); //關(guān)閉連接下位機(jī)的開發(fā)都是在Linux環(huán)境下用交叉編譯器ARM.Linux—gcc編譯通過。
4 上位機(jī)的通信實(shí)現(xiàn)
服務(wù)器監(jiān)控軟件是用Visual Basic 6.0來編寫的。在Visual Basic(以下簡(jiǎn)稱VB)中,進(jìn)行網(wǎng)絡(luò)通信開發(fā)是非常方便的。VB除了提供豐富的控件外,還提供了各種API來進(jìn)行更為高級(jí)的運(yùn)用程序的開發(fā)。本裝置通過Winsock控件進(jìn)行網(wǎng)絡(luò)開發(fā)。Winsock控件對(duì)用戶是不可見的,它提供了訪問TCP和UDP網(wǎng)絡(luò)服務(wù)的方便途徑。在編寫客戶或服務(wù)器運(yùn)用程序時(shí),不必了解TCP的細(xì)節(jié)或低級(jí)的Win—sock API。通過設(shè)置控件的屬性并調(diào)用其方法就可連接到一個(gè)遠(yuǎn)程客戶/服務(wù)器端,并且雙向交換數(shù)據(jù)。
在本系統(tǒng)中作為服務(wù)器的運(yùn)用軟件,在Winsock控件的屬性設(shè)置上要注意:
① Protocol屬性。返回或設(shè)置Winsock控件所使用的協(xié)議(TCP或UDP)。
UDPFrmMain.Winsock— Server.Protocol:sckTCPProtocol
∥選擇TCP協(xié)議,提高數(shù)據(jù)傳輸?shù)目煽啃?p align="left">② LocalPort屬性。返回或設(shè)置所用到的本地端口。對(duì)客戶來說,該屬性指定發(fā)送數(shù)據(jù)的本地端口;對(duì)于服務(wù)器來說,是指定偵聽的本地端口。
FrmMain.W insock— Server.LocalPort=LocalPort— ID∥服務(wù)器端口號(hào),最好大于1 000
③ State屬性。返回控件的狀態(tài),設(shè)計(jì)時(shí)只讀。用在判斷監(jiān)控網(wǎng)絡(luò)狀態(tài),根據(jù)狀態(tài)改變各個(gè)按鍵指示
燈的狀態(tài),提高操作安全性。其設(shè)置如下:
Connected— State=FrmMain.W insock— Server.State
Select Case Connected— State
Case 0 StatusBar1.Panels(3).Text= “關(guān)閉”
Case 1 StalusBar1.Panels(3).Text=“打開”
Case 2 StatusBar1.Panels(3).Text=“偵聽”
4.1 Winsock控件方法
Winsock控件方法主要有以下幾種:
① Listen方法。在運(yùn)用程序初始化時(shí)創(chuàng)建套接
字并將其設(shè)置為偵聽狀態(tài),等待客戶機(jī)的連接請(qǐng)求。
Private Sub Form_ Load()
FrmMain.Winsock— Server.Listen
End Sub
② Accept方法。當(dāng)有新連接時(shí)就會(huì)出現(xiàn)ConnectionRequest
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論