iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0

藍芽專案

這個專案是外接一個UNO板,並連接一個光源感測器和藍芽,用ios手機來連接藍芽並查看光源感測器的值

主畫面說明

這是我們的主畫面,我有建立一個tableview,還有一個label,大致建立過程就不贅述了
這邊先建立一個空的陣列,用來放置掃描到的藍芽裝置

var BluetoothName: [CBPeripheral] = []

把偵測到的藍芽裝置儲存到BluetoothName裡面,每秒鐘都刷新畫面,並更新光源感測器傳過來的值

extension MainViewController: BluetoothServiceDelegate, CBPeripheralDelegate {
    func getBLEPeripherals(peripherals: [CBPeripheral]) {
        self.BluetoothName = peripherals
        // 主線程
        DispatchQueue.main.async {
            self.Tview.reloadData()
        }
    }
    
    func getBLEPeripheralValue(value: String) {
        DispatchQueue.main.async {
            self.NumberLb.text = value
            print("\(value)")
        }
    }
}

tableview的內容,大致就是每列都是一個藍芽裝置,可以點選其中一個row,並連接藍芽

extension MainViewController: UITableViewDelegate, UITableViewDataSource{
    // cellForRowAt內容的設定
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = Tview.dequeueReusableCell(withIdentifier: MainTableViewCell.indentifile, for: indexPath) as! MainTableViewCell
        cell.NameLb?.text = BluetoothName[indexPath.row].name ?? "Unnamed"
        return cell
    }
    // numberOfRowsInSection顯示的行數
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return BluetoothName.count
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let selectedPeripheral = BluetoothName[indexPath.row]
        BluetoothServices.shared.connectPeripheral(peripheral: selectedPeripheral)
    } 
}

結論

今天又完成一個專案囉,這次完成的是關於藍芽的,讓我學習到很多藍芽的基礎知識,並用ios手機實作出來,明天來總結一下這一個月都學習了甚麼吧~


上一篇
swift 藍芽服務與特徵
下一篇
完賽感言與總結
系列文
Swift大航道-啟航篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言