关于条形码,UPC-E和EAN-8的数字数量相同.(8)
当我扫描条形码时,我必须删除支票数字。我必须删除它才能与数据库中的条形码匹配。
我如何区分这两个数字?和我的其他条形码,我根据数字长度进行区分,并删除最后一个数字,但是对于这两个数字,我不能,因为它们都是8位,只需要删除1位检查数字
有什么方法可以根据校验位算法来区分吗,或者.
发布于 2014-12-20 00:44:44
我不认为你总能做到。EN-8和UPC有不同的校验和机制.对于UPC,首先展开到UPC,然后计算校验和.对于EAN-8,您只需使用前7位数字。如果检查数字只对EAN-8或UPC-E有效,那么您已经得到了答案。但是,如果两者都匹配(我相信这是可能的),那么您就不能仅仅根据数字来确定它是EAN8还是UPCE。
发布于 2014-12-19 20:45:48
我不认为这个问题与Swift有关。我猜想条形码扫描器是通过USB端口连接的。扫描器可能伪装成键盘,并“键入”解码的数据。您需要参考扫描仪的文档,才能了解如何重新配置扫描仪,以便除了解码的数据之外,还提供诊断数据。诊断将包括条形码的类型。
作为解决办法,您可以删除最后一个数字,尝试数据库查找,如果失败,请删除第一个数字并再次尝试查找。
发布于 2014-12-20 00:04:15
最后做了个工作..。如果它没有连接,那么删除并重试。谢谢库巴
if (barcodeLength == 13) {
// EAN-13 \\
// ********** Database Function ********** Database Function ********** \\
// 1
let urlString: String = "http://\(hostString):\(portString)/barcode.php?&password=\(passString)&db=\(dbString)&barNum=\(self.scannedBarcode)"
let url: NSURL? = NSURL(string: urlString)!
let urlSession = NSURLSession.sharedSession()
//2
let jsonQuery = urlSession.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
if (error != nil) {
println("\(error.localizedDescription)")
}
var err: NSError?
var jsonResult: Array? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSArray?
if (err != nil) {
println("Can't connect using credentials")
println("JSON Error \(err!.localizedDescription)")
}
if jsonResult?.count == 0 {
println("Check digit removed from EAN-13")
self.scannedBarcode.removeAtIndex(self.scannedBarcode.endIndex.predecessor())
println(self.scannedBarcode)
self.jsonComp()
return
}
println("Well, this is 13 digit EAN-13")
// 4
let itemID: String! = jsonResult![0]["ITEM_ID"] as NSString
let itemName: String! = jsonResult![0]["ITEM_Kitchen_Name"] as NSString
let itemPrice: String! = jsonResult![0]["ITEM_Sale_Price"] as NSString
println(itemID, itemName, itemPrice)
self.selectedID = itemID
self.selectedName = itemName
self.selectedPrice = itemPrice
dispatch_async(dispatch_get_main_queue(), {
self.performSegueWithIdentifier("editPrice", sender: AnyObject?())
//
})
})
// 5
jsonQuery.resume()
}
else if (barcodeLength == 12) {
// UPC-A \\
// ********** Database Function ********** Database Function ********** \\
// 1
let urlString: String = "http://\(hostString):\(portString)/barcode.php?&password=\(passString)&db=\(dbString)&barNum=\(self.scannedBarcode)"
let url: NSURL? = NSURL(string: urlString)!
let urlSession = NSURLSession.sharedSession()
//2
let jsonQuery = urlSession.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
if (error != nil) {
println("\(error.localizedDescription)")
}
var err: NSError?
var jsonResult: Array? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSArray?
if (err != nil) {
println("Can't connect using credentials")
println("JSON Error \(err!.localizedDescription)")
}
if jsonResult?.count == 0 {
println("Check digit removed from UPC-A")
self.scannedBarcode.removeAtIndex(self.scannedBarcode.endIndex.predecessor())
println(self.scannedBarcode)
self.jsonComp()
return
}
println("Well, this is 12 digit UPC-A")
// 4
let itemID: String! = jsonResult![0]["ITEM_ID"] as NSString
let itemName: String! = jsonResult![0]["ITEM_Kitchen_Name"] as NSString
let itemPrice: String! = jsonResult![0]["ITEM_Sale_Price"] as NSString
println(itemID, itemName, itemPrice)
self.selectedID = itemID
self.selectedName = itemName
self.selectedPrice = itemPrice
dispatch_async(dispatch_get_main_queue(), {
self.performSegueWithIdentifier("editPrice", sender: AnyObject?())
//
})
})
// 5
jsonQuery.resume()
}
else if (barcodeLength == 8) {
// ********** Database Function ********** Database Function ********** \\
// 1
let urlString: String = "http://\(hostString):\(portString)/barcode.php?&password=\(passString)&db=\(dbString)&barNum=\(self.scannedBarcode)"
let url: NSURL? = NSURL(string: urlString)!
let urlSession = NSURLSession.sharedSession()
//2
let jsonQuery = urlSession.dataTaskWithURL(url!, completionHandler: { data, response, error -> Void in
if (error != nil) {
println("\(error.localizedDescription)")
}
var err: NSError?
var jsonResult: Array? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSArray?
if (err != nil) {
println("Can't connect using credentials")
println("JSON Error \(err!.localizedDescription)")
}
if jsonResult?.count == 0 {
println("Well, this is UPC-E")
self.scannedBarcode.removeAtIndex(self.scannedBarcode.startIndex)
self.scannedBarcode.removeAtIndex(self.scannedBarcode.endIndex.predecessor())
println(self.scannedBarcode)
self.jsonComp()
return
}
println("Well, this is EAN-8")
// 4
let itemID: String! = jsonResult![0]["ITEM_ID"] as NSString
let itemName: String! = jsonResult![0]["ITEM_Kitchen_Name"] as NSString
if jsonResult![0]["ITEM_Sale_Price"] == nil {
println("No Sale Price")
dispatch_async(dispatch_get_main_queue(), {
HUDController.sharedController.hide(afterDelay: 0.1)
})
var refreshAlert = UIAlertController(title: "Camaleon Reports", message: "Barcode does not have a price set", preferredStyle: UIAlertControllerStyle.Alert)
refreshAlert.addAction(UIAlertAction(title: "Retry", style: .Default, handler: { (action: UIAlertAction!) in
println("Yes Logic")
}))
self.presentViewController(refreshAlert, animated: true, completion: nil)
return
}
let itemPrice: String! = jsonResult![0]["ITEM_Sale_Price"] as NSString
println(itemID, itemName, itemPrice)
self.selectedID = itemID
self.selectedName = itemName
self.selectedPrice = itemPrice
dispatch_async(dispatch_get_main_queue(), {
self.performSegueWithIdentifier("editPrice", sender: AnyObject?())
//
})
})
// 5
jsonQuery.resume()
} else {
dispatch_async(dispatch_get_main_queue(), {
HUDController.sharedController.hide(afterDelay: 0.1)
})
var refreshAlert = UIAlertController(title: "Camaleon Reports", message: "Barcode does not exist", preferredStyle: UIAlertControllerStyle.Alert)
refreshAlert.addAction(UIAlertAction(title: "Retry", style: .Default, handler: { (action: UIAlertAction!) in
println("Yes Logic")
}))
self.presentViewController(refreshAlert, animated: true, completion: nil)
return
}
}
https://stackoverflow.com/questions/27573543
复制相似问题