藍牙 bluez 的編程 C C++


藍牙 bluez 的編程 C C++

簡介
bluez目錄有一個libbluetooth.a文件
有一個目錄 lib目錄里面存儲這網絡連接的部分代碼
基於庫的代碼編程.
在linux下如果自帶了藍牙,可以通過gcc **.c -lbluetooth 直接編出一個可執行文件.

參考文獻

下面的連接提供了一個測試代碼.
博客鏈接

另外,關於 ble 使用庫的方式一直出現失敗的情況,是因為,沒有設置ble的相關參數,具體可以參考
博客鏈接
中的enable_advertising函數

 int device_id = hci_get_route(NULL);

        int device_handle = 0;
        if ((device_handle = hci_open_dev(device_id)) < 0) {
                perror("Could not open device");
                exit(1);
        }

        le_set_advertising_parameters_cp adv_params_cp = { 0 };
        adv_params_cp.min_interval = htobs(advertising_interval);
        adv_params_cp.max_interval = htobs(advertising_interval);
        adv_params_cp.chan_map = 7;

        uint8_t status;
        struct hci_request rq = { 0 };
        rq.ogf = OGF_LE_CTL;
        rq.ocf = OCF_LE_SET_ADVERTISING_PARAMETERS;
        rq.cparam = &adv_params_cp;
        rq.clen = LE_SET_ADVERTISING_PARAMETERS_CP_SIZE;
        rq.rparam = &status;
        rq.rlen = 1;

        int ret = hci_send_req(device_handle, &rq, 1000);
        if (ret < 0) {
                hci_close_dev(device_handle);
                fprintf(stderr, "Can't send request %s (%d)\n", strerror(errno), errno);
                return (1);
        }

        le_set_advertise_enable_cp advertise_cp = { 0 };
        advertise_cp.enable = 0x01;

        memset(&rq, 0, sizeof(rq));
        rq.ogf = OGF_LE_CTL;
        rq.ocf = OCF_LE_SET_ADVERTISE_ENABLE;
        rq.cparam = &advertise_cp;
        rq.clen = LE_SET_ADVERTISE_ENABLE_CP_SIZE;
        rq.rparam = &status;
        rq.rlen = 1;

        ret = hci_send_req(device_handle, &rq, 1000);

        if (ret < 0) {
                hci_close_dev(device_handle);
                fprintf(stderr, "Can't send request %s (%d)\n", strerror(errno), errno);
                return (1);
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM