<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
    主站蜘蛛池模板: 亚洲丰满熟女一区二区哦| 91亚洲国产成人精品下载| 理论亚洲区美一区二区三区| 免费观看激色视频网站(性色)| 亚洲国产综合专区在线电影 | 免费人成激情视频| 亚洲高清一区二区三区| 好吊妞998视频免费观看在线| 亚洲欧美日韩综合久久久久| 在线观看亚洲精品专区| 国产美女做a免费视频软件| 污污视频网站免费观看| 亚洲综合色成在线播放| 久久久精品视频免费观看| 亚洲老妈激情一区二区三区| 久久久久久成人毛片免费看| 亚洲黄色网址在线观看| 99久久免费国产精品特黄| 午夜亚洲国产理论片二级港台二级| 国产一区视频在线免费观看 | 亚洲欧美日韩一区二区三区在线| 天天摸夜夜摸成人免费视频| 老司机午夜性生免费福利| 91麻豆精品国产自产在线观看亚洲 | 光棍天堂免费手机观看在线观看| 亚洲AV无码一区二区二三区入口 | 亚洲综合免费视频| 天天拍拍天天爽免费视频| 一级毛片试看60分钟免费播放| 国产AV无码专区亚洲Av| 69天堂人成无码麻豆免费视频| 亚洲youwu永久无码精品 | 久久久婷婷五月亚洲97号色| 24小时免费直播在线观看| 免费很黄无遮挡的视频毛片| 亚洲国产美国国产综合一区二区| 91免费资源网站入口| 一级特级女人18毛片免费视频| 久久亚洲私人国产精品| 四虎永久免费影院| 1000部拍拍拍18免费网站|