(一) 簡介
通過幾個月零零碎碎地學習各方面知識之後在這個大二的寒假筆者終於用VB.Net寫出了西門子手機的輔助軟體——Siemens Support Tool。雖然我沒有最終的完成這個軟體的所有設計,但核心的功能已經開發完成,介面也基本到位,我的學習的目的也就達到了。在2月12日正式停止開發的以後,我想到把寒假20幾天的辛苦曆程作一個總結,為以後重溫這部分知識起到一定的作用,也為廣大編程愛好者提供一些協助和啟發。筆者才疏學淺,編程也是零碎時間自學過來的,所以有缺陷和謬誤請大家斧正。
(二) 為何要設計?設計目的?
用過西門子手機的都知道西門子手機在人性化設計方面做得比較好,但是讓筆者失望的是電腦端上使用的官方軟體SDS,其缺點是操作不方便,速度比較慢,感覺人性化設計不到位。後來官方推出了用於65系列的Mobile Phone Manager,介面很好看,但安裝後大於120MB的容量及其較慢的速度又讓人大跌眼鏡。
GhostMobile(簡稱GM)是我用過的國產非官方軟體裡面比較好的一款,但經常出現傳輸中一直等待的情況。估計作者並沒有逾時設計。另外GM檔案傳輸速度很慢,簡訊管理不方便,後來也由於作者使用了新的手機,也就放棄了GM。後來又找到一款Siemens Mobile Control,簡稱SiMoCo,是國外的非官方軟體。800多kb的身軀及其速度、功能方面都超過了官方及GM,令人刮目相看,一度成為我最喜歡的軟體。但用後發現一些問題,軟體過於專業,選項太多,對中文的支援不好。
所以最終的目的就是做一款能夠實現檔案傳輸、簡訊、便簽、任務、重要記事管理的軟體。
(三) 準備工作
2004的暑假我已經做了一部分,實現了基本的檔案傳輸和簡訊功能,當時取名叫作M55 File Transfer Tool。後來在東北手機網上公開了,有一些GM無法串連的手機我的軟體都可以串連,所以到現在為止有些網友還在使用我的這個軟體。但由於知識不夠,做得不是很理想,經常出現問題。
簡訊部分是官方網站下載的ATC_Command_Set_For_L55_Platform,詳細地講述了55平台上的AT指令集。其實SMS部分的AT指令各大手機廠商都是通用的,已基本上屬於同一的指令集了。但是發現檔案傳輸是OBEX卻不是那麼簡單。
官方並沒有任何開發文檔說明資料轉送使用的是什麼協議,我用Serial Monitor監視到了資料轉送的過程,全是HEX代碼,不知道是什麼意思。那段時間一度陷入迷茫狀態,不知道如何下手。後來在google搜尋,又在CSDN裡發了一些文章求救,但卻沒有一個能夠明確說明的。有一個網友的留言給了我一些線索,他說可能是藍芽協議裡面的部分。
這條線索給我了極大的鼓舞,因為後來,順藤摸瓜找到了紅外線傳輸協議,意外地發現了IrOBEX的描述協議竟然和監視到的HEX代碼的結構一樣。隨後經過仔細的研究發現就是OBEX協議,此協議可以作為上層協議用在紅外線協議、藍芽協議等。此過程大約經曆了2個多月。其實現在看來這個問題簡單了,手機的原廠模式的串口監視裡面就會顯示當前使用的協議。當資料轉送開始時,會自動從GIPSY變為OBEX。但那個時候哪知道呢?
跨越了OBEX協議的障礙以後我寫了一個OBEX-Multithread類,寫得很垃圾,把十六進位轉換成字串,然後再轉回來在發送。中間使用了string作字串操作,速度很慢,測試以後只能勉強超過GM的傳輸速度。
後來藉著Serial Monitor監視GM讀取手機通訊薄的原理,發現通訊薄是在\telecom\pb目錄裡面,但是這個目錄在手機裡面是隱藏的,無法直接存取。由於原來寫得OBEX庫很糟糕,只能對應檔案傳輸,對於這個特殊檔案夾裡面的檔案都無法操作。修改了之後效果不好,遂放棄了OBEX-Multithread。
由於學習的原因,中途也只得停下來準備期末考試和六級。中途無聊的時候研究IrMC裡面的vCard、vNote、vCalc格式,基本弄懂了如何同步通訊薄、便簽、日曆。2005年1月14日,放假回家了就正式開始動工,把所有的東西都重新寫,對我來說,這是一個巨大的挑戰。