Windows Mobile上的藍芽點對點通訊

2021-09-22 08:45:21 字數 1768 閱讀 6054

實驗室做短距離通訊,藍芽是其中主要技術之一。研究生入學複試的時候,大老闆跟我們說,藍芽的起源和一位彈鋼琴的人有關,因為藍芽用到了跳頻,這個和手指在各個琴鍵之間跳動的現象有一定的聯絡。各學科之間的碰撞,會出現一些奇妙的火花。 在

windows mobile

平台上,如何來實現藍芽通訊呢?有好多人已經做過這方面的工作,比如在

winbile

論壇的「

使用c#來開發.net cf 藍芽通訊模組

」,codeproject

上的「bluetooth connection in windows mobile 5.0 using inthehand - c#

」和「bluetooth simulation in c# with serial ports

」等等。

其實,安裝了

windows mobile 6.0 professional sdk

之後,自帶的

sample

中就有藍芽通訊的例子,包括

bluetooth device discovery

、chatting over bluetooth

和bluetooth game

。前面兩個是

c++寫的,第三個是用

c#來寫的。

bluetooth device discovery

是採用「

winsock 2 api

」來實現藍芽裝置的發現。

chatting over bluetooth

是在兩個藍芽裝置之間建立點對點的通訊。

bluetooth game

是使用藍芽技術,在兩台裝置之間建立連線,然後進行遊戲。手頭正好有兩台

bluetooth

的裝置,一台是

wm5系統,一台是

wm6的,所以決定試試

chatting over bluetooth。

開啟chatting over bluetooth

工程,發現這是乙個基於對話方塊的

mfc,對藍芽的操作主要是在「

bthutils.cpp

」中完成的,包括發現裝置、建立連線和傳送資料等等,其主要的函式如下:

在程式啟動後,首先搜尋附近的藍芽裝置,搜尋過程完成以後,將其裝置的名字和藍芽位址顯示在下拉列表中,然後就可以進行雙向的訊息傳送和接收了。程式執行介面如下圖

1所示:

圖1:wm5和wm6上的程式執行介面

需要注意的是,在設定藍芽的時候,如果沒有將「對其他裝置可見」選項打上勾,即只是將藍芽開啟,如下圖

2所示:

圖2:藍芽處於開啟狀態

可能無法正常通訊,應用程式會提示無法傳送訊息。選中「對其他裝置可見」之後,就能夠正常通訊了,如下圖

3所示:

圖3:藍芽處於可見狀態

使用c#來開發.net cf 藍芽通訊模組

bluetooth connection in windows mobile 5.0 using inthehand - c#

bluetooth simulation in c# with serial ports

Windows Mobile上的簽名

之前在windows mobile平台上開發的程式都沒有用到過特權api,一直沒有關心過windows mobile平台上簽名的問題.但是現在的專案必須要使用特權api,不簽名就可能無法在使用者的手機上執行 其實並不是執行不起來,而是那些特權api會呼叫失敗,這樣就得不到正確的結果,就像程式有bug...

Windows Mobile上使用鉤子

wince系統對於鉤子技術的支援,顯然不及windows。有一些技術文件乾脆說wince不支援鉤子。其實,不盡然。我們還是可以從coredll.dll中,得到一些有用的介面,來實現攔截一些簡單的鍵盤或滑鼠的動作。還是 最有說服力 define wh journalrecord 0 define wh...

Windows Mobile上使用鉤子

wince系統對於鉤子技術的支援,顯然不及windows。有一些技術文件乾脆說wince不支援鉤子。其實,不盡然。我們還是可以從coredll.dll中,得到一些有用的介面,來實現攔截一些簡單的鍵盤或滑鼠的動作。還是 最有說服力 define wh journalrecord 0 define wh...