霍尼韦尔的Captuvo SL22 SDK

时间:2013-08-06 15:49:20

标签: ios objective-c ipod-touch titanium-modules

我正在寻找帮助在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进行扫描:

<ios>
    <plist>
        <dict>
            <key>UISupportedExternalAccessoryProtocols</key>
            <array>
                <string>com.honeywell.scansled.protocol.decoder</string>
                <string>com.honeywell.scansled.protocol.msr</string>
                <string>com.honeywell.scansled.protocol.pm</string>
            </array>
        </dict>
    </plist>
</ios>

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

5 个答案:

答案 0 :(得分:5)

确保您拥有&#34;支持的外部配件&#34;在info.plist中设置的密钥如下:

<string>com.honeywell.scansled.protocol.decoder</string>
<string>com.honeywell.scansled.protocol.msr</string>
<string>com.honeywell.scansled.protocol.pm</string>

答案 1 :(得分:1)

删除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;
    }

通过这种方式,您可以查看尝试连接时发生的情况。

答案 2 :(得分:1)

@克里斯 对于你的更新问题,我写了像你一样的代码,在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];
}  
是的,浪费电池可能,但似乎解决了没有数据的问题

答案 3 :(得分:0)

这篇文章已经老了,但我想如果其他人偶然发现这个问题,我会花2美分来帮忙。

我发现我需要在主UI线程上调用startDecoderHardware,否则我将无法获得条形码扫描回调。在我弄明白这一点之前,我花了很多时间来解决这个问题。

答案 4 :(得分:-1)

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