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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)標(biāo)準(zhǔn)socket編程應(yīng)用于英創(chuàng)主板的藍(lán)牙接口

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-05 10:30 ? 次閱讀

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

BlueZ是當(dāng)前比較成熟的藍(lán)牙協(xié)議棧,作為Linux系統(tǒng)的官方協(xié)議棧,集成在Linux內(nèi)核之中。英創(chuàng)公司在ESM928x的Linux系統(tǒng)中,又移植了BlueZ用戶空間協(xié)議棧和相關(guān)工具,使得ESM928x Linux平臺(tái)能夠支持藍(lán)牙技術(shù),通過socket編程實(shí)現(xiàn)藍(lán)牙無線連接,代替串行線纜進(jìn)行通信。

圖1ESM928xW系列主板+底板

用戶使用藍(lán)牙串口功能主要分為兩個(gè)步驟:藍(lán)牙功能配置和socket應(yīng)用程序編寫。

1、藍(lán)牙功能配置

1、加載ap2610藍(lán)牙模塊上電驅(qū)動(dòng)

insmod /lib/modules/4.1.14/ap6210_bt_bcm20710.ko

2、加載藍(lán)牙固件,設(shè)定波特率、藍(lán)牙地址、使能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、啟動(dòng)dbus后臺(tái)服務(wù)

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

4、以兼容模式啟動(dòng)bluetooth后臺(tái)服務(wù)

/libexec/bluetooth/bluetoothd -C &

5、啟動(dòng)hci0,并設(shè)置name和可見屬性

hciconfig hci0 up

hciconfig hci0 name esm9287

hciconfig hci0 piscan

hciconfig hci0 reset

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

圖2使用hciconfig查看藍(lán)牙信息

圖3搜索esm9287并配對(duì)

2、Socket應(yīng)用編程

藍(lán)牙協(xié)議棧中的RFCOMM協(xié)議實(shí)現(xiàn)了對(duì)串口RS232仿真,最多能提供兩個(gè)藍(lán)牙設(shè)備之間60路的連接。應(yīng)用程序中,可以使用socket進(jìn)行服務(wù)端和客戶端的編程,其過程與TCP/IP的socket通信沒有太大區(qū)別。

a)環(huán)境配置

開發(fā)bluez協(xié)議棧的藍(lán)牙應(yīng)用需要用到libbluetooth.so和相關(guān)頭文件,需要添加到eclipse對(duì)應(yīng)的藍(lán)牙項(xiàng)目中。libbluetooth.so是編譯bluez協(xié)議棧生產(chǎn)的動(dòng)態(tài)鏈接庫(kù),提供了頭文件bluetooth.h、hci_lib.h、sdp_lib.h中的函數(shù)實(shí)體,實(shí)現(xiàn)藍(lán)牙地址與常用數(shù)據(jù)類型的轉(zhuǎn)換、hci設(shè)備和sdp服務(wù)的一系列操作函數(shù)。

1、在項(xiàng)目中新建文件夾include/bluetooth,其中放入藍(lán)牙協(xié)議相關(guān)頭文件;新建文件夾lib,其中放動(dòng)態(tài)鏈接庫(kù)libbluetooth.so。

圖4新建include和lib文件夾

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

圖5添加頭文件搜索路徑

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

圖6添加編譯庫(kù)及搜索路徑

b)服務(wù)端程序

1、申請(qǐng)藍(lán)牙RFCOMM socket

s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

2、綁定本地適配器,BDADDR_ANY默認(rèn)為第一個(gè)可用藍(lán)牙適配器

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、設(shè)置socket監(jiān)聽模式,這里只允許建立一個(gè)連接

listen(s, 1);

4、等待連接

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

5、select模式讀取socket數(shù)據(jù)流

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、關(guān)閉套接字

close(client);

close(s);

c)客戶端

1、申請(qǐng)藍(lán)牙RFCOMM socket

s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);

2、設(shè)置藍(lán)牙連接服務(wù)器的地址

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、連接藍(lán)牙服務(wù)器

// connect to server

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

4、讀寫socket數(shù)據(jù)流

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]為發(fā)送內(nèi)容的地址。

5、關(guān)閉socket

close(s);

在一張板子上運(yùn)行藍(lán)牙rfcomm服務(wù)程序,在另一張板子上運(yùn)行藍(lán)牙rfcomm客戶端程序,如圖6、圖7所示:

圖7服務(wù)端程序

圖8客戶端程序

通過socket編程,藍(lán)牙應(yīng)用程序可以像tcp/ip的網(wǎng)絡(luò)編程一樣,建立連接,實(shí)現(xiàn)無線通信。如果有用戶對(duì)藍(lán)牙的串口socket編程感興趣,可以聯(lián)系我們。我們將提供驅(qū)動(dòng)文件、藍(lán)牙庫(kù)文件及相應(yīng)的示例程序。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6087

    瀏覽量

    35661
  • 安卓
    +關(guān)注

    關(guān)注

    5

    文章

    2139

    瀏覽量

    57690
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕

    近日,由中國(guó)教育技術(shù)協(xié)會(huì)主辦,教育部教育管理信息中心教育信創(chuàng)實(shí)驗(yàn)室、公安部第三研究所、中國(guó)電子工業(yè)標(biāo)準(zhǔn)技術(shù)協(xié)會(huì)信
    的頭像 發(fā)表于 12-24 09:57 ?224次閱讀

    socket 多線程編程實(shí)現(xiàn)方法

    在現(xiàn)代網(wǎng)絡(luò)編程中,多線程技術(shù)被廣泛應(yīng)用于提高服務(wù)器的并發(fā)處理能力。Socket編程是網(wǎng)絡(luò)通信的基礎(chǔ),而將多線程
    的頭像 發(fā)表于 11-12 14:16 ?498次閱讀

    socket 編程基礎(chǔ)入門

    Socket 編程基礎(chǔ)入門 在計(jì)算機(jī)網(wǎng)絡(luò)中,Socket 是一個(gè)抽象層,它將網(wǎng)絡(luò)通信的細(xì)節(jié)隱藏起來,為開發(fā)者提供了一個(gè)簡(jiǎn)單的接口來發(fā)送和接收數(shù)據(jù)。S
    的頭像 發(fā)表于 11-12 14:03 ?447次閱讀

    什么是socket編程 socket與tcp/ip協(xié)議的關(guān)系

    什么是Socket編程 Socket編程是一種網(wǎng)絡(luò)編程技術(shù),它允許程序之間進(jìn)行通信。在計(jì)算機(jī)科學(xué)中,so
    的頭像 發(fā)表于 11-01 16:01 ?528次閱讀

    中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達(dá)憑借非凡的技術(shù)實(shí)力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競(jìng)爭(zhēng)力百?gòu)?qiáng)企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?566次閱讀

    單片機(jī)哪家好?用單片機(jī),就找銳恩!

    集成度和技術(shù)水平,目前針對(duì)行業(yè)集成定制的SOC廣泛應(yīng)用于消防、安防、小家電、數(shù)碼周邊、燈控等領(lǐng)域。 2、行業(yè)專用ASIC芯片: 定制化產(chǎn)品能夠有效增強(qiáng)產(chǎn)品的競(jìng)爭(zhēng)力,圍繞行業(yè)應(yīng)用需求,ENXX-ASIC
    發(fā)表于 10-09 14:52

    銳恩科技引領(lǐng)微控制器MCU技術(shù)創(chuàng)新,賦能多元化應(yīng)用!

    行業(yè)取得了顯著成績(jī)。例如,銳恩的MCU被廣泛應(yīng)用于消費(fèi)電子、工業(yè)控制、儀表儀器、數(shù)碼電子、安防監(jiān)控、智能家居、醫(yī)療設(shè)備、照明控制、汽車電子等,在汽車電子領(lǐng)域?yàn)槠囍悄芑峁┝藞?jiān)實(shí)的硬件基礎(chǔ)。在安防
    發(fā)表于 09-29 13:40

    引領(lǐng)智能未來:銳恩科技的國(guó)產(chǎn)低功耗單片機(jī)ENMCU

    在科技飛速發(fā)展的今天,低功耗單片機(jī)的應(yīng)用越來越廣泛,尤其是在安防監(jiān)控、智能家居和微波雷達(dá)照明等領(lǐng)域。作為國(guó)內(nèi)專精特新國(guó)家高新技術(shù)半導(dǎo)體企業(yè),銳恩科技致力于為客戶提供高性能、低功耗的單片機(jī)解決方案
    發(fā)表于 09-26 17:16

    銳恩科技,以實(shí)力打造國(guó)產(chǎn)單片機(jī)替代品牌!

    今天我們要介紹的深圳銳恩科技的單片機(jī)。 鑒于我國(guó)集成電路產(chǎn)業(yè)起步較晚,核心研發(fā)技術(shù)非常的短缺,導(dǎo)致了我國(guó)芯片需要依賴進(jìn)口。而可替代進(jìn)口MCU的國(guó)產(chǎn)芯片,產(chǎn)品性能必須要穩(wěn)定。 深圳銳恩科技是一國(guó)
    發(fā)表于 09-25 09:49

    創(chuàng)國(guó)產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)的簡(jiǎn)稱,于2016年“信創(chuàng)工委會(huì)”(信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì))提出,目的就是要推動(dòng)我們國(guó)內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?534次閱讀

    中軟國(guó)際信創(chuàng)服務(wù)助力大連信創(chuàng)產(chǎn)業(yè)發(fā)展

    為進(jìn)一步激發(fā)大連本地信創(chuàng)產(chǎn)業(yè)生態(tài)的活力與潛力,搭建一個(gè)高效、開放的交流平臺(tái)。由大連軟件行業(yè)協(xié)會(huì)攜手大連市信息技術(shù)應(yīng)用創(chuàng)新綜合服務(wù)中心主辦,中軟國(guó)際協(xié)辦的,2024年大連市信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)發(fā)展大會(huì)
    的頭像 發(fā)表于 08-27 16:49 ?980次閱讀

    如何理解socket編程接口

    Socket編程接口是一種網(wǎng)絡(luò)編程的基本概念,它提供了一種在不同計(jì)算機(jī)之間進(jìn)行通信的方法。 Socket
    的頭像 發(fā)表于 08-16 10:48 ?535次閱讀

    通過大小鼠無創(chuàng)血壓測(cè)量實(shí)驗(yàn)明白了無創(chuàng)血壓測(cè)量技術(shù)的重要性

    創(chuàng)血壓測(cè)量技術(shù)的重要性:無創(chuàng)血壓測(cè)量技術(shù)是一種非侵入性的測(cè)量方法,可以避免對(duì)動(dòng)物造成不必要的傷害。在醫(yī)學(xué)研究中,無創(chuàng)血壓測(cè)量
    發(fā)表于 04-22 09:40

    泰斯特承辦“聯(lián)企創(chuàng)投匯·周三會(huì)”,協(xié)同打造智能網(wǎng)聯(lián)新高地

    2024年3月27日,由市委統(tǒng)戰(zhàn)部、市工商聯(lián)主辦、武漢市高新技術(shù)產(chǎn)業(yè)協(xié)會(huì)協(xié)辦的“聯(lián)企創(chuàng)投匯·周三會(huì)”第十三期活動(dòng)在武漢英泰斯特電子技術(shù)有限公司(以下簡(jiǎn)稱“泰斯特”)成功舉辦。
    的頭像 發(fā)表于 03-29 09:50 ?570次閱讀

    創(chuàng)股份今日登陸科創(chuàng)

    山東中創(chuàng)軟件商用中間件股份有限公司(以下簡(jiǎn)稱“中創(chuàng)股份”)近日在上海證券交易所科創(chuàng)板成功上市,標(biāo)志著這家國(guó)內(nèi)知名的民營(yíng)軟件和信息技術(shù)服務(wù)企業(yè)正式進(jìn)入資本市場(chǎng),迎來全新的發(fā)展機(jī)遇。
    的頭像 發(fā)表于 03-13 14:19 ?611次閱讀
    主站蜘蛛池模板: 韩国理论三级在线观看视频 | 黄色免费网站在线观看 | 美女色黄一男一女 | 天天干天天干天天干 | 色屁屁www影院免费观看视频 | 午夜两性网 | 在线天堂bt中文www在线 | 亚洲综合狠狠 | 亚洲国产一区二区三区在线观看 | 国产va免费精品观看 | 日本大片网| 人人干人人干人人干 | 色射色| 色老头成人免费视频天天综合 | 亚洲色图综合图区 | 色播六月| 日韩免费一级片 | 91国在线啪精品一区 | 欧美经典三级春潮烂漫海棠红 | 伊人狼人综合网 | 小屁孩cao大人免费网站 | 亚洲 欧洲 另类 综合 自拍 | vip影院在线观看 | 亚洲加勒比在线 | 黄色小视频日本 | 国产免费播放一区二区三区 | 加勒比啪啪 | 干干干日日日 | 久久永久免费视频 | 黄网站在线观看高清免费 | 大黄网站色多多 | 久久鬼| 欧美a级网站| 欧美日韩国产乱了伦 | 三级视频网站在线观看 | 国产精品资源在线 | 夜夜夜夜操 | 性色网站| 网站大全黄免费 | 久久98精品久久久久久婷婷 | 欧美性猛交xxx嘿人猛交 |