色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

英創信息技術標準socket編程應用于英創主板的藍牙接口

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-05 10:30 ? 次閱讀

藍牙(bluetooth)技術是一種低功耗短距離的無線通信技術,被廣泛應用于10米以內的嵌入式設備通信當中。其最高傳輸速度根據藍牙協議的版本不同,有1Mbps(BR、LE)、2-3Mbps(EDR)、24Mbps(HS)之分。在工業現場,藍牙技術可以代替串行線纜,實現無線通信。在智能手機普及的今天,通過藍牙與手機建立連接,手機作為上位機發送指令給下位機,可以實現低成本的UI控制方案。

BlueZ是當前比較成熟的藍牙協議棧,作為Linux系統的官方協議棧,集成在Linux內核之中。英創公司在ESM928x的Linux系統中,又移植了BlueZ用戶空間協議棧和相關工具,使得ESM928x Linux平臺能夠支持藍牙技術,通過socket編程實現藍牙無線連接,代替串行線纜進行通信。

圖1ESM928xW系列主板+底板

用戶使用藍牙串口功能主要分為兩個步驟:藍牙功能配置和socket應用程序編寫。

1、藍牙功能配置

1、加載ap2610藍牙模塊上電驅動

insmod /lib/modules/4.1.14/ap6210_bt_bcm20710.ko

2、加載藍牙固件,設定波特率、藍牙地址、使能hci等

brcm_patchram_plus --patchram /lib/firmware/ap6210/bcm20702a.hcd --baudrate 3000000 --enable_hci --bd_addr aa:00:55:44:33:22 --no2bytes --tosleep 5000 /dev/ttyS5 1> /dev/null&

3、啟動dbus后臺服務

dbus-daemon --system --nofork --nopidfile &

4、以兼容模式啟動bluetooth后臺服務

/libexec/bluetooth/bluetoothd -C &

5、啟動hci0,并設置name和可見屬性

hciconfig hci0 up

hciconfig hci0 name esm9287

hciconfig hci0 piscan

hciconfig hci0 reset

以上5個步驟已經寫成一個shell腳本set_bluetooth.sh,用戶也可以直接運行該腳本完成以上設置。至此,完成了對藍牙的設置,可以通過hciconfig hci0 -a來查看藍牙信息,如圖2。這時,其他藍牙設備就可以搜索到esm9287,圖3所示是android手機搜索到esm9287藍牙設備,點擊即可完成配對。

圖2使用hciconfig查看藍牙信息

圖3搜索esm9287并配對

2、Socket應用編程

藍牙協議棧中的RFCOMM協議實現了對串口RS232仿真,最多能提供兩個藍牙設備之間60路的連接。應用程序中,可以使用socket進行服務端和客戶端的編程,其過程與TCP/IP的socket通信沒有太大區別。

a)環境配置

開發bluez協議棧的藍牙應用需要用到libbluetooth.so和相關頭文件,需要添加到eclipse對應的藍牙項目中。libbluetooth.so是編譯bluez協議棧生產的動態鏈接庫,提供了頭文件bluetooth.h、hci_lib.h、sdp_lib.h中的函數實體,實現藍牙地址與常用數據類型的轉換、hci設備和sdp服務的一系列操作函數。

1、在項目中新建文件夾include/bluetooth,其中放入藍牙協議相關頭文件;新建文件夾lib,其中放動態鏈接庫libbluetooth.so。

圖4新建include和lib文件夾

2、進入項目Properties設置,添加項目下的include文件夾為GCC C++ Compiler和GCC C Complier編譯器的頭文件路徑(下圖是GCC C++ Compiler的設置,GCC C Compiler設置步驟相同)。

圖5添加頭文件搜索路徑

3、為Sourcery G++ Lite C++ Linker鏈接器添加libbluetooth.so庫文件及搜索路徑,如下圖。

圖6添加編譯庫及搜索路徑

b)服務端程序

1、申請藍牙RFCOMM socket

s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

2、綁定本地適配器,BDADDR_ANY默認為第一個可用藍牙適配器

loc_addr.rc_family = AF_BLUETOOTH;

loc_addr.rc_bdaddr = *BDADDR_ANY;

loc_addr.rc_channel = (uint8_t) 1;

bind(s, (structsockaddr *)&loc_addr,sizeof(loc_addr));

3、設置socket監聽模式,這里只允許建立一個連接

listen(s, 1);

4、等待連接

client = accept(s, (structsockaddr *)&rem_addr, &opt);

5、select模式讀取socket數據流

while(1)

{

FD_ZERO(&working_set);

max_sd = client;

FD_SET(client, &working_set);

timeout.tv_sec = 3 * 60;

timeout.tv_usec = 0;

// Call select() and wait 5 minutes for it to complete.

printf("Waiting on select() %ld sec...\n", timeout.tv_sec);

intrc_select = select(max_sd + 1, &working_set, NULL, NULL, &timeout);

// Check to see if the select call failed.

if(rc_select < 0)

{

perror(" select() failed");

break;

}

elseif(rc_select > 0)

{

if(FD_ISSET(max_sd,&working_set))

{

// read data from the client

bytes_read = read(client, buf,sizeof(buf));

if( bytes_read > 0 ) {

printf("received: [%s]\n", buf);

}

else

{

break;

}

write(client,ack,sizeof(ack));

}

}

// Else if rc_select == 0 then the 5 minute time out expired.

else

{

printf(" select() timed out.\n");

break;

}

}

6、關閉套接字

close(client);

close(s);

c)客戶端

1、申請藍牙RFCOMM socket

s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

2、設置藍牙連接服務器的地址

structsockaddr_rc addr = { 0 };

// set the connection parameters (who to connect to)

addr.rc_family = AF_BLUETOOTH;

addr.rc_channel = (uint8_t) 1;

str2ba( dest, &addr.rc_bdaddr );

3、連接藍牙服務器

// connect to server

status = connect(s, (structsockaddr *)&addr,sizeof(addr));

4、讀寫socket數據流

for(i = 0; i < 3; i++)

{

// send a message

write(s, message[i], strlen(message[i])+1);

printf("write "%s" to %s\n", message[i],dest);

bytes_read = read(s, buf,sizeof(buf));

if( bytes_read > 0 ) {

printf("received: [%s]\n", buf);

}

}

其中,message[i]為發送內容的地址。

5、關閉socket

close(s);

在一張板子上運行藍牙rfcomm服務程序,在另一張板子上運行藍牙rfcomm客戶端程序,如圖6、圖7所示:

圖7服務端程序

圖8客戶端程序

通過socket編程,藍牙應用程序可以像tcp/ip的網絡編程一樣,建立連接,實現無線通信。如果有用戶對藍牙的串口socket編程感興趣,可以聯系我們。我們將提供驅動文件、藍牙庫文件及相應的示例程序。

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

    關注

    7

    文章

    6085

    瀏覽量

    35399
  • 安卓
    +關注

    關注

    5

    文章

    2132

    瀏覽量

    57263
收藏 人收藏

    評論

    相關推薦

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準技術協會信
    的頭像 發表于 12-24 09:57 ?132次閱讀

    socket 多線程編程實現方法

    在現代網絡編程中,多線程技術被廣泛應用于提高服務器的并發處理能力。Socket編程是網絡通信的基礎,而將多線程
    的頭像 發表于 11-12 14:16 ?377次閱讀

    socket 編程基礎入門

    Socket 編程基礎入門 在計算機網絡中,Socket 是一個抽象層,它將網絡通信的細節隱藏起來,為開發者提供了一個簡單的接口來發送和接收數據。S
    的頭像 發表于 11-12 14:03 ?332次閱讀

    什么是socket編程 socket與tcp/ip協議的關系

    什么是Socket編程 Socket編程是一種網絡編程技術,它允許程序之間進行通信。在計算機科學中,so
    的頭像 發表于 11-01 16:01 ?365次閱讀

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?497次閱讀

    單片機哪家好?用單片機,就找銳恩!

    集成度和技術水平,目前針對行業集成定制的SOC廣泛應用于消防、安防、小家電、數碼周邊、燈控等領域。 2、行業專用ASIC芯片: 定制化產品能夠有效增強產品的競爭力,圍繞行業應用需求,ENXX-ASIC
    發表于 10-09 14:52

    銳恩科技引領微控制器MCU技術創新,賦能多元化應用!

    行業取得了顯著成績。例如,銳恩的MCU被廣泛應用于消費電子、工業控制、儀表儀器、數碼電子、安防監控、智能家居、醫療設備、照明控制、汽車電子等,在汽車電子領域為汽車智能化提供了堅實的硬件基礎。在安防
    發表于 09-29 13:40

    銳恩科技,以實力打造國產單片機替代品牌!

    今天我們要介紹的深圳銳恩科技的單片機。 鑒于我國集成電路產業起步較晚,核心研發技術非常的短缺,導致了我國芯片需要依賴進口。而可替代進口MCU的國產芯片,產品性能必須要穩定。 深圳銳恩科技是一國
    發表于 09-25 09:49

    國產化背景下的工控主板發展現狀

    ,是信息技術應用創新產業的簡稱,于2016年“信工委會”(信息技術應用創新工作委員會)提出,目的就是要推動我們國內軟硬件關鍵技術的研發
    的頭像 發表于 09-21 16:15 ?418次閱讀

    中軟國際信服務助力大連信產業發展

    為進一步激發大連本地信產業生態的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業協會攜手大連市信息技術應用創新綜合服務中心主辦,中軟國際協辦的,2024年大連市信息技術應用創新產業發展大會
    的頭像 發表于 08-27 16:49 ?890次閱讀

    如何理解socket編程接口

    Socket編程接口是一種網絡編程的基本概念,它提供了一種在不同計算機之間進行通信的方法。 Socket
    的頭像 發表于 08-16 10:48 ?444次閱讀

    通過大小鼠無血壓測量實驗明白了無血壓測量技術的重要性

    血壓測量技術的重要性:無血壓測量技術是一種非侵入性的測量方法,可以避免對動物造成不必要的傷害。在醫學研究中,無血壓測量
    發表于 04-22 09:40

    泰斯特承辦“聯企投匯·周三會”,協同打造智能網聯新高地

    2024年3月27日,由市委統戰部、市工商聯主辦、武漢市高新技術產業協會協辦的“聯企投匯·周三會”第十三期活動在武漢英泰斯特電子技術有限公司(以下簡稱“泰斯特”)成功舉辦。
    的頭像 發表于 03-29 09:50 ?521次閱讀

    股份今日登陸科

    山東中軟件商用中間件股份有限公司(以下簡稱“中股份”)近日在上海證券交易所科板成功上市,標志著這家國內知名的民營軟件和信息技術服務企業正式進入資本市場,迎來全新的發展機遇。
    的頭像 發表于 03-13 14:19 ?549次閱讀

    PCB企業力三期項目順利投產

    近日,PCB企業四川力電子科技股份有限公司三期(載板廠和特種板廠)順利投產。通過這個項目,力公司成功地將業務范圍從單一的普通通孔多層板擴展到了高端的IC載板、MiniLED基板
    的頭像 發表于 01-15 14:20 ?629次閱讀
    主站蜘蛛池模板: 视频一区二区三区蜜桃麻豆| 一本色道久久综合亚洲精品蜜桃冫| 一级毛片免费在线播放| 激情女人花| 总攻催眠受的高h巨肉np| 欧美黄色第一页| 国产成人亚洲综合无| 亚洲视频在线观看| 欧美精品v欧洲高清| 国产不卡在线观看视频| 亚洲嫩草影院久久精品| 美女禁处受辱漫画| 高清欧美videos sexo| 亚洲视频无码高清在线| 欧美AAAAAA级午夜福利视频| 国产精品v欧美精品v日韩| 伊人激情综合网| 日本xxx在线观看免费播放| 国产在线观看www| 99视频在线免费| 亚洲国产综合久久精品| 男神插曲女生软件完整版| 国产偷国产偷亚州清高APP| 2021国产精品| 亚洲 欧美 综合 高清 在线| 免费中文字幕视频| 国产亚洲人成网站在线观看播放| 97人摸人人澡人人人超一碰| 亚洲AV成人无码999WWW| 欧美高清69vivo| 精品爽爽久久久久久蜜臀| 波多结衣一区二区三区| 一本色道久久综合亚洲精品| 日韩a在线看免费观看视频| 久久九九精品国产自在现线拍| 东北真实仑乱| 91羞羞视频| 一个色综合久久| 亚洲VA欧美VA天堂V国产综合| 青青草原91| 毛片免费在线|