隨著(zhù)網(wǎng)絡(luò )普及和速度的提升,網(wǎng)絡(luò )通信方式被更多的用戶(hù)采用,即用戶(hù)通過(guò)集線(xiàn)器或網(wǎng)絡(luò )直連的方式與顯示屏通信。其中通過(guò)集線(xiàn)器,PC 機和顯示屏IP 可不在同一個(gè)網(wǎng)段;而網(wǎng)絡(luò )直連時(shí),PC 機和顯示屏的IP 地址必須在同一個(gè)網(wǎng)段。不管采用哪一種方法,都必須知道兩者的IP 地址才能進(jìn)行通信。但在調試過(guò)程中,由于LED 控制卡太多、放置時(shí)間太長(cháng)或由不同的人進(jìn)行配置,有時(shí)用戶(hù)可能不知道顯示屏的IP 地址,這樣就很難開(kāi)展工作了。另外,出廠(chǎng)配置的IP 地址和現場(chǎng)安裝的IP 地址可能不一樣,并且現場(chǎng)安裝的顯示屏IP 地址由于用戶(hù)千差萬(wàn)別,其IP 地址段也不一樣。這樣一來(lái),在調試過(guò)程中,需要反復修改顯示屏或PC 機的IP 地址,帶來(lái)很大的工作量。因此,基于應用中的這些問(wèn)題,有用戶(hù)提出能否采用網(wǎng)絡(luò )直連的方式,無(wú)需知道LED 顯示屏的IP 地址,也不用修改PC 機的IP 就可實(shí)現PC 機與LED 顯示屏網(wǎng)絡(luò )通信,讓用戶(hù)更方便地調試LED 顯示屏。通過(guò)市場(chǎng)調研,有些軟件聲稱(chēng)實(shí)現了LED 顯示屏網(wǎng)絡(luò )直連的方式,但在具體實(shí)現上并不能令人滿(mǎn)意,例如穩定性、可靠性和時(shí)效性等方面并不如意。經(jīng)過(guò)研究,本文提出一種新的網(wǎng)絡(luò )直連的方法,可以很好地解決這些問(wèn)題,讓用戶(hù)方便、可靠、高效地調試顯示屏。
1 主要功能需求分析和模型構建
對于網(wǎng)絡(luò )直連,硬件如圖1 所示,用網(wǎng)絡(luò )直連線(xiàn)將PC 機和顯示屏連接起來(lái),然后手動(dòng)設置它們的IP 地址在同一個(gè)網(wǎng)段,即可進(jìn)行通信了。
但采用這種方式,如果事先不知道顯示屏的IP地址,將很難進(jìn)行通信。為了達到不知道顯示屏IP地址也能實(shí)現PC 機與顯示屏直連通信的目的,可借助DHCP 服務(wù)原理來(lái)解決:即設置LED 顯示屏為某固定IP 地址的DHCP 服務(wù)器,設置PC 機網(wǎng)卡為自動(dòng)獲取IP 地址的方式,通過(guò)DHCP 服務(wù)功能,自動(dòng)配置PC 機的網(wǎng)卡IP 地址,這樣網(wǎng)絡(luò )連接通道就建立了。有些開(kāi)發(fā)商就采用這種方式實(shí)現了網(wǎng)絡(luò )直連,但這種方法存在一些問(wèn)題:其一,由于UDP 通信為不連接通信,其通信可靠性要差一些,容易失;其二,只能通過(guò)操作系統自帶的系統完成,沒(méi)有干預,用戶(hù)不能設置超時(shí),有時(shí)等待時(shí)間太長(cháng),最長(cháng)為60 秒;其三,DHCP 為固定IP 方式,在實(shí)際應用中顯然不太好;其四,退出系統時(shí),不能恢復PC 機原有的網(wǎng)卡配置信息。

基于此,經(jīng)過(guò)研究,本文提出一種新的網(wǎng)絡(luò )直連方法,可以實(shí)現網(wǎng)絡(luò )直連、自動(dòng)獲取IP 地址以及實(shí)現PC 機網(wǎng)卡配置信息保存和恢復等功能,克服當前實(shí)現方法的不足,提高可靠性、穩定性和時(shí)效性等各方面性能,其系統模型如圖2 所示,主要功能和工作流程如下:
。1)啟動(dòng)系統時(shí),檢索、訪(fǎng)問(wèn)PC 機的所有網(wǎng)卡,并保存其網(wǎng)卡配置信息,供退出系統時(shí)恢復;(2)啟動(dòng)網(wǎng)絡(luò )直連進(jìn)程;(3)廣播IP 地址請求數據包;(4)返回IP 地址數據包;(5)解包,獲取PC 機和LED 顯示屏的IP 地址,設置PC 機的IP 地址;(6)返回LED 顯示屏的IP 地址,關(guān)閉網(wǎng)絡(luò )直連,完成通信通道的建立;(7)建立PC 機和LED 顯示屏的通信通道后,即可對顯示屏進(jìn)行讀/ 寫(xiě)參數、發(fā)送節目、開(kāi)關(guān)屏等通信控制操作;(8)退出系統時(shí),根據(1)保存的網(wǎng)卡配置信息,恢復PC 機網(wǎng)卡的原始狀態(tài)。
在以上流程中,(2)~(6) 是核心過(guò)程,它模擬DHCP 服務(wù),實(shí)現PC 機廣播請求IP 地址,獲取PC機IP 地址并設置,上傳LED 顯示屏IP 地址,完成網(wǎng)絡(luò )直連通道的建立,是進(jìn)行網(wǎng)絡(luò )直連操作時(shí)必做的步驟;(1)和(8)是啟動(dòng)和退出系統時(shí)所做的保存PC機網(wǎng)卡配置信息和恢復網(wǎng)卡配置信息操作;(7)是在完成網(wǎng)絡(luò )直連通道后進(jìn)行的顯示屏控制的一般操作。本文重點(diǎn)介紹前兩者。
2 關(guān)鍵功能的設計和實(shí)現
2.1 保存PC 機網(wǎng)卡配置信息
用來(lái)調試顯示屏的PC 機,一般是一機多用,在調試顯示屏的同時(shí),還用來(lái)辦公、上網(wǎng),其網(wǎng)卡IP 地址可能是固定的或自動(dòng)獲取的。在做網(wǎng)絡(luò )直連時(shí),可能會(huì )改變其IP 地址,為了不影響用戶(hù)的工作,退出時(shí)需要自動(dòng)恢復其IP 地址。而要做到這一點(diǎn),可在啟動(dòng)LED 控制軟件時(shí),讀取當前網(wǎng)卡配置信息,如IP 地址、網(wǎng)卡名、MAC 地址、網(wǎng)卡類(lèi)型、是否是自動(dòng)配置IP 地址等等,將這些信息放入一個(gè)鏈表中保存,同時(shí)設置一個(gè)標識,記錄用戶(hù)在調試顯示屏的過(guò)程中,是否使用過(guò)網(wǎng)絡(luò )直連操作,待退出系統時(shí)使用。
在Windows 操作系統中,可使用IP Helper 接口來(lái)讀取網(wǎng)卡信息,它是一套用于管理本地網(wǎng)絡(luò )設置的API,通過(guò)它使用IP_ADAPTER_INFO 結構,可以方便地提取上述網(wǎng)卡配置信息,保存到鏈表中。
2.2 借鑒DHCP 服務(wù)原理,構建網(wǎng)絡(luò )直連通道
要實(shí)現PC 機和LED 顯示屏網(wǎng)絡(luò )直連通信,必須解決兩個(gè)關(guān)鍵問(wèn)題:其一,讓PC 機和LED 顯示屏在同一個(gè)網(wǎng)段;其二,知道LED 顯示屏的IP 地址。
除此之外,還要解決多網(wǎng)卡、無(wú)線(xiàn)網(wǎng)卡對網(wǎng)絡(luò )直連的干擾等現象。借鑒DHCP 原理,主要解決思路如下:
。1)在PC 機端設計一個(gè)網(wǎng)絡(luò )直連控制進(jìn)程;(2)需要網(wǎng)絡(luò )直連時(shí), 啟動(dòng)該進(jìn)程, 通過(guò)Windows 相關(guān)網(wǎng)絡(luò )API 函數和注冊表信息,確定與LED 顯示屏連接的非無(wú)線(xiàn)網(wǎng)卡,將其MAC 地址放入構建請求IP 地址的UDP 數據包中,然后廣播出去,同時(shí)啟動(dòng)內部UDP 包捕獲子進(jìn)程;(3)LED 顯示屏收到請求IP 地址的UDP 包后,根據本身IP 地址,構造一個(gè)PC 機的IP 地址,將其廣播出去,為了不引起混亂,這里構建的是偽DHCP 包,正常的Windows 客戶(hù)端收到該UDP 包時(shí),并不會(huì )自動(dòng)改變其IP 地址;(4)網(wǎng)絡(luò )直連控制進(jìn)程的UDP 包捕獲子進(jìn)程接收到分配的IP 地址的UDP 包后,解包得到PC機的IP 地址和LED 顯示屏的IP 地址;(5)設置PC 機網(wǎng)卡IP 地址,上傳LED 顯示屏的IP 地址給控制軟件,成功后,關(guān)閉網(wǎng)絡(luò )直連控制進(jìn)程,完成網(wǎng)絡(luò )直連通道的建立。
這個(gè)網(wǎng)絡(luò )直連的過(guò)程涉及三個(gè)系統:(1)網(wǎng)絡(luò )直連控制進(jìn)程,它構建請求IP 地址UDP 數據包并廣播出去,同時(shí)監控目標網(wǎng)卡的68 端口,捕獲返回的UDP 數據包,解析出PC 機的IP 地址和LED 顯示屏的IP 地址,然后設置PC 機的IP 地址,將LED顯示屏的IP 地址提交給主進(jìn)程,完成網(wǎng)絡(luò )直連的任務(wù);(2)LED 顯示屏DHCP 服務(wù)子進(jìn)程,它接收PC機的IP 地址請求,構建并設置自身IP 地址,并返回PC 機的IP 地址的偽DHCP 包;(3)LED 控制軟件,當用戶(hù)選擇網(wǎng)絡(luò )直連方式時(shí),啟動(dòng)網(wǎng)絡(luò )直連控制子進(jìn)程,實(shí)現網(wǎng)絡(luò )直接通道的建立,完成后,關(guān)閉該進(jìn)程。
2.3 恢復PC 機網(wǎng)卡的配置信息
退出系統時(shí),根據2.1 保存的是否使用過(guò)網(wǎng)絡(luò )直連的標識進(jìn)行判斷,如果沒(méi)有使用過(guò)網(wǎng)絡(luò )直連方式,則無(wú)需執行網(wǎng)絡(luò )IP 恢復功能;否則將執行恢復功能,還原2.1 保存的網(wǎng)卡配置,恢復網(wǎng)卡IP 地址可使用netsh interface ip set 命令。同時(shí),為了加快處理速度并提高成功率,可按禁用網(wǎng)卡、設置網(wǎng)卡IP地址、再啟用網(wǎng)卡的步驟實(shí)施:
。1)使用Windows 的SetupAPI 相關(guān)接口A(yíng)PI函數禁用目標網(wǎng)卡;(2)恢復目標網(wǎng)卡IP 設置,根據靜態(tài)IP 地址和動(dòng)態(tài)IP 地址,分別用不同的命令:
a. 恢復靜態(tài)IP 地址命令。
netsh interface ip set address name=“本地連接”
source=STatic addr=192.168.1.19 mask=255.
255.255.0 gateway=none.
b. 恢復動(dòng)態(tài)IP 地址命令。
netsh interface ip set address“本地連接”dhcp
。3)使用SetupAPI 相關(guān)接口A(yíng)PI 函數啟用目標網(wǎng)卡,這樣就完成了網(wǎng)卡配置信息的恢復。
3 結論
本文針對LED 顯示屏調試過(guò)程中對網(wǎng)絡(luò )直連的需求,提出一種網(wǎng)絡(luò )直連的方法,系統在啟動(dòng)時(shí)自動(dòng)保存網(wǎng)卡配置信息,使用網(wǎng)絡(luò )直連進(jìn)程構建網(wǎng)絡(luò )直連通道,退出系統時(shí)自動(dòng)恢復網(wǎng)卡配置信息,使用戶(hù)無(wú)需知道LED 顯示屏的IP 地址,也不用修改PC機的IP 地址,便可實(shí)現PC 機與LED 顯示屏的網(wǎng)絡(luò )通信。該方法在LED 導航者軟件中使用,其可靠性、穩定性和時(shí)效性得到了用戶(hù)的認可,取得了良好的效果。實(shí)踐證明,該方法可為類(lèi)似的應用提供一種可供借鑒的解決方案。