
Socket的通信模型有兩種[10]:TCP和UDP。TCP(面向連接方式)采用IP流的形式數(shù)據(jù)發(fā)送,數(shù)據(jù)的傳輸過(guò)程當(dāng)中丟包少,傳輸可靠。UDP(無(wú)連接服務(wù))采用數(shù)據(jù)報(bào)文的方式實(shí)現(xiàn)數(shù)據(jù)的收送,不保證數(shù)據(jù)的可靠性。由于本系統(tǒng)傳輸?shù)臄?shù)據(jù)量不是很大,但是要求數(shù)據(jù)可靠,因此為了確保傳輸?shù)目煽啃?,減少丟包,本系統(tǒng)采用了TCP的形式進(jìn)行數(shù)據(jù)的傳輸。
3.3Socket編程
由于本設(shè)計(jì)選用的GPRS模塊內(nèi)部包含TCP協(xié)議,只需要通過(guò)AT指令操作GPRS模塊以TCP客戶端的方式發(fā)送數(shù)據(jù),因此只需要完成上位機(jī)數(shù)據(jù)接收的應(yīng)用程序編寫(xiě)即可。由于本系統(tǒng)采用的是C#語(yǔ)言來(lái)編寫(xiě)應(yīng)用程序,里面包含許多網(wǎng)絡(luò)編程所需的類和方法,在編程的過(guò)程中可調(diào)用這些類和方法。首先要實(shí)例一個(gè)Socket對(duì)象[11],設(shè)置其傳輸?shù)母袷胶推鋫鬏攨f(xié)議,然后創(chuàng)建一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)對(duì)象要包含其IP地址和端口號(hào),再把實(shí)例好的套接字綁定到對(duì)應(yīng)的IP和端口號(hào)上,并開(kāi)始監(jiān)聽(tīng)來(lái)自下位機(jī)的連接,此處要設(shè)置一下監(jiān)聽(tīng)隊(duì)列長(zhǎng)度即同時(shí)處理請(qǐng)求連接的個(gè)數(shù),由于本次只實(shí)現(xiàn)了一個(gè)客戶端,但是上位機(jī)軟件監(jiān)聽(tīng)的客戶端數(shù)量可以自由設(shè)置(為了以后組網(wǎng),方便擴(kuò)展),最后調(diào)用Accept()函數(shù)處理客戶的連接,當(dāng)有客戶向服務(wù)器發(fā)起連接的時(shí)候,就會(huì)分配一個(gè)新的套接字,通過(guò)Send()和Recv()函數(shù)實(shí)現(xiàn)與客戶端之間的通信,循環(huán)接收和送數(shù)據(jù),為了防止掉線,收到數(shù)據(jù)后自動(dòng)回復(fù)內(nèi)容,相當(dāng)于系統(tǒng)已經(jīng)做了心跳處理。
3.4上位機(jī)數(shù)據(jù)存儲(chǔ)系統(tǒng)
本系統(tǒng)不僅能夠把數(shù)據(jù)實(shí)時(shí)顯示到界面系統(tǒng)上,同時(shí)還能夠把顯示的數(shù)據(jù)實(shí)時(shí)存儲(chǔ)起來(lái),因此需要設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)來(lái)存放日照數(shù)據(jù)。本設(shè)計(jì)選用微軟公司SQL Server數(shù)據(jù)庫(kù)[12]來(lái)存放數(shù)據(jù)。本程序采用SQL Server 2008R2版本設(shè)計(jì)日照存儲(chǔ)數(shù)據(jù)庫(kù)Sundata。同時(shí)能將數(shù)據(jù)庫(kù)的數(shù)據(jù)同步到上位機(jī)軟件的DataGridView控件中,能夠按照時(shí)間查詢歷史數(shù)據(jù),并且實(shí)現(xiàn)了數(shù)據(jù)導(dǎo)出至Excel表格。導(dǎo)出表格并沒(méi)有采用官方提供的Excel專門(mén)類庫(kù),在試驗(yàn)中發(fā)現(xiàn)用此種方法與Office版本及其卸載殘留有很大關(guān)系,經(jīng)常出錯(cuò),移植性不好,所以采用了第三方的NPOI.dll,這樣不會(huì)因計(jì)算機(jī)的Office的不同版本而出現(xiàn)問(wèn)題,便于程序的移植和分析數(shù)據(jù)。
3.5地圖功能實(shí)現(xiàn)
3.5.1GPS坐標(biāo)解析
GPS坐標(biāo)解析輸出數(shù)據(jù)采用的是ASCII碼,內(nèi)容包含了緯度、經(jīng)度、高度、速度、日期、時(shí)間、航向以及衛(wèi)星狀況等信息,常用語(yǔ)句有6 種,包括GGA、GLL、GSA、GSV、RMC 和 VTG。根據(jù)設(shè)計(jì)的需求來(lái)選擇不同的格式,這里采用了常見(jiàn)的GPRMC格式的語(yǔ)句,$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>
3.5.2地圖顯示
上位機(jī)地圖是是利用百度地圖API來(lái)實(shí)現(xiàn)的[13],由于GPS模塊傳來(lái)的GPS信息中的經(jīng)度、緯度信息是真實(shí)的坐標(biāo),利用地圖服務(wù)商提供的地圖顯示偏差會(huì)很大,因?yàn)槭艿絿?guó)家一些法律法規(guī)限制,所有的電子地圖服務(wù)提供商都需要給地圖數(shù)據(jù)加上偏移和加密。所謂的地圖數(shù)據(jù)加密偏移,其實(shí)就是用一個(gè)偏移算法對(duì)地圖的經(jīng)緯度做一個(gè)加減偏移量,從而達(dá)到與實(shí)際地圖不一致。偏移算法本身是沒(méi)有什么規(guī)律可言的,每家地圖服務(wù)商都有一套自己的加密偏移算法,國(guó)內(nèi)地圖應(yīng)用顯示的都不是真實(shí)的GPS坐標(biāo),所以百度對(duì)外提供的坐標(biāo)系是百度自己的坐標(biāo)系,而GPS獲得的是原始坐標(biāo),兩者不在一個(gè)坐標(biāo)系上,所以有很大的誤差,誤差在千米之外,這顯然不能滿足需要。所以必須進(jìn)行坐標(biāo)轉(zhuǎn)換,把兩者換成統(tǒng)一坐標(biāo)系。換成原始GPS坐標(biāo)在國(guó)內(nèi)原則上是違法的,所以只能統(tǒng)一成各個(gè)地圖運(yùn)營(yíng)商自己的坐標(biāo)系,本文選擇百度坐標(biāo)系。
4結(jié)論
針對(duì)目前日照采集作業(yè)通信方式單一、作業(yè)場(chǎng)景有缺陷的問(wèn)題,本文以嵌入式系統(tǒng)為平臺(tái),提出了一種基于 GPRS 的遠(yuǎn)程無(wú)線采集日照數(shù)據(jù)系統(tǒng),對(duì)當(dāng)?shù)亟?jīng)緯度、直接輻射輻照度、日照分鐘累計(jì)、小時(shí)累計(jì)、日累計(jì)等信息采集獲取技術(shù)進(jìn)行了研究,建立了一套現(xiàn)代化的、適合多場(chǎng)合的數(shù)據(jù)采集和處理系統(tǒng)。整個(gè)作業(yè)數(shù)據(jù)采集系統(tǒng)由ARM中央處理器、采集作業(yè)數(shù)據(jù)的相關(guān)傳感器、供電管理電路及GPS模塊、GPRS通信模塊組成。采集的日照數(shù)據(jù)通過(guò)GPRS通信傳送至計(jì)算機(jī),用計(jì)算機(jī)當(dāng)作數(shù)據(jù)中心對(duì)獲取的數(shù)據(jù)信息整合處理。用計(jì)算機(jī)不僅可以實(shí)時(shí)獲取所需要的信息,而且提供了對(duì)已有歷史數(shù)據(jù)查詢的功能。
參考文獻(xiàn)
[1] CARTER E A, CHRISTENSEN D L, 李麗. 全球太陽(yáng)輻射測(cè)量的概況[J]. 氣象科技, 1982,6(5):73-75.
[2] 謝偉. 太陽(yáng)輻射計(jì)技術(shù)分析[J]. 紅外, 2003,12(3):9-15.
[3] 劉火良,楊森.STM32庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.
[4] SOLIS D M.C#4.0圖解教程[M].蘇林,朱曄,等,譯.北京:人民郵電出版社,2011.
[5] 鄭杰,趙敬鳳,王海江,等.基于 STM32 的多功能抄表機(jī)[J].微型機(jī)與應(yīng)用,2016,35(8):79-81, 85.
[6] 楊寧, 惠曉強(qiáng). 微弱信號(hào)高精度數(shù)據(jù)采集技術(shù)研究[J]. 現(xiàn)代電子技術(shù),2013,24 (9):71-73.
[7] MACDONALD M, FREEMAN A, SZPUSZTA M. Pro ASP.NET 4.0 in C#2010[M]. New York: Apress, 2012.
[8] 金旭亮.NET4.0面向?qū)ο缶幊堂嬲剳?yīng)用篇[M].北京:電子工業(yè)出版社,2010.
[9] 秦婧.SQL Server 2012王者歸來(lái)[M].北京:清華大學(xué)出版社,2014.
[10] 劉蓓莉,劉大紅.基于Visual C#的網(wǎng)絡(luò)通信編程技術(shù)[J].電子科技,2013,26(11):151-153.
[11] 謝斌. MS.Net Visual C#在Socket網(wǎng)絡(luò)開(kāi)發(fā)上的應(yīng)用化計(jì)算機(jī)與網(wǎng)絡(luò)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2002,24(10):74-79
[12] 劉俊強(qiáng).SQL Server 2008入門(mén)與提高[M].北京:清華大學(xué)出版社,2014.
[13] GPS坐標(biāo)換算為百度坐標(biāo)[EB/OL].(2014-11-17)[2016-11-17]
電子發(fā)燒友App











評(píng)論