霍尼韦尔的Captuvo SL22 SDK

我正在寻找帮助在appcelerator中集成Captuvo SL22 SDK。 Captuvo SDK随附了用于ipod的Captuvo扫描仪/ msr。 我试图在自定义模块中使用Captuvo SDK并在主应用程序中调用它。 我可以使用自定义模块启动方法中的以下代码与Captuvo设备建立连接:

-(void) startup{ self.captuvo = [Captuvo sharedCaptuvoDevice]; [self.captuvo addCaptuvoDelegate:self]; [self.captuvo startDecoderHardware]; } -(void) DecoderReady{ //Fire Event successfully to Titanium App } 

启动后,我尝试通过点击应用程序中的按钮打开扫描仪,这是我的代码:

 -(void) turnScannerOn{ if([self.captuvo isDecoderRunning]){ //Fire event successfully to Titanium App [self.captuvo startDecoderScanning]; } } 

但是,无论我尝试什么,我都无法让扫描仪为我的生活打开。 我正在将Titanium 3.1.1用于运行iOS 6.1的iPod touch。 任何帮助将非常感激! 如果我搞清楚,我一定会让别人知道!

更新:所以对此的更新是我能够做到这一点。 这要到tiapp.xml进行扫描:

    UISupportedExternalAccessoryProtocols  com.honeywell.scansled.protocol.decoder com.honeywell.scansled.protocol.msr com.honeywell.scansled.protocol.pm     

但是,当您第一次启动应用程序时,我无法使用按钮打开扫描仪,但侧面的触发器工作,但没有返回任何数据。 霍尼韦尔提供了一些示例代码,我注意到这个代码添加到本机应用程序使扫描程序在初始启动时工作,所以我想知道是否有办法在titanium内部复制这个目标C代码:

 - (void)viewWillAppear:(BOOL)animated { [[Captuvo sharedCaptuvoDevice] removeCaptuvoDelegate:self] ; [[Captuvo sharedCaptuvoDevice] addCaptuvoDelegate:self]; [[Captuvo sharedCaptuvoDevice] startPMHardware]; [[Captuvo sharedCaptuvoDevice] startDecoderHardware]; } - (void)viewDidDisappear:(BOOL)animated { [[Captuvo sharedCaptuvoDevice] stopDecoderHardware]; [[Captuvo sharedCaptuvoDevice] stopPMHardware]; [[Captuvo sharedCaptuvoDevice] removeCaptuvoDelegate:self]; } 

确保在info.plist中设置了“支持的外部附件”键,如下所示:

 com.honeywell.scansled.protocol.decoder com.honeywell.scansled.protocol.msr com.honeywell.scansled.protocol.pm 

删除isDecoderRunning的检查。 如果你还没有启动解码器,它将永远不会返回true,你永远不会到达启动解码器的代码。

此外,请确保您同时启动条形码和MSR:

  [self.captuvo startDecoderScanning]; [self.captuvo startMSRHardware]; 

我也建议这样做:

  connectionStatus = [captuvo startDecoderHardware]; switch (connectionStatus) { case ProtocolConnectionStatusConnected: case ProtocolConnectionStatusAlreadyConnected: NSLog(@"Connected!"); break; case ProtocolConnectionStatusBatteryDepleted: NSLog(@"Battery depleted!"); break; case ProtocolConnectionStatusUnableToConnect: NSLog(@"Error connecting!"); break; case ProtocolConnectionStatusUnableToConnectIncompatiableSledFirmware: NSLog(@"Incompatible firmware!"); break; default: break; } 

这样你可以检查尝试连接时发生了什么。

@Chris对于你的更新问题,我写了像u一样的代码,在viewWillDiseappear中停止stopDecoderHardware,在viewWillAppear中停止startDecoderHardware,然后没有数据得到偶然但光线总是正常,所以我猜有一些问题由启动和停止引起,然后我删除了我的viewController中的所有stopDecoderHardware和startDecoderHardware方法,只需保留addDelegate和removeDelegate方法,并修改AppDelegate.m文件中的方法,如下所示

 - (void)applicationDidBecomeActive:(UIApplication *)application { [[Captuvo sharedCaptuvoDevice] startDecoderHardware]; } - (void)applicationDidEnterBackground:(UIApplication *)application { [[Captuvo sharedCaptuvoDevice] stopDecoderHardware]; } 

是的,浪费电池可能,但它似乎解决了没有数据的问题

这篇文章已经老了,但我想如果其他人偶然发现这个问题,我会把我的2美分用于帮助。

我发现我需要在主UI线程上调用startDecoderHardware ,否则我将无法获得条形码扫描回调。 在我弄清楚之前,我花了很多时间来打击这个。

当您开始使用霍尼韦尔的Captuvo SDK时,您需要先阅读快速入门和发行说明,这将有助于您快速开始开发适用于SL22 / SL42 / SL62的CaptuvoSDK自我应用程序库