[VBNET]讀取簡易氣象站觀測資訊

週三收到一套簡易型氣象站,是 Davis 出的 Vantage Pro2 Weather Stations ,要能抓出其資料到電腦上。

http://www.davis.com/catalog/product_view.asp?sku=8640313

本來先打電話給廠商,詢問通訊協定,台灣代理商也不清處,只知道連線設備是 USB 轉 Serial 。期待他是 485 的心情等待,到了周四開始測試… 居然是自訂通訊協定… 台灣代理商說原廠不提供通訊協定,就是要賣他們自己的軟體,但是依據軟體說明書的網址上去看,根本通訊協定就放在網頁上嘛~ 分兩個年次的版本,2007 跟 1999 年的,2007 的有提供 VB2005 的範例。

抓下範例當然是先跑跑看,沒想到範例是呼弄人的,原始碼故意多兩個變數不能打開 WinForm 設計畫面,好在這個我熟,直接幹掉 Form1.Designer.vb 裡面多的敘述後,再跑跑看,沒想到這個範例版本太舊,不支援新版的 USB Driver ,所以找不到 Serial Port ,此外這個範例是呼叫這家廠商自己寫的 DLL ,讀 Data 時是每 byte 逐次讀,令我不喜,我喜歡一次讀多一點的方式。

因此祭出前陣子介紹的工具:
[推薦]通訊必備監聽軟體 AccessPort
先用原廠的程式讀取,原廠的程式是用 VS2008 寫的,安裝好後,把程式目錄抽出來,再反安裝,就可以當成綠色軟體獨立執行,這隻程式還滿鳥的,啟動時要先人工選取氣象站設定,每次要讀取資料還要手動點選下載資料的按鈕,不適合自動執行,但從 AccessPort 讀出來的通訊協定,對應說明後,再由 AccessPort 終端機模式進行測試,經過不斷精簡指令所得到的測試結果,只需要輸入 LOOP 1<CR> 即可。

把先前寫給485的程式碼改一下,讓它支援自訂輸入位元組,就可讀回所有的資料並分項目輸出,不過 485 是以 Word (2 bytes) 為單位,這是以 byte 為單位,懶得改程式碼,就把 Offset 全部以 0.5 為單位來跳… 先是用內建單位跑,這家輸出的大部分都是英制,例如雨量 in ,連氣壓也用 in Hg ,風速則用 mph ,還得上網查公式轉成公制,面板是支援輸出成公制,所以還可以比較一下,不過因為上網查公式的小數點位數有限,在接近進位點時,會出現最後一位的誤差。

這個氣象站也很怪,因為內建記憶體有限,所以可以寫入記憶卡的最小時間間隔是 5 分鐘一筆,但是無線電傳卻是每 2 秒更新一次… 反正已經可以即時從氣象站讀出,就先設每 2 秒讀一筆並寫入資料庫,從週五下班前開始跑,週一到公司時再看結果了。

目前寫入資料庫含時間共 17 欄,暫時先選擇其中 7 欄顯示在螢幕上。

廣告
Categories: 工作點滴, 技術分享 | 5 則迴響

文章分頁導航

5 thoughts on “[VBNET]讀取簡易氣象站觀測資訊

  1. Bill

    璉大最近也在做破解二次大戰密碼的工作..

    喜歡

  2. 可以分享程式碼嗎,正在初學C#想多了解通訊方面的知識,謝謝!

    喜歡

  3. roxanne

    請問您是向哪個代理商叫貨?因為也想購買氣象站,謝謝!!

    喜歡

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

在WordPress.com寫網誌.

%d 位部落客按了讚: