【问题标题】:How to find Bluetooth signal strength of a connected bluetooth device如何查找已连接蓝牙设备的蓝牙信号强度
【发布时间】:2015-04-11 14:10:07
【问题描述】:

我需要获取已连接设备的蓝牙信号强度,我正在获取它。我可以看到被包围的设备,并且可以将 RSSI 值显示为UITableview

在这里,我需要根据我的设备位置来改变 RSSI 值,我希望我能得到更新的 RSSI 值。我该如何实现?

我在下面发布我的代码

import UIKit
import CoreBluetooth
import Foundation



class Bluetooth_ViewController: BaseViewController,CBCentralManagerDelegate,CBPeripheralDelegate, UITableViewDelegate,UITableViewDataSource{


// @IBOutlet weak var bluetoothset: UILabel!
@IBOutlet weak var bluetoothlog: UITableView!



@IBOutlet var blucell: UITableViewCell!



@IBOutlet weak var devname: UILabel!
@IBOutlet weak var devstrength: UILabel!
//var timer = NSTimer.scheduledTimerWithTimeInterval(target: self,        selector: Selector("result"), userInfo: nil, repeats: true)
private var centralManager: CBCentralManager?
var peri: [NSString] = []
var signalstrength: [NSString] = []

var rssvalue: NSNumber!


override func viewDidLoad()
{
    super.viewDidLoad()


   // var timer = NSTimer.scheduledTimerWithTimeInterval(1, target:   self,selector:, userInfo: nil, repeats: true)


     bluetoothlog.registerNib(UINib(nibName: "BlueCellTableViewCell", bundle: nil), forCellReuseIdentifier: "bluecell")
     bluetoothlog.backgroundColor = UIColor.clearColor()
    centralManager = CBCentralManager(delegate: self, queue: nil)
    // Do any additional setup after loading the view.
    var change = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector (result()), userInfo: nil, repeats: true)
}


//MARK:-  Checking state of bluetooth

func centralManagerDidUpdateState(central: CBCentralManager!)
{
    println("\(__LINE__) \(__FUNCTION__)")
     println("checking state")

    //var refresh = NSTimer.scheduledTimerWithTimeInterval( 1.0, target: self, Selector:"result" , repeats: true)
            if central.state != .PoweredOn
    {

        return
    }
    central.scanForPeripheralsWithServices(nil,options:nil)


}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

//MARK:- discovering peripherals 


 func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!)
{

    var localname: NSString = peripheral.name //advertisementData[CBAdvertisementDataLocalNameKey]! as NSString

    println("Discovered: \(peripheral.name)")

    var per : NSString = "\(peripheral.name)"

    peri.append(per)

    signalstrength.append(RSSI.stringValue)

    rssvalue = peripheral.RSSI


    println("RSSI!:\(rssvalue)")
    println("RSI:\(peripheral.RSSI)")

   // var rsstring: NSString = peripheral.RSSI.stringValue

    //var rssvalue: NSNumber = peripheral.RSSI
   // println("DiscRSSI:\(rssvalue)")

    self.bluetoothlog.reloadData()
    if localname != ""
    {
        //centralManager!.stopScan()

        //self.peripheral = peripheral
        peripheral.delegate = self
        centralManager!.connectPeripheral(peripheral, options: nil)
    }


}

//MARK:- tableview required methods

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

    return peri.count

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell :BlueCellTableViewCell = tableView.dequeueReusableCellWithIdentifier("bluecell") as BlueCellTableViewCell!
    cell.lblName.text = peri[indexPath.row]
    cell.lblSignal.text = signalstrength[indexPath.row]

    bluetoothlog.backgroundColor = UIColor.clearColor()
    return cell

}

}

【问题讨论】:

  • 您需要在外围设备上定期调用readRSSI
  • 我没有连接任何设备,目前正在读取周围设备的信号强度。如何使用上述代码定期读取 RSSI 值

标签: ios swift bluetooth core-bluetooth


【解决方案1】:

要调用 readRSSI() 你应该先连接外设

【讨论】:

  • 这将是一个怎样的答案?
猜你喜欢
  • 2011-03-02
  • 2016-11-02
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
相关资源
最近更新 更多