[object,
uuid(f839a534-a500-4f67-a1f9-23f5d973288d),
dual,
helpstring("iexch inte***ce"),
pointer_default(unique)
]inte***ce iexch : idispatch;[
uuid(68f2b7ea-1f80-4538-afad-accc9a584c3d),
version(1.0),
helpstring("mobile explorer plugin for mobilex 1.0 type library")
]它要求實現四個函式:
setupdevice用來建立與裝置之間的連線,hmsgwnd是乙個比較重要的引數,通常用它來與mobilex通訊,比如上報當前的狀態和錯誤資訊等等。
write用來向裝置傳輸資料,要傳輸的資料放在目錄path下的xmlfilename中。其內容編碼為gb2312,所有的tag都是用中文的,意義倒是簡單明瞭,不過要在源**中定義這些關鍵字卻有些麻煩。像vs中源**編碼用的cp_acp,而gcc要求輸入的源**編碼是utf-8,如果要在多個編譯器中編譯**,最好還是用英文關鍵字比較好。
read用來從裝置讀取資料,讀取的資料放在目錄path下的xmlfilename中。檔案格式和write中的一樣。write/read實現了相當於慢同步的功能,由於記錄id沒有儲存下來,如果一條記錄被修改,mobilex會把它們當成兩條不同的記錄。沒有什麼好辦法解決這個問題,好像只能刪除本地的資料,然後重新從裝置中讀過來。
kill使用者主動取消時呼叫的,正常並不呼叫。
iexch物件是mobilex在接收或者傳送時建立,完成時就銷毀了,考慮到使用者長時間不使用時,socket可能會自動斷開(雖然設定了socket的keep-alive 屬性,這個問題仍然存在),所以我們也在需要連線,用完後就斷開。在第一次呼叫setupdevice時要,要求使用者輸入連線引數,然後儲存到全域性變數中,後面再操作時就自動連線。部分連線引數放在登錄檔中持久儲存。
vs對c99的支援實在太差,使用標準c函式也會報很多警告。只好選擇用mingw編譯mobileexplorer相關的**,我甚至打算用c來實現這個com介面,最後發現工作量要大很多,沒有時間去折騰,只好選擇vs實現com介面。mingw編譯出來的動態庫,沒有vs鏈結需要的.lib檔案,它有乙個.a檔案有點像.lib檔案,用dumpbin可以看到裡面的資訊,不過拿來當.lib用時發現可以鏈結,但執行時會死掉,最後只好選擇用loadlibrary去呼叫mobileexplorer的函式。
read/write是同步呼叫的,它會阻塞gui執行緒的執行,所以要另開乙個執行緒來做實際的收發。read/write的實現倒簡單,只是用了mobileexplorer介面中的get_objects和update_objects,後來考慮到大資料量時的響應速度,又在mobileexplorer介面中加了get_objectsattr函式,用來得到一些諸如記錄條數和id範圍之類的資訊。
在前面我們設計了乙個xobject的傳輸物件,這裡證明是明智之舉。mobilex有自己的資料格式,它也是基於xml檔案的,所以在mobilex和xobject之間的轉換只需要寫兩個builder就行了。中間遇到一點小小的麻煩:mobilex中的時間和日期是兩個字段,而在xobject中是合二為一的。
整個開發過程不難,只是很多年沒有在windows下程式設計了,對整個環境有點陌生,甚至忘記comboboxex的用法了,結果還是花了好幾天時間。
~~end~~
MF前傳 探索者一號簡介
mf讓我們這些c 程式設計師能夠把手伸到嵌入式行業,大大增強我們在各種專案中的競爭能力。無奈國內研究mf的人少之又少,為了加速mf技術的研究,我們團隊採用少量補貼的方式,委託廠家生產了一批mf開發板,售給團隊內的開發人員。這一批板子只生產了20片,元件成本133.5元,pcb成本12元,焊接成本25...
MF前傳 探索者二號簡介
因為探索者一號供不應求,遠超預期,並且我們自己設計製造的成本太高,所以沒有再次生產。而是選擇較高價效比的第三方stm32開發板作為mf學習板,是為探索者二號。因此,二號並不是一號的改進版,它們壓根就不同,甚至mcu 處理器 都不同。先來看看探索者二號的全貌 二號相對於一號,有幾個優點是非常吸引人的 ...
MF前傳 探索者一號簡介
mf讓我們這些c 程式設計師能夠把手伸到嵌入式行業,大大增強我們在各種專案中的競爭能力。無奈國內研究mf的人少之又少,為了加速mf技術的研究,我們團隊採用少量補貼的方式,委託廠家生產了一批mf開發板,售給團隊內的開發人員。這一批板子只生產了20片,元件成本133.5元,pcb成本12元,焊接成本25...