2015-02-11 638 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