<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    學海拾遺

    生活、技術、思想無處不在學習
    posts - 52, comments - 23, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    棧初始化
    在你做任何事之前,你需要初始化你的棧。記住,棧是一個用來控制你的藍牙設

    備的軟件或固件。棧初始化由一系列工作組成,但是它的最主要目的是獲得準備

    無線通信的藍牙設備。不同的廠商處理不同的初始化工作,所以我們將用Atinav

    JAVA Bluetooth SDK來適用如何初始化一個棧。

    import javax.bluetooth.*;
    import javax.microedition.io.*;
    import com.atinav.BCC;

    public class WirelessDevice implements DiscoveryListener {
        LocalDevice localDevice = null;
       
        public WirelessDevice (){
            //setting the port number using Atinav's BCC
            BCC.setPortName("COM1");
           
            //setting the baud rate using Atinav's BCC
            BCC.setBaudRate(57600);
           
            //connectable mode using Atinav's BCC
            BCC.setConnectable(true);
           
            //Set discoverable mode using Atinav's BCC
            BCC.setDiscoverable(DiscoveryAgent.GIAC);
           
            try{
                localDevice = LocalDevice.getLoaclDevice();
            }
            catch (BluetoothStateException exp) {
            }
           
            // implementation of methods in DiscoveryListener class
            // of javax.bluetooth goes here
           
            // now do some work
        }
    }

    設備管理
    LocalDevice類
    RemoteDevice類
    JAVA Bluetooth標準中讓你用來進行設備管理的兩個主類,可查詢一些你的本地

    藍牙設備和區域內設備的靜態信息。
    靜態方法getLocalDevice(),返回一個供你使用的LocalDevice實例對象
    LocalDevice對象上的getBluetoothAddress(),獲得你的藍牙無線裝置的唯一地


    LocalDevice對象上的靜態方法setDiscoverable(),設備允許其它的藍牙設備發

    現到該設備

    當獲得一個LocalDevice對象后,調用LocalDeevice.getDiscoveryAgent()實例化

    一個DiscoveryAgent對象。
    首先,本地對象實現DiscoveryListener接口;為了我啟動發現進程,調用你的Di

    scoveryAgent對象的startInquiry()方法,此方法為非阻塞式的,所以你能夠去

    干其它的事情,一邊等待其它的藍牙設備被發現。
    當藍牙設備被發現后,JVM會調用實現DiscoveryListener接口類的deviceDiscove

    red()方法,此方法會傳遞給你一個代表被查詢的設備的RemoteDevice對象

    服務發現
    DiscoveryAgent類的searchServices()方法允許你搜索RemoteDevice對象上的服

    務。當服務查找到,而且你的對象實現了DiscoveryListener接口,JVM會調用ser

    vicesDiscovered()方法。此回調方法也會傳入屬于你查找到的服務的一個Servic

    eRecord對象。當創建了ServiceRecord對象后,將其連接至RemoteDevice。
    String connectionURL = servRecord[i].getConnectionURL(0, false);

    服務注冊Service Registration
    當一個藍牙客戶端設備能夠在一個藍牙服務器設備用服務發現之前,藍牙服務器

    需要在服務發現數據庫中(Service Discovery database, SDDB)中注冊它的服務

    數據庫中,此過程叫做服務注冊。這一節將討論一個藍牙設備服務注冊包括一些

    什么,同時我也會給出一個需要完成這項工作的類綱要。
    注意:在點對點的應用中,比如一個文件傳輸或聊天應用,記住任何設備都是客

    戶端或服務器,為了處理同時為服務發現和服務注冊的情況,因此你需要將這些

    功能(包括客戶端和服務器)合并入你的程序中。下面是一個包含了獲得你注冊

    的服務和存入SDDB中的情景。
    1、調用Connector.open()并將Connection的結果放入到一個StreamConnectionNo

    tifier對象。一個Connector.open()創建一個ServiceRecord并設定一些屬性;
    2、用LocalDevice對象和StreamConnectionNotifier來獲得系統創建的ServiceRe

    cord;
    3、在ServiceRecord中增加或修改屬性;[可選]
    4、用StreamConnectionNotifier調用acceptAndOpen()方法,并等待藍牙客戶端

    發現并連接服務;
     a、系統在SDDB中創建一個服務記錄。
    5、等待直到一個客戶端連接;
    6、當服務器端準備退出,在StreamConnectionNotifier上調用close()
     a、系統移除SDDB中的服務記錄
    StreamConnectNotifier和Connector都來自于J2ME平臺的javax.microedition.io

    包中。完成上面任務的代碼片斷顯示如下:
    // lets name our variables
    StreamConnectionNotifier notifier = null;
    StreamConnection sconn = null;
    LocalDevice localdevice = null;
    ServiceRecord servicerecord = null;

    // step #1
    // the String url will already be defined with the
    // correct url parameters
    notifier = (StreamConnectionNotifier)Connector.open(url);

    // step #2
    // we will get the LocalDevice if not already done so
    localdevice = LocalDevice.getLocalDevice();
    servicerecord = localdevice.getRecord(notifier);

    // step #3 is optional

    // step #4
    // this step will block the current thread until
    // a client responds this step will also cause the
    // service record to be stored in the SDDB
    notifier.acceptAndOpen();

    // step #5
    // just wait...
    // assume the client has connected and you are ready to exit

    // step #6
    // this causes the service record to be removed
    // from the SDDB
    notifier.close();
    你需要在藍牙里面做的服務發現如上,下一步是通信

    通信
    藍牙是一個通信協議,因此你將如何與它通信呢?JAVA Bluetooth API給你三種方法來發送和接收數據。但為立刻起見,我們實現其中的一個:RFCOMM
    注意:RFCOMM是用來通信的串行端口操作模式的協議層,但是這兩個東西經常被當作同樣來使用。

    [未完...]


    [Original Text]:http://today.java.net/pub/a/today/2004/07/27/bluetooth.html
    主站蜘蛛池模板: 成年黄网站色大免费全看| 久九九精品免费视频| 久久亚洲AV成人无码电影| 91精品视频免费| 羞羞漫画登录页面免费| 国产精品亚洲A∨天堂不卡| 黄网站色在线视频免费观看| 亚洲国产成人久久综合| 亚洲另类激情综合偷自拍图| 2020久久精品国产免费| 美女羞羞视频免费网站| 久久精品国产96精品亚洲| 好吊妞998视频免费观看在线| 男人和女人高潮免费网站| 亚洲视频一区网站| 免费精品国产自产拍观看| 久操视频免费观看| 亚洲1区2区3区精华液| 欧洲亚洲国产清在高| 免费看大美女大黄大色| 久久99精品国产免费观看| 亚洲Av永久无码精品黑人| 亚洲AV区无码字幕中文色| 日本人的色道www免费一区| 国产午夜无码精品免费看| 亚洲JIZZJIZZ妇女| 亚洲日本一区二区| 亚洲精品成人在线| 成年在线网站免费观看无广告| 日本三级在线观看免费| 亚洲精品日韩一区二区小说| 亚洲人成影院在线| 国产亚洲日韩一区二区三区| 午夜老司机免费视频| 最近中文字幕国语免费完整| 在线免费视频你懂的| 亚洲youwu永久无码精品| 亚洲最大在线视频| 亚洲AV无码成人精品区在线观看 | 人人鲁免费播放视频人人香蕉| 亚洲高清在线mv|