LoginSignup
0
0

mrubyでQRCode

Last updated at Posted at 2017-06-17

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

後日追記:すでに作られていた方がいらっしゃいました。そちらは画像を返すmrbgemのようですが、こちらは画像処理が入っていないmrbgemになります。

使い方は簡単で文字列を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)
    bs = 2
    offx = (128 - (25 * bs)) / 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*bs+offx, n*bs+offy, bs, bs)
          c.fill()
        end
      end
    end
    lcd.write_cmd([0x2C])
    lcd.copyspi(c)

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

SJISでゴメンね>K林さん

c++のコードを使っているので実行にはc++のライブラリが必要になります。

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0