2015-02-11 123 views
1

我需要获得连接设备的蓝牙信号强度,并且我得到它。我可以看到包围的设备,并且可以将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 

} 

} 
+0

您需要定期调用'readRSSI'在你周围 – Paulw11 2015-02-11 09:56:14

+0

我没有连接到目前正在读取周边设备信号强度的任何设备。如何使用上面的代码定期读取RSSI值 – vijeesh 2015-02-11 10:30:22

回答

0

我的代码唤起readRSSI()你应该连接外围第一

+0

这将是一个答案? – Saranjith 2017-08-02 12:21:49