2015-02-11 2 views
1

Мне нужно получить силу сигнала Bluetooth подключенного устройства, и я получаю его. Я вижу окруженные устройства, и я могу отобразить значение RSSI на UITableview.Как найти уровень сигнала Bluetooth подключенного устройства Bluetooth

Здесь мне нужно изменить значение 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

+0

я не подключен на любые устройства, которые в настоящее время считывают уровень сигнала окружающих устройств. Как периодически читать значение RSSI, используя приведенный выше код – vijeesh

ответ

0

Для вызова readRSSI() вы должны подключить периферийную первый

+0

Как это будет ответ? – Saranjith

Смежные вопросы