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