一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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ù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-05 10:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

藍(lán)牙(bluetooth)技術(shù)是一種低功耗短距離的無(wú)線通信技術(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)無(wú)線通信。在智能手機(jī)普及的今天,通過(guò)藍(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ù),通過(guò)socket編程實(shí)現(xiàn)藍(lán)牙無(wú)線連接,代替串行線纜進(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和可見(jiàn)屬性

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è)置,可以通過(guò)hciconfig hci0 -a來(lái)查看藍(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ù)端和客戶端的編程,其過(guò)程與TCP/IP的socket通信沒(méi)有太大區(qū)別。

a)環(huán)境配置

開(kāi)發(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)聽(tīng)模式,這里只允許建立一個(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客戶端程序

通過(guò)socket編程,藍(lán)牙應(yīng)用程序可以像tcp/ip的網(wǎng)絡(luò)編程一樣,建立連接,實(shí)現(xiàn)無(wú)線通信。如果有用戶對(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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6102

    瀏覽量

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

    關(guān)注

    5

    文章

    2155

    瀏覽量

    58703
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國(guó)家推動(dòng)IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國(guó)家網(wǎng)絡(luò)安全、推動(dòng)產(chǎn)業(yè)升級(jí)和實(shí)現(xiàn)數(shù)字主權(quán)的重任。簡(jiǎn)單來(lái)
    的頭像 發(fā)表于 06-13 10:06 ?2018次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    創(chuàng)浪潮下,國(guó)產(chǎn)主板有什么新的發(fā)展機(jī)遇?

    信息技術(shù)應(yīng)用創(chuàng)新浪潮的推動(dòng)下,國(guó)產(chǎn)主板迎來(lái)了諸多新的發(fā)展機(jī)遇。信創(chuàng)產(chǎn)業(yè)旨在實(shí)現(xiàn)信息技術(shù)領(lǐng)域的自主可控,這一戰(zhàn)略目標(biāo)為國(guó)產(chǎn)主板的發(fā)展提供了廣
    的頭像 發(fā)表于 05-09 09:24 ?221次閱讀
    信<b class='flag-5'>創(chuàng)</b>浪潮下,國(guó)產(chǎn)<b class='flag-5'>主板</b>有什么新的發(fā)展機(jī)遇?

    飛騰助力首屆教育信息技術(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 ?516次閱讀

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

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

    socket 編程基礎(chǔ)入門

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

    國(guó)產(chǎn)工控主板,信創(chuàng)產(chǎn)業(yè)發(fā)展新引擎

    在當(dāng)今科技飛速發(fā)展的時(shí)代,信創(chuàng)產(chǎn)業(yè)正成為國(guó)家戰(zhàn)略的重要支撐。而我們的國(guó)產(chǎn)工控主板,以其卓越的性能和可靠的品質(zhì),為信創(chuàng)產(chǎn)業(yè)的發(fā)展注入強(qiáng)大動(dòng)力。國(guó)產(chǎn)工控主板在信
    的頭像 發(fā)表于 11-06 10:29 ?674次閱讀

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

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

    中科創(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 ?976次閱讀

    單片機(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)智能未來(lái):銳恩科技的國(guó)產(chǎn)低功耗單片機(jī)ENMCU

    在科技飛速發(fā)展的今天,低功耗單片機(jī)的應(yīng)用越來(lái)越廣泛,尤其是在安防監(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 ?880次閱讀

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

    為進(jìn)一步激發(fā)大連本地信創(chuàng)產(chǎn)業(yè)生態(tài)的活力與潛力,搭建一個(gè)高效、開(kāi)放的交流平臺(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 ?1312次閱讀

    如何理解socket編程接口

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