如何使用API​​断开/停止扫描Socket Mobile扫描仪?

时间:2017-12-15 11:54:00

标签: ios swift socketscan

在我的应用程序中集成套接字移动扫描程序来扫描库存项目,我的要求是停止扫描程序的扫描,直到应用程序搜索/检查项目存在。

如果最近的项目无效,则扫描仪应停止扫描。

我使用下面的代码:

/// here scanApiHelper is instance of ScanApiHelper 
scanApiHelper?.pop(self)
scanApiHelper?.close()

1 个答案:

答案 0 :(得分:1)

您可以使用的数据确认模式将涵盖此方案。在此模式下,除非您明确确认来自应用程序的数据,否则触发器将锁定一段时间。可以配置触发器锁定时间。另一种可能性是暂时禁用触发器,并在应用程序准备就绪时重新启用它。

看看github singleentry-ios(https://github.com/SocketMobile/singleentryswift-ios)它有一个数据确认的代码示例:

    func onDecodedDataResult(_ result: Int, device: DeviceInfo!, decodedData: ISktScanDecodedData!) {
    print("onDecodedDataResult in the detail view")
    if result==ESKT_NOERROR {
        let rawData = decodedData.getData()
        let rawDataSize = decodedData.getSize()
        let data = Data(bytes: UnsafePointer<UInt8>(rawData!), count: Int(rawDataSize))
        print("Size: \(rawDataSize)")
        print("data: \(data)")
        let str = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
        let string = str as! String
        print("Decoded Data \(string)")
        self.decodedData.text = string
        // this code can be removed if the application is not interested by
        // the host Acknowledgment for the decoded data
        #if HOST_ACKNOWLEDGMENT
            ScanApiHelper.shared().postSetDataConfirmationOkDevice(device, target: self, response: #selector(onSetDataConfirmation(_:)))
        #endif
    }
}

#if HOST_ACKNOWLEDGMENT
func onSetDataConfirmation(_ scanObj: ISktScanObject){
    let result = scanObj.msg().result()
    if result != ESKT_NOERROR {
        print("error trying to confirm the decoded data: \(result)")
    }
}
#endif

扫描仪需要配置一次到此模式:

    #if HOST_ACKNOWLEDGMENT
        scanApiHelper?.postGetLocalAcknowledgmentDevice(deviceInfo, target: self, response: #selector(onGetLocalAcknowledgment(_:)))
        scanApiHelper?.postGetDecodeActionDevice(deviceInfo, target: self, response: #selector(onGetDecodeAction(_:)))
    #else // to remove the Host Acknowledgment if it was set before
        scanApiHelper?.postGetLocalAcknowledgmentDevice(deviceInfo, target: self, response: #selector(onGetLocalAcknowledgmentLocalAck(_:)))
        scanApiHelper?.postGetDecodeActionDevice(deviceInfo, target: self, response: #selector(onGetDecodeActionLocalAck(_:)))
    #endif

我希望这会有所帮助。