mrubyでQRCode

  • 0
    Like
  • 0
    Comment

    mrubyでQRCodeを表示するためのgemを作ってみました。

    https://github.com/yamori813/mruby-qrcode

    使い方は簡単で文字列をmruby-packを使って配列にして、クラスメソッドのencodeに渡します。

    txt = "MORI MORI QRCode"
    qr = QRCode.encode(0, 1, txt.unpack("C*"))
    

    でqrコードのビットパターンの配列が返ってきます。

    第一引数がLevelで0から4で第二引数がVersionで第三引数がエンコードするデータの配列です。

    漢字の場合はmruby-nkfででSJISにします。

    sjis = NKF.nkf('-s', txt).unpack("C*")
    

    mruby-cairoで液晶に表示してみました。

        wnnsjis = NKF.nkf('-s', wata + naka).unpack("C*")
        qr = QRCode.encode(0, 2, wnnsjis)
        offx = (128 - (25 * 2)) / 2
        offy = 80
        c.set_source_rgb(0, 0, 0)
        for n in 0..24 do
          for m in 0..24 do
            if qr[n * 25 + m] == 1 then
              c.rectangle(m*2+offx, n*2+offy, 2, 2)
              c.fill()
            end
          end
        end
        lcd.write_cmd([0x2C])
        lcd.copyspi(c)
    

    写真(2017-06-17 17.21) #2.jpg

    SJISでゴメンね>栗林さん

    コアの部分はサイテックさんが公開されているコードを利用させてもらいました。ありがとうございます。

    mruby-qrcodeはFreeBSDで作りましたが、特にOS依存はないはずなので、他のプラットフォームでも使えると思います。