如何使用 API disconnect/stop 扫描 Socket Mobile 扫描器?
How to disconnect/stop scanning of Socket Mobile scanner using API?
在我的应用程序中集成了 Socket Mobile Scanner 来扫描库存物品,我的要求是停止扫描仪扫描直到应用程序 search/check 物品存在。
如果最近的项目不是有效项目,扫描仪应该停止扫描。
我使用了以下代码:
/// here scanApiHelper is instance of ScanApiHelper
scanApiHelper?.pop(self)
scanApiHelper?.close()
您可以使用一种数据确认模式来涵盖这种情况。在此模式下,除非您明确确认来自应用程序的数据,否则触发器会锁定一段时间。触发器锁定时间可以配置。另一种可能性是暂时禁用触发器并在您的应用准备就绪时重新启用它。
看看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
希望对您有所帮助。
在我的应用程序中集成了 Socket Mobile Scanner 来扫描库存物品,我的要求是停止扫描仪扫描直到应用程序 search/check 物品存在。
如果最近的项目不是有效项目,扫描仪应该停止扫描。
我使用了以下代码:
/// here scanApiHelper is instance of ScanApiHelper
scanApiHelper?.pop(self)
scanApiHelper?.close()
您可以使用一种数据确认模式来涵盖这种情况。在此模式下,除非您明确确认来自应用程序的数据,否则触发器会锁定一段时间。触发器锁定时间可以配置。另一种可能性是暂时禁用触发器并在您的应用准备就绪时重新启用它。
看看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
希望对您有所帮助。