2016-06-16 1 views
1

Я получаю 100% в результате каждый раз ... почему (iOS/SocketScan API v.10.2.227)? Вот мой код:SocketScan всегда возвращает 100% время автономной работы

-(void) onGetBatteryInfo:(ISktScanObject*)scanObj { 

    SKTRESULT result=[[scanObj Msg]Result]; 
    if(SKTSUCCESS(result)){ 

     long batteryLevel = SKTBATTERY_GETCURLEVEL([[scanObj Property] getUlong]); 
     NSLog(@"BatteryInfo %ld", batteryLevel); 

     [self setBatteryLevel:batteryLevel]; 
     [self.tableView reloadData]; 

    } else { 

     NSLog(@"ES-GetBatteryInfo set status returned the error %ld",result); 
    } 
} 

Спасибо, Марк

scanner config

+1

Я не знаком со структурой, которую вы используете, но Я бы проверил [UIDevice currentDevice] .batteryMonitoringEnabled. Если мониторинг не включен, вы не сможете получить точное чтение. – robinkunde

+0

Mark, вы уверены, что уровень заряда батареи не равен 100%? Что говорится в [Настройки параметров сканера] (https://itunes.apple.com/us/app/scannersettings/id456055932?mt=8). Если это не 100%, вы используете уведомления об уровне заряда батареи или запрашиваете уровень заряда батареи с помощью getProperty? – Enrico

+0

Да, я уверен. Он говорит 72% – Mark

ответ

1

Вы можете перепроверить следующее ...

В viewDidLoad вы создаете ScanApiHelper и таймер

if(ScanApi==nil) { 
    ScanApi=[[ScanApiHelper alloc]init]; 
    [ScanApi setDelegate:self]; 
    [ScanApi open]; 
    ScanApiConsumer=[NSTimer scheduledTimerWithTimeInterval:.2 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES]; 
} 

Ваш таймер вызывает doScanApiReceive

-(void)onTimer: (NSTimer*)theTimer{ 
    if(theTimer==ScanApiConsumer){ 
     [ScanApi doScanApiReceive]; 
    } 
} 

Наконец, вы не запрашивать уровень заряда батареи, пока вы не получили уведомление onDeviceArrival

-(void)onDeviceArrival:(SKTRESULT)result device:(DeviceInfo*)deviceInfo { 
    [ScanApi postGetBattery:deviceInfo Target:self Response:@selector(onGetBatteryInfo:)]; 
} 
+0

Спасибо! Вот и все. Я называл это слишком рано. – Mark