女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    文章

    6096

    瀏覽量

    36138
  • 安卓
    +關注

    關注

    5

    文章

    2148

    瀏覽量

    58321
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    浪潮下,國產主板有什么新的發展機遇?

    信息技術應用創新浪潮的推動下,國產主板迎來了諸多新的發展機遇。信產業旨在實現信息技術領域的自主可控,這一戰略目標為國產主板的發展提供了廣
    的頭像 發表于 05-09 09:24 ?125次閱讀
    信<b class='flag-5'>創</b>浪潮下,國產<b class='flag-5'>主板</b>有什么新的發展機遇?

    芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位

    日前,中國電子工業標準技術協會信息技術應用創新工作委員會(以下簡稱 “信工委會”)2024 年度總結座談會于北京隆重舉行。此次會議對在信
    的頭像 發表于 01-20 09:56 ?513次閱讀

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

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

    socket 多線程編程實現方法

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

    socket 編程基礎入門

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

    國產工控主板,信產業發展新引擎

    在當今科技飛速發展的時代,信產業正成為國家戰略的重要支撐。而我們的國產工控主板,以其卓越的性能和可靠的品質,為信產業的發展注入強大動力。國產工控主板在信
    的頭像 發表于 11-06 10:29 ?595次閱讀

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

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

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

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

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

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

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

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

    引領智能未來:銳恩科技的國產低功耗單片機ENMCU

    在科技飛速發展的今天,低功耗單片機的應用越來越廣泛,尤其是在安防監控、智能家居和微波雷達照明等領域。作為國內專精特新國家高新技術半導體企業,銳恩科技致力于為客戶提供高性能、低功耗的單片機解決方案
    發表于 09-26 17:16

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

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

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

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

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

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

    如何理解socket編程接口

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