Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan penghantaran Bluetooth dalam golang

Bagaimana untuk melaksanakan penghantaran Bluetooth dalam golang

PHPz
PHPzasal
2023-03-29 16:15:202092semak imbas

Golang ialah bahasa pengaturcaraan yang cekap, pantas dan berkuasa yang memberikan sokongan hebat dalam menulis aplikasi web dan aplikasi interaktif. Dalam bidang penghantaran Bluetooth, golang juga mempunyai prestasi yang sangat baik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan golang untuk melaksanakan penghantaran Bluetooth.

Sebelum memulakan artikel ini, kita perlu memahami beberapa pengetahuan asas penghantaran Bluetooth. Bluetooth ialah teknologi komunikasi wayarles jarak dekat yang biasa digunakan untuk menyambungkan peranti seperti set kepala wayarles, papan kekunci dan tetikus. Ia boleh menghantar data tanpa menggunakan kabel, dan julat tipikalnya adalah sekitar 10 meter.

Untuk melaksanakan penghantaran Bluetooth, anda perlu menggunakan pustaka bluetooth golang. Pustaka ini menyediakan fungsi untuk berkomunikasi dengan peranti Bluetooth.

Pertama, kami perlu memasang penyesuai berdaya Bluetooth pada komputer kami supaya kod kami boleh mengakses dan berkomunikasi dengan peranti Bluetooth. Selepas memasang penyesuai, kami boleh memasang perpustakaan bluetooth golang.

Masukkan arahan berikut dalam tetingkap baris arahan untuk memasang:

go get github.com/karalabe/gousb
go get github.com/raff/goble

Selepas pemasangan selesai, kita perlu mengimport perpustakaan bluetooth dalam kod:

import "github.com/currantlabs/ble"

Connect Down, kita boleh menggunakan kod berikut untuk mengimbas peranti Bluetooth yang tersedia:

// Set up BLE scanner
scanner, err := ble.NewScanner()
if err != nil {
    log.Fatalf("Failed to initialize BLE scanner: %s", err)
}
defer scanner.Close()

// Start scanning for 10 seconds
stopScan := make(chan struct{})
go func() {
    <-time.After(10 * time.Second)
    close(stopScan)
}()
devices := make(map[string]struct{})
scanner.Handler = ble.AdvertisementHandler(func(a ble.Advertisement) {
    devices[a.String()] = struct{}{}
})
if err := scanner.Scan(stopScan); err != nil {
    log.Fatalf("Failed to scan for devices: %s", err)
}
for device := range devices {
    log.Printf("Discovered device %s", device)
}

Kod di atas akan mengimbas selama 10 saat dan menyimpan peranti yang ditemui dalam map[string]struct{}. Kami boleh memproses maklumat ini selanjutnya jika perlu.

Kami juga boleh menggunakan kod berikut untuk menyambung ke peranti Bluetooth:

targetMAC, err := ble.ParseMAC(targetAddr)
if err != nil {
    log.Fatalf("Failed to parse target MAC address %s: %s", targetAddr, err)
}
client, err := ble.NewClient(&ble.ClientParams{
    ConnectionParams: ble.ConnectionParams{
        Interval:         50 * time.Millisecond,
        Latency:          4,
        SupervisionTimeout: time.Second,
    },
    AutoConnect: true,
})
if err != nil {
    log.Fatalf("Failed to initialize BLE client: %s", err)
}
defer client.CancelConnection()
ctx := context.Background()
peripheral, err := client.Dial(ctx, targetMAC)
if err != nil {
    log.Fatalf("Failed to connect to peripheral: %s", err)
}
defer peripheral.CancelConnection()

Kod di atas akan bersambung ke peranti sasaran dan membatalkan sebaik sahaja sambungan selesai. Kami juga boleh kekal berhubung selepas menyambung dan menghantar serta menerima data. Berikut ialah contoh:

for {
    peripheral := connect()
    if peripheral == nil {
        continue
    }
    if err := peripheral.WriteCharacteristic(characteristic, data, true); err != nil {
        log.Printf("Failed to send data: %s", err)
    }
    if err := peripheral.SetNotifyValue(characteristic, func(b []byte) {
        log.Printf("Received data: %v", b)
    }); err != nil {
        log.Printf("Failed to set notification: %s", err)
    }
    <-time.After(10 * time.Second)
}

Kod di atas akan bersambung ke peranti sasaran, menghantar data dan mendapatkan data. Ia juga akan memutuskan sambungan selepas 10 saat dan menunggu beberapa lama sebelum menyambung semula. Anda boleh mengubah suai kod seperti yang diperlukan dan melaksanakan tindakan lain berdasarkan contoh ini.

Ringkasan:

Dalam artikel ini, kami memperkenalkan cara menggunakan pustaka bluetooth golang untuk melaksanakan penghantaran Bluetooth. Kami mempelajari tentang pengetahuan asas penghantaran Bluetooth dan mempelajari cara mengimbas peranti, menyambung ke peranti, menghantar data dan menerima data. Pustaka bluetooth Golang menyediakan sokongan yang meluas, menjadikan pelaksanaan penghantaran Bluetooth mudah dan mudah. Jika anda berminat, cuba teknologi ini dalam projek golang anda yang seterusnya!

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penghantaran Bluetooth dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn