<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
    主站蜘蛛池模板: 亚洲色精品vr一区二区三区| 亚洲国产精彩中文乱码AV| 好爽好紧好大的免费视频国产| 亚洲国产精品无码久久久蜜芽| jyzzjyzz国产免费观看| 外国成人网在线观看免费视频| **俄罗斯毛片免费| 免费大香伊蕉在人线国产 | 爽爽爽爽爽爽爽成人免费观看| 99久久国产免费中文无字幕| 国产大片91精品免费看3| 亚洲色成人四虎在线观看| 午夜老司机免费视频| 蜜桃传媒一区二区亚洲AV| 亚洲人成网站18禁止一区| 国产伦精品一区二区免费| 日韩精品视频免费在线观看| 国产亚洲精品美女2020久久| 亚洲成a人片在线观看久| 国产午夜精品理论片免费观看 | 18禁止观看免费私人影院| 久久精品国产99国产精品亚洲| 最近中文字幕免费mv视频8| 国产成人不卡亚洲精品91| 国产专区一va亚洲v天堂| 中文无码亚洲精品字幕| 久久永久免费人妻精品| 亚洲国产精品一区二区九九| 成人毛片100免费观看| 亚洲欧洲国产经精品香蕉网| 日本高清免费不卡在线| aaa毛片免费观看| 亚洲国产日韩在线| 2021在线观看视频精品免费| 亚洲宅男精品一区在线观看| 免费一看一级毛片| 84pao强力永久免费高清| 亚洲av午夜成人片精品网站 | 亚洲色欲www综合网| 国产成人免费手机在线观看视频 | 亚洲狠狠成人综合网|