[HN Gopher] Generating a QR code with only ARM Assembly
       ___________________________________________________________________
        
       Generating a QR code with only ARM Assembly
        
       Author : barrettotte
       Score  : 64 points
       Date   : 2021-09-08 15:49 UTC (7 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | amelius wrote:
       | OT. Does anyone know of a good open source library to read "Data
       | Matrix" 2d barcodes? The ones I found are either broken or
       | extremely slow. The frustrating part is that there seem to be
       | many mobile phone apps which can do it just fine, but I want to
       | run this in my own code on my desktop machine, so each barcode
       | can trigger an appropriate action.
        
         | dmitrygr wrote:
         | The spec is quite clear (i was able to implement creating
         | datamatrix codes of all sizes/shaped from the spec in C in a
         | day). Take a look at it. It also covers how to decode them. You
         | might be able to write it yourself and learn a lot in the
         | process.
         | 
         | It goes into great depth on suggested methods to decode. See
         | section 9 "Reference decode algorithm for Data Matrix" in
         | ISO/IEC 16022 second edition 2006-09-15, which you'll need to
         | _BUY_...
         | 
         | I've uploaded for you to view here:
         | https://mega.nz/file/ctQCxDaQ#Y7-XyMeR2e8nJQ79cJfWKmlfwxPm2Q...
         | 
         | Because, fuck ISO for paywalling knowledge!
        
           | codetrotter wrote:
           | Hos do you correct for angles around the axes x, y and z?
           | That's the hard part I imagine
        
             | dmitrygr wrote:
             | I updated the comment you replied to with more info :)
        
             | [deleted]
        
             | wizzwizz4 wrote:
             | I found another paper:
             | https://www.hindawi.com/journals/mpe/2013/848276/
        
               | gregsadetsky wrote:
               | And here's a Matlab implementation based on that paper:
               | 
               | https://github.com/lapauwThomas/QR_reader
               | 
               | Would be curious to see how it performs.
        
           | nayuki wrote:
           | Thanks, this is going to be a fun read. =)
        
         | lloydatkinson wrote:
         | This is the third request for datamatrix barcodes I've seen on
         | HN, Twitter, and Reddit today. What's going on?
        
           | amelius wrote:
           | I don't know about others, but I want to read Digikey
           | barcodes. They are in data-matrix format.
        
         | zwieback wrote:
         | The only one I've used is https://github.com/zxing/zxing, but
         | it was a long time ago. Seemed to work ok for DataMatrix.
        
           | gregsadetsky wrote:
           | zxing has an online decoder --
           | https://zxing.org/w/decode.jspx -- but I've seen it fail so
           | often that I'm wondering whether it's very "strict" / doesn't
           | account for image distortion that much?
           | 
           | Or does the web site use hardcoded settings that are more
           | tweakable in the library?
           | 
           | Huh, interesting -- zxing is in "Maintenance Mode Only":
           | https://github.com/zxing/zxing
           | 
           | I'd be suuuuper interested to know: what's the state of the
           | art in terms of QR decoding, both in terms of decoding speed,
           | amenability to various image distortions, and (which I've
           | always dreamed of) the ability to partially decode a QR code,
           | even if the error correction fails for some parts of it, or
           | even totally? i.e. a very very verbose debugging/decoding
           | mode?
        
           | ianlevesque wrote:
           | If you just want effective and free and don't care about
           | open, Google's is the best https://developers.google.com/ml-
           | kit/vision/barcode-scanning
           | 
           | Also depending on your application you could buy a hardware
           | scanner like
           | https://www.zebra.com/us/en/products/scanners/fixed-mount-
           | sc... for cheap secondhand since they are all over retail.
           | The protocol can be as simple as it "types" the barcode over
           | USB HID like a keyboard, or there are more specialized modes.
        
             | amelius wrote:
             | Google's barcode kit seems to be available only for Android
             | and iOS.
        
         | cameldrv wrote:
         | I wasn't able to find one for an important project and we ended
         | up having to go with a commercial library. The open source ones
         | were very unreliable.
        
           | gregsadetsky wrote:
           | Would you mind sharing which one? Did you look at a few / are
           | there good comparison articles?
        
             | cameldrv wrote:
             | We ended up using one from a company called 2D technology
             | group. They were the only one we found that supported ARM
             | Linux and did grading of codes.
        
             | jiehong wrote:
             | No OP, but I'm aware of a few:
             | 
             | - scandit: https://www.scandit.com/developers/
             | 
             | - cognex: https://cmbdn.cognex.com/
             | 
             | - aspose: https://products.aspose.com/barcode/
             | 
             | In open source, I heard of libdmtx[0], but not much happens
             | on it these days. I also saw html5-qrcode[1]
             | 
             | [0]: https://github.com/dmtx
             | 
             | [1]: https://github.com/mebjas/html5-qrcode, which directly
             | depends on a port of zxing to javascript.
        
               | gregsadetsky wrote:
               | Fascinating, thanks a lot for these.
               | 
               | Scandit and Cognex have iOS apps, and Aspose has a web
               | recognizer demo.
               | 
               | I tried all three with a 2D QR code (my vax card!) from
               | which I truncated ~2-3 bit-"rows" from the bottom. None
               | of the apps/site detected the code.
               | 
               | This is truly not a thorough test -- the 2D rows may be
               | more information-dense than I think i.e. they are not
               | recoverable using the built-in error correction
               | (basically I'm removing too much information -- the
               | equivalent of a long/deep scratch on a CD).
               | 
               | --
               | 
               | I'm just trying to get an intuitive sense of how much
               | damage a QR code can sustain and ... I guess if there's
               | such a thing as QR code forensics (there must be...??)
               | for decoding partial codes versus not detecting
               | "anything".
               | 
               | Thanks again for the links. Super interesting space
        
               | cameldrv wrote:
               | There are a lot more QR code libraries available, and
               | while they're conceptually very similar, the open source
               | DataMatrix libraries are much less developed and are far
               | less reliable.
        
       | jdblair wrote:
       | Bravo!
        
       | rebane2001 wrote:
       | On a similar note, I've been working on a QR code generator in
       | Minecraft using redstone (the in-game equivalent of circuits), it
       | has both been rather interesting and very painful to create.
       | Definitely a great way to gain experience. I'll probably finish
       | the project sometime this week.
        
         | barrettotte wrote:
         | Oh man I always wanted to build some insane things with
         | redstone, but never got around to diving in. I have a little
         | 4-bit architecture I'm working on so one day I can implement it
         | in Minecraft and/or Satisfactory.
         | 
         | I hope to see your creation sometime, that sounds awesome
        
       ___________________________________________________________________
       (page generated 2021-09-08 23:01 UTC)