Я разрабатываю приложение, использующее BLE для подключения к микроконтроллеру.
В настоящее время у меня есть все это и работает, а также читать RSSI по ссылке BLE. Я могу нормально отображать RSSI, чтобы определить уровень сигнала. Но я бы хотел, чтобы дизайн этикетки менял цвета в зависимости от силы сигнала. От 0 до -30 (зеленый), от -30 до -60 (желтый) и от -60 до -90 (красный). Я довольно новый, чтобы быстро. Но я сделал контроллер представления теста диапазона.
Очевидно, мой код просто обновит цвет один раз. Там может быть что-то очень простое, что я скучаю, я просто не могу понять это. Также, возможно, цикл while или for-in решит эту проблему. Но до сих пор я не смог понять это правильно.
В любом случае, если у кого-то есть советы по поводу того, по какому маршруту я должен идти, это будет с благодарностью!
Вот код:
@IBOutlet weak var RSSILabel: UILabel!
@IBOutlet weak var deviceLabel: UILabel!
var timer = Timer()
var progressHUD: MBProgressHUD?
func serialDidChangeState() {
}
func serialDidDisconnect(_ peripheral: CBPeripheral, error: NSError?)
{
}
override func viewDidLoad() {
super.viewDidLoad()
if (serial?.isReady)! {
deviceLabel.text = serial?.connectedPeripheral!.name
serial?.readRSSI()
readRssiTimer()
showRssiInLabel()
}
}
func readRssiTimer() {
self.timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { (Timer) in
serial?.readRSSI()})
}
func showRssiInLabel(){
self.timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { (Timer) in
self.RSSILabel.text = serial?.realtimeRSSI.stringValue})
if (serial?.self.realtimeRSSI.intValue)! > -40 {
RSSILabel.textColor = UIColor.green
RSSILabel.font = UIFont(name: "HelveticaNeue", size: CGFloat(22))
self.view.addSubview(RSSILabel)
} else if (serial?.realtimeRSSI.intValue)! <= -40 && (serial?.realtimeRSSI.intValue)! > -70 {
RSSILabel.textColor = UIColor.yellow
RSSILabel.font = UIFont(name: "HelveticaNeue", size: CGFloat(22))
self.view.addSubview(RSSILabel)
} else if (serial?.realtimeRSSI.intValue)! <= -70 && (serial?.realtimeRSSI.intValue)! > -90 {
RSSILabel.textColor = UIColor.red
RSSILabel.font = UIFont(name: "HelveticaNeue", size: CGFloat(22))
self.view.addSubview(RSSILabel)
}
}