在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于藍牙技術實現嵌入式SyncML服務器的應用方案

電子設計 ? 來源:電子產品世界 ? 作者:馬建輝;呂夢興 ? 2021-03-31 09:38 ? 次閱讀

作者:馬建輝;呂夢興;王知學;于良杰;成巍

SyncML與藍牙協議

圖1為SyncML的藍牙應用協議結構圖。依據SyncML協會定義的藍牙綁定協議,SyncML服務器的藍牙實現需要用到SDP和OBEX協議,電話簿同步應用需要用到vCard規范。SDP協議用于SyncML服務器藍牙服務的注冊,查詢藍牙手機的SyncML客戶端服務以在RFCOMM層上建立藍牙連接,該RFCOMM連接是SyncML連接的基礎;OBEX(Object Exchange)是對象交換協議,它管理SyncML服務的連接,將SyncML文檔封裝為Object進行傳輸并控制傳輸過程;vCard規范是電子名片規范,定義了個人名片信息的標準格式,方便傳播和交換。下面從這三個方面介紹SyncML的電話薄同步應用的關鍵點。

基于藍牙技術實現嵌入式SyncML服務器的應用方案

SDP在SyncML中的應用

SyncML綁定協議中定義了SyncML客戶端和服務器的SDP紀錄。

SDP是藍牙服務發現協議,它提供了注冊藍牙服務和搜索及瀏覽藍牙服務的方法。注冊藍牙服務是本地行為,以Service Discovery DataBase即服務發現數據庫的形式紀錄,每條Record即服務發現數據庫中的一個條目。搜索及瀏覽則基于C/S結構(客戶端/服務器)的請求-響應形式,使得客戶端可以訪問服務器端的服務數據庫。

作為SyncML的服務器端,首先需要注冊該藍牙服務并處于pageable(可被尋呼)狀態,這樣才能被藍牙手機發現本地設備的SyncML服務。SDP Record以結構體形式定義,定義了若干屬性和數據類型,包括ServiceClassIDList、protocolDescriptorList、 Service Name、ServiceDescription等,其中ServiceClassIDList屬性是最為重要的,以全局唯一標識符UUID表示,客戶端搜索服務器端服務的時候便是根據該屬性進行定位。

Syncml服務器端的ServiceClassID為00000001-0000-1000-8000-0002EE000002,藍牙協議為OBEX,數據類型均為DataElSeq。注冊該服務時首先給server channel賦值為默認值0,然后為該服務分配Rfcomm 通道,將分配的通道號給server channel重新賦值。

車載藍牙設備與手機建立免提連接后主動發起跟手機的SyncML服務的連接,首先設備通過SyncML客戶端ServiceClassID定位手機端的SyncML服務記錄,然后在該服務記錄中查詢手機為SyncML服務分配的Rfcomm通道號,然后建立Rfcomm層的連接。

OBEX綁定

SyncML應用獨立于具體的傳輸方式,換言之,針對具體的傳輸方式,SyncML定義了相應的綁定適配協議。對于藍牙應用,SyncML OBEX綁定協議定義了SyncML在藍牙上的實現方式。下面介紹OBEX協議,以及SyncML在OBEX上綁定時需要注意的地方。

OBEX(Object Exchange)對象交換協議是采用C/S(客戶/服務器)結構的面向會話的協議,它建立了“對象模型”以抽象描述各種實體,并定義了Header的概念來描述對象,一個對象便是一系列Header的集合。

OBEX定義了OBEX客戶端和服務器端的應用規范,客戶端是指發起OBEX連接、初始化OBEX會話的一端。根據車載設備要在免提連接建立后進行電話薄同步的應用,車載設備需要實現OBEX客戶端。OBEX客戶端在之前建立的Rfcomm連接的通道上發起連接請求,請求數據為80 00 15 11 00 04 00 46 00 0e 53 59 4e 43 4d 4c 2d 53 59 4e 43。其中0x80為連接操作符,連接請求包長度為0x0015,OBEX版本為version1.1,版本號表示為0x1100,最大OBEX包長度為0x0400,0x46表示Target,Target表明連接的目的或服務,在這里Target為53 59 4e 43 4d 4c 2d 53 59 4e 43即SYNCML-SYNC,表明建立的OBEX連接用于SyncML。

SyncML Document需要封裝為SyncML MIME類型的對象在OBEX請求或響應主體內傳輸,該類型為“application/vnd.syncml+wbxml”。SyncML同步電話薄的速度是個很關鍵的用戶體驗,相關的關鍵屬性值為最大OBEX包長度,它決定了每次交互的OBEX包的大小,從而決定了交互次數,該最大包長度越大,交互次數越少,從而同步速度越快,反之,同步速度越慢。該最大包長度在OBEX連接時協商決定,取雙方設備能夠支持的最大包長度的較小值。

SyncML的藍牙應用不可避免地會遇到兼容性問題,在測試過程中發現車載設備和Nokia6288手機進行同步時,車載設備通過PUT發給手機的SyncML Document的最后一包必須是空包82 00 03,否則無法繼續同步。

vCard解析

SyncML實現的藍牙手機和車載設備間電話薄同步應用中,首先提取出采用vCard格式的個人信息數據和相關命令,將數據和命令映射在一起存儲為結構體形式的列表,然后根據 vCard規范解析出個人信息,根據命令完成添加、刪除和替代電話薄條目。解析出的個人信息包括人名、手機號碼、家庭電話、辦公電話和車載電話,命令為 ADD、DELETE、REPLACE。下面簡要介紹vCard規范,以及vCard解析的實現。

vCard電子名片規范定義了個人公共信息交換(PDI)的描述標準和組織格式,該格式與信息傳送的方式無關,方便了各種系統和應用之間的信息交換。在vCard中,個人公共信息包括姓名、年齡、地址、電話等與個人緊密相關的基本信息。手機內vCard樣例如下:

BEGIN:VCARD

VERSION:2.1

N:denglibao

TEL;WORK:045182605447

TEL;HOME:05307415684

TEL;CELL:13478951524

END:VCARD

現在使用的vCard規范版本為2.1和3.0,定義了數據的存儲格式及訪問接口的規范,vCard解析需要能夠解析這兩種版本。根據車載信息娛樂設備的應用,vCard解析函數需要提取出姓名和電話號碼兩個屬性,其中電話號碼又包括手機、家庭電話、辦公電話、車載電話四類,其屬性值均為TEL,參數值分別為CELL、HOME、WORK、CAR,下面給出設計代碼的主要部分。

unsigned int vcard_parse(void)

{

unsigned int cnt,end,i,phone_index;

char* p;

end=vcard_length;

value_initia();

/*begin to parse vcard*/

for (cnt=13; cnt after“BEGIN:VCARD”*/

{

if((0xd==an_complete_vcard[cnt])&&(0xa==an_

complete_vcard[cnt+1]))

{

/*extract a property,another property parameter or vcard end*/

cnt=cnt+2;/*skip \r\n*/

/*if vcard end*/

p=&an_complete_vcard[cnt];

if(0==uCompareASCIIName(p,“END:VCARD”,9))

{

if(vcard_cmd==ADD)

{

phonebook_insert();

}//the vcard cmd ADD

else if(vcard_cmd==REPLACE)

{

}// the vcard cmd REPLACE

return 0;

}else if(0==uCompareASCIIName(p,“TEL;”,4))

{

cnt=cnt+4;/* TEL property ,first skip “TEL;”*/ …

p=&an_complete_vcard[cnt];

if(0==uCompareASCIIName(p,“PREF”,4))/*mobile

phonenumber*/

{

cnt=cnt+4;/*skip the “PREF”*/

。..

cnt=cnt-2;/*check next \r\n,in the “for”,cnt++,so -2,not -1*/

}else if(0==uCompareASCIIName(p,“VOICE”,5))

{

}else if(0==uCompareASCIIName(p,“CELL”,4))

{

}else if(0==uCompareASCIIName(p,“HOME”,4))

{

}else if(0==uCompareASCIIName(p,“WORK”,4))

{

} else if(0==uCompareASCIIName(p,“CAR”,3))

{

}

} else if(0==uCompareASCIIName(p,“TEL:”,4))

{ //some phone’s telephone have no parameter,

for example TEL:10086

}else if(0==uCompareASCIIName(p,“N”,1))

{ //name property

}

}

}

return 0;

}

其中,uCompareASCIIName是比較字符串函數,對輸入的兩個字符串不分大小寫按字節進行比較,具體代碼略。

結語

現在的一些文章中,對SyncML的藍牙實現只是泛泛而論,并沒有對具體的實現做深入的研究和分析,在一款車載信息娛樂設備上設計實現了基于藍牙技術嵌入式SyncML服務器,從SDP和OBEX綁定上具體指出了SyncML藍牙應用的設計要點,并結合vCard規范給出了電話薄數據解析的具體實現代碼。實踐證明,車載藍牙設備的嵌入式SyncML服務器運行穩定,有很好的應用價值。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 藍牙
    +關注

    關注

    116

    文章

    6035

    瀏覽量

    173194
  • 服務器
    +關注

    關注

    13

    文章

    9698

    瀏覽量

    87295
  • 數據庫
    +關注

    關注

    7

    文章

    3901

    瀏覽量

    65779
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    一種嵌入式Web服務器的設計方案

    隨著計算機技術和通訊技術的不斷發展,互聯網和嵌入式智能儀器得到越來越廣泛的應用,人類社會進入后PC時代。本文主要介紹了嵌入式Web服務器設計
    發表于 01-23 09:50 ?4441次閱讀

    基于H264的嵌入式視頻服務器的設計

    基于H264的嵌入式視頻服務器的設計摘要! 本文介紹了基于的嵌入式視頻服務器的設計重點闡述了嵌入式操作系統" 視頻
    發表于 06-25 10:50

    于藍牙嵌入式通信模塊的實現

    于藍牙嵌入式通信模塊的實現
    發表于 08-20 09:32

    嵌入式FTP服務器實現什么功能?

    FTP服務是目前廣泛應用的因特網應用服務之一,為了在國產嵌入式實時操作系統平臺上開發FTP服務,采用多線程并發服務器的體系結構設計了一種
    發表于 03-11 08:27

    如何用嵌入式處理MCF5272來實現家庭藍牙網關?

    本文基于藍牙技術,介紹了用Motorola公司的嵌入式處理MCF5272來實現家庭藍牙網關的具
    發表于 06-04 06:36

    于藍牙應用的嵌入式設備

    的發展.其中藍牙技術就是一個典型的例子.它的無線通訊方式使得各類數據的傳輸和交換變得越來越便捷.以此同時,各類基于藍牙應用的嵌入式設備迅速成為炙手可熱的消費類電子產品.特別是
    發表于 11-05 06:06

    如何實現嵌入式WEB服務器系統的控制設計

    簡單設計。本設計利用ARM 自帶的WEB服務器技術,來實現嵌入式WEB服務器系統的控制設計。該技術
    發表于 11-09 08:47

    嵌入式Web 服務器的分析與研究

    首先介紹嵌入式Web 服務器的發展背景。然后,詳細討論嵌入式Web 服務器的支撐技術,并提出瘦Web服務
    發表于 05-14 14:35 ?20次下載

    基于SOPC的嵌入式Web服務器設計與實現

    設計并實現了基于SOPC技術嵌入式Web服務器,簡單介紹了SOPC技術的特點及構建方法,隨后對該嵌入式
    發表于 09-21 10:21 ?33次下載

    嵌入式SyncML服務器的設計與實現

    該文應用SyncML協議實現藍牙手機與車載免提系統之間的電話本同步,其中車載系統為SyncML服務器端。系統采用雙處理
    發表于 02-23 15:10 ?22次下載

    嵌入式Web服務器實現及其CGI應用

    嵌入式設備資源有限,在這種情況下實現Web服務功能比較困難。針對嵌入式設備這種特點,本文通過比較幾種Web服務器的優缺點,選定了Shttpd
    發表于 11-15 10:15 ?79次下載
    <b class='flag-5'>嵌入式</b>Web<b class='flag-5'>服務器</b>的<b class='flag-5'>實現</b>及其CGI應用

    基于ARM的嵌入式Web服務器的設計方案

    嵌入式系統實現服務器的軟件和硬件功能,是嵌入式技術和網絡技術相結合的產物。與傳統
    發表于 07-08 18:12 ?27次下載
    基于ARM的<b class='flag-5'>嵌入式</b>Web<b class='flag-5'>服務器</b>的設計<b class='flag-5'>方案</b>

    基于ARM的嵌入式Web服務器設計方案

    基于ARM的嵌入式Web服務器設計方案
    發表于 06-15 11:13 ?20次下載

    嵌入式web服務器系統設計,基于-ARM簡單嵌入式WEB服務器系統設計.doc

    進行了簡單設計。本設計利用ARM 自帶的WEB服務器技術,來實現嵌入式WEB服務器系統的控制設計。該
    發表于 11-03 20:06 ?21次下載
    <b class='flag-5'>嵌入式</b>web<b class='flag-5'>服務器</b>系統設計,基于-ARM簡單<b class='flag-5'>嵌入式</b>WEB<b class='flag-5'>服務器</b>系統設計.doc

    嵌入式web服務器系統,嵌入式Web服務器的設計與實現

    摘要:嵌入式Web服務器嵌入式系統應用的一個重要組成部分.以其簡單,廉價,功能完善和通用性強等特點,在遠程監控,智能家電和資源共享等多種場合得到廣泛應用.本文以嵌入式Web
    發表于 11-04 11:06 ?27次下載
    <b class='flag-5'>嵌入式</b>web<b class='flag-5'>服務器</b>系統,<b class='flag-5'>嵌入式</b>Web<b class='flag-5'>服務器</b>的設計與<b class='flag-5'>實現</b>
    主站蜘蛛池模板: 免费看欧美一级特黄a大片一 | 国产性较精品视频免费 | 性 色 黄 一级 | 久久综合九色综合欧美狠狠 | 男人j进人女人j 的视频 | 在线天堂中文在线网 | 天天天狠天天透天天制色 | 国模精品 | 能在线观看的一区二区三区 | 免费观看视频高清www | 深爱激情婷婷 | 特黄aa级毛片免费视频播放 | 丝袜美腿一区 | 久久成人性色生活片 | 黄色三级视频 | 天天干天天碰 | 免费男女| 九色在线| 视色4se在线视频播放 | 影音先锋ady69色资源网站 | 男男gay污小黄文 | 亚洲无卡| 久久ww| 男人操女人在线观看 | 91日本在线观看亚洲精品 | 在线黄色大片 | 国产日日干 | 狠狠狠 | 亚洲午夜久久久精品影院 | 久久精品免费视频观看 | 夜夜爽爽爽| 国产在线精品观看 | 高h视频网站 | 国产精品一区二区综合 | 9久久99久久久精品齐齐综合色圆 | 欧美一区二区三区黄色 | 久久99精品久久久久久园产越南 | 久久伊人草 | 四虎永久免费最新在线 | 在线观看一级毛片 | 国产精品欧美一区二区三区 |