劉建勇 胡雪 劉彥岑 劉星燕 田晶 閆慧敏
摘 ?要: 針對(duì)2018年河北省氣象局科研開(kāi)發(fā)項(xiàng)目玫瑰種植氣象指標(biāo)研究,結(jié)合工作需求,筆者利用VB.net編程語(yǔ)言,輔之以access數(shù)據(jù)庫(kù),開(kāi)發(fā)了玫瑰種植氣象指標(biāo)研究平臺(tái)。本文就開(kāi)發(fā)過(guò)程中的以下幾點(diǎn)技術(shù)技巧與同行業(yè)者分享與探討:開(kāi)發(fā)過(guò)程中與項(xiàng)目主要負(fù)責(zé)人實(shí)現(xiàn)“程序遠(yuǎn)程共享”,從而實(shí)現(xiàn)遠(yuǎn)程溝通和程序改進(jìn);物候觀測(cè)數(shù)據(jù)處理過(guò)程中要素選取的鼠標(biāo)右鍵菜單控制;氣象服務(wù)產(chǎn)品發(fā)送郵件、微信公眾號(hào)或微信小程序的實(shí)現(xiàn)等。
關(guān)鍵詞:?程序遠(yuǎn)程共享;鼠標(biāo)右鍵菜單;郵件發(fā)送;微信小程序
中圖分類(lèi)號(hào): TP31????文獻(xiàn)標(biāo)識(shí)碼:?A????DOI:10.3969/j.issn.1003-6970.2020.02.033
【Abstract】: According to the research and development project of Hebei Meteorological Bureau in 2018,in combination with the work requirements. The author developed a research platform for rose planting meteorological index by using VB.net programming language and “microsoft access” database.?In this paper, the following technical skills in the development process are shared and discussed with those of the same industry:Realize "Program remote sharing" with the main person in charge of the project in the development process to achieve the purpose of remote communication and program improvement;In the process of phenological observation data processing, the right mouse button menu control;Meteorological service products mail delivery, WeChat Official Account or We Chat Mini Program implementation, etc.
【Key words】: Program remote sharing; Context menu; Mail sending; WeChat Mini Program
0??引言
近年來(lái),隨著電子技術(shù)和互聯(lián)網(wǎng)技術(shù)的發(fā)展,氣象設(shè)備的自動(dòng)化程度越來(lái)越高[1-6],張家口業(yè)務(wù)軟件的自動(dòng)化程度也隨之日益提高[7-9]。玫瑰種植氣象指標(biāo)研究,是由張家口市生態(tài)與農(nóng)業(yè)氣象中心主持,河北省氣象科學(xué)研究所指導(dǎo),針對(duì)康保星瀚玫瑰氣象服務(wù)的一項(xiàng)科研項(xiàng)目。平臺(tái)在設(shè)計(jì)過(guò)程中需要多方督導(dǎo)和協(xié)商,氣象產(chǎn)品的發(fā)送也需要從原來(lái)的電話(huà)或傳真方式,向郵件或微信方式過(guò)度,轉(zhuǎn)變?yōu)槊倒迩f園大田工作人員方便快捷接收的形式。筆者針對(duì)以上需求,就平臺(tái)開(kāi)發(fā)過(guò)程中的幾點(diǎn)技術(shù)技巧做一淺談,以期與同行業(yè)者就類(lèi)似問(wèn)題做一探討交流,以便共同提高本行業(yè)的開(kāi)發(fā)能力。
1??程序遠(yuǎn)程共享的實(shí)現(xiàn)
在以往的氣象業(yè)務(wù)軟件編制過(guò)程中,需根據(jù)使用過(guò)程中出現(xiàn)的問(wèn)題不斷修正程序,使用者在程序改進(jìn)后需重新獲取并進(jìn)行少量配置。在VS2010中提供了ClickOnce發(fā)布工具,方便了使用者進(jìn)行程序更新。實(shí)現(xiàn)程序的遠(yuǎn)程共享,就是程序員給予項(xiàng)目負(fù)責(zé)人一個(gè)網(wǎng)址和權(quán)限,負(fù)責(zé)人安裝后能夠運(yùn)行平臺(tái)程序,從而實(shí)現(xiàn)異地共同調(diào)試的一項(xiàng)技術(shù)。程序員對(duì)平臺(tái)修改更新后,負(fù)責(zé)人會(huì)收到更新提示。
1.1??實(shí)現(xiàn)程序遠(yuǎn)程共享的發(fā)布設(shè)置
在Visual Studio2010的解決方案資源管理器中,右鍵項(xiàng)目名稱(chēng),打開(kāi)項(xiàng)目屬性,出現(xiàn)圖1對(duì)話(huà)框,便是程序?qū)崿F(xiàn)遠(yuǎn)程共享設(shè)計(jì)的部分設(shè)置界面。在本應(yīng)用中,設(shè)置遠(yuǎn)程程序存放位置為服務(wù)器目錄E:\app-online,設(shè)置了兩種訪問(wèn)方式:局域網(wǎng)文件共享和HTTP協(xié)議訪問(wèn)。HTTP訪問(wèn)不需太多功能,選用了Nginx服務(wù)。設(shè)置ip為10.48.39.156,設(shè)置服務(wù)端口為8080,定義一個(gè)目錄app,指向本地目錄e:\app-online,對(duì)外形成地址為http://10.48.39.156:?8080/app。那么在圖1界面中的左邊菜單,選擇“發(fā)布”,然后在“發(fā)布文件夾位置(網(wǎng)站、FTP服務(wù)器或者文件路徑)”中輸入“\\10.48.39.156\app-online\?kbrose\”,“安裝文件夾URL(如果與以上不同)”輸入“http://10.48.39.156:8080/app/kbrose/”,便設(shè)置了發(fā)布文件夾位置和安裝文件夾位置。
其中配置文件nginx.conf,相關(guān)設(shè)置如下:
http{
include mime.types;
default_type application/octet-stream;
server?{
listen 8080;
location/{root?html;}
'郵件優(yōu)先級(jí)
mail.Priority = System.Net.Mail.MailPriority.?Normal
'以純文本顯示信件內(nèi)容,為T(mén)rue時(shí)以HTML格式顯示信件內(nèi)容
mail.IsBodyHtml = False
'發(fā)件人郵箱
mail.From = New System.Net.Mail.Mail Address(mm.user + "@126.com", mm.displayName)
mail.To.Add(New Net.Mail.MailAddress("liux ingyan@qq.com", "劉星燕"))
'郵件主題和內(nèi)容
mail.Subject = mm.Subject
mail.Body = mm.Content
'定義附件,參數(shù)為附件文件名,包含路徑,推薦使用絕對(duì)路徑
If Not mm.AttachFile Is Nothing AndAlso mm.AttachFile.Count <> 0 Then
For Each f As String In mm.AttachFile
Dim objFile As New System.Net.?Mail.Attachment(f)
'附件文件名,用于收件人收到附件時(shí)顯示的名稱(chēng)
Dim k = New IO.FileInfo(f)
objFile.Name = k.Name
'加入附件,可以多次添加
mail.Attachments.Add(objFile)
Next
End If
'發(fā)送郵件
Try
smtp.Send(mail)
sendMail = "郵件發(fā)送成功!"
Return True
Catch
sendMail = "郵件發(fā)送失?。?
Return False
Finally
mail.Dispose()
End Try
End Function
3.2??微信公眾號(hào)或微信小程序的更新
近年來(lái),隨著智能手機(jī)的普及,微信用戶(hù)也在逐年增加[10-14],微信公眾號(hào)和微信小程序氣象服務(wù)逐漸替代了傳統(tǒng)的氣象服務(wù)方式。玫瑰氣象指標(biāo)研究平臺(tái)針對(duì)康保星瀚玫瑰莊園的氣象服務(wù)產(chǎn)品發(fā)送,也采用了微信服務(wù)方式。
方式1:用戶(hù)自行在公眾號(hào)內(nèi)查閱消息
主動(dòng)推送數(shù)據(jù)到外網(wǎng)服務(wù)器或云服務(wù)器,用戶(hù)在微信公眾號(hào)及微信小程序中獲取最新數(shù)據(jù)
方式2:主動(dòng)發(fā)送應(yīng)用消息到企業(yè)微信用戶(hù)
通過(guò)企業(yè)微信應(yīng)用發(fā)送消息,相關(guān)文檔參考企業(yè)微信官方開(kāi)發(fā)文檔。得到發(fā)送應(yīng)用消息的api接口為https://qyapi.weixin.qq.com/cgi-bin/message/send??access_token=ACCESS_TOKEN。新建一個(gè)企業(yè)微信應(yīng)用,獲取該應(yīng)用的AgentID(本例中為1000003)。以發(fā)送文本消息為例,發(fā)送消息體為:
{
"touser" : "LiuXingYan|HuXue|TianJing",
"msgtype" : "text",
"agentid" : 1000003,
"text" : {"content" : "明日天氣晴好,適合玫瑰采摘。"},
"safe":0,
"enable_id_trans": 0
}
使用newtonsoft.json組件構(gòu)造該消息,通過(guò)net.webclient.upload方法?Post消息到api地址。
4??小結(jié)
(1)玫瑰種植氣象指標(biāo)研究,是由張家口市氣象局主持、河北省氣象科學(xué)研究所指導(dǎo)、康保氣象
局協(xié)助的一項(xiàng)科研項(xiàng)目。項(xiàng)目平臺(tái)的設(shè)計(jì),需要多方溝通和協(xié)商,“程序遠(yuǎn)程共享”功能的設(shè)計(jì),為項(xiàng)目“多方、異地共同研究”提供了便利條件。程序遠(yuǎn)程共享,主要靠配置文件nginx.conf來(lái)實(shí)現(xiàn)。
(2)在處理和分析物候觀測(cè)數(shù)據(jù)時(shí),平臺(tái)大量使用“鼠標(biāo)右鍵功能”,不但界面簡(jiǎn)潔,功能上也大大增強(qiáng)。此項(xiàng)功能的實(shí)現(xiàn),ContextMenuStrip控件的使用是關(guān)鍵技術(shù)。
(3)近年來(lái),隨著智能手機(jī)的普及,關(guān)注微信公眾號(hào)和使用微信小程序的用戶(hù)越來(lái)越多,將這兩種新型技術(shù)應(yīng)用于氣象服務(wù),也是氣象為農(nóng)服務(wù)方式的新嘗試。
參考文獻(xiàn)
余衛(wèi)東, 楊光仙, 張志紅. 我國(guó)農(nóng)業(yè)氣象自動(dòng)化觀測(cè)現(xiàn)狀與展望[J]. 氣象與環(huán)境科學(xué), 2013, 36(2): 66-70.
張雪芬, 薛紅喜, 孫涵, 等. 自動(dòng)農(nóng)業(yè)氣象觀測(cè)系統(tǒng)功能與設(shè)計(jì)[J]. 應(yīng)用氣象學(xué)報(bào), 2012, 23(1): 105-112.
顧潤(rùn)香. 121按9定制氣象短信號(hào)碼提取與發(fā)送程序設(shè)計(jì)[J]. 軟件, 2014, 35(5): 122-124.
劉星燕, 王新寧, 孫曉霞, 等. 從預(yù)報(bào)報(bào)文獲取農(nóng)氣預(yù)報(bào)程序設(shè)計(jì)淺談[J]. 軟件, 2017, 38(7): 130-133.
張成偉, 楊建宇, 高雯. 使用AutoIt開(kāi)發(fā)氣象業(yè)務(wù)自動(dòng)化應(yīng)用軟件[J]. 廣東氣象, 2011, 33(3): 54-55.
鄒書(shū)平. 基于VB通信控制技術(shù)的氣象短信服務(wù)[J]. 氣象科技, 2006, 34(4): 682-684.
吳偉光, 劉建勇, 劉星燕, 等. 淺談壩上溫室育苗氣象災(zāi)害監(jiān)測(cè)預(yù)警系統(tǒng)的界面設(shè)計(jì)[J]. 軟件, 2018, 39(9): 149-153.
劉星燕, 王新寧, 孫曉霞, 等. 從預(yù)報(bào)報(bào)文獲取農(nóng)氣預(yù)報(bào)程序設(shè)計(jì)淺談[J]. 軟件, 2017, 38(7): 130-133.
劉星燕, 賈磊, 薛君彥. 淺談張家口121語(yǔ)音答詢(xún)系統(tǒng)幾個(gè)常見(jiàn)問(wèn)題的處理[J]. 軟件, 2018, 39(1): 180-182.
張雪云, 牟艷, 張九博. 基于微信小程序的電源監(jiān)測(cè)管理系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)與現(xiàn)代化, 2017(12): 98-102.
查曉俊, 成剛, 楊玉志. 基于微信小程序的醫(yī)療設(shè)備管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 中國(guó)醫(yī)療設(shè)備, 2018, 33(5): 134-138.
張嘉琳, 江鋒, 張耀曾. 基于微信小程序的師生項(xiàng)目管理系統(tǒng)設(shè)計(jì)[J]. 辦公自動(dòng)化, 2018, 23(8): 39-41.
蔡?敏. 微信小程序的電源監(jiān)測(cè)管理系統(tǒng)設(shè)計(jì)分析[J]. 江西電力職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2019, 32(1): 1-3.
郭毅棋. 基于微信小程序的高校新生預(yù)報(bào)到系統(tǒng)設(shè)計(jì)[J]. 廈門(mén)城市職業(yè)學(xué)院學(xué)報(bào), 2017, 19(4): 10-14.