1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PC接続バーコードリーダ+GS1バーコード読取における、ドキュメント紹介および読取実装例(vue)

Posted at

背景

GS1バーコードは広く採用されているバーコードの規格である。日本におけるJANコード(GTINコード)を内包している(もしかしたら内包していないケースもあるかも知れないが、見たことがない)。
本記事ではGS1Japanのサイトを主に引用しつつ

  • そもそものGS1コードの話
  • PC接続+キーボード入力系バーコードリーダでの読込、仕様・実装的な話

上記を纏める。

編集日:2021/05/17

そもそもGS1コードとは

GS1事業者コードは、JANコードやGLNなどの国際標準の識別コード(GS1識別コード)を設定するために必要な番号です。
JANコードは「どの事業者の、どの商品か」を表す、世界共通の商品識別番号です。
JANコードは、商品のブランドを持つ事業者が、当財団から貸与されたGS1事業者コードを用いて、商品ごとに設定します。
JANコードとJANシンボルは世界共通の仕組みであり、多くの国で使用されています。
JANコードは日本国内での呼び方です(JANとはJapaneseジャパニーズ Articleアーティクル Numberナンバーの略)。
国際的にはEANイアン(Europeanヨーロピアン Articleアーティクル Numberナンバー)コード、あるいは、GTINジーティン-13、GTIN-8と呼ばれます。(「GTIN」参照)

GS1コードの中にGTINコードなどが入ってくるイメージとなる。

GS1コードはどのように各コードを判別している?

各コードの先頭にGS1アプリケーション識別子を結合し
読取時にて先頭数文字を用いてどのコードであるかを判別する。

GS1アプリケーション識別子

より引用

GS1アプリケーション識別子とは
GS1が標準化した、さまざまな情報の種類とフォーマット(データの内容、長さ、および使用可能な文字)を管理する2桁から4桁の数字のコードです。商品製造日、ロット番号などのデータの先頭に付けて使用します。アプリケーション識別子は、英語名称のApplication(アプリケーション) Identifier(アイデンティフィァー)の頭文字をとって、AI(エーアイ)とも呼ばれます。AIを使うと、商品識別コードやさまざまな属性情報を、どこの誰とどのシステムとの間でも共通化された方式で、バーコード化して伝達することができます。
  • AI一覧表

AI一覧表にはGTINコードのように14文字 固定 のものから、ロット番号など 可変長 のものまである。

可変長のモノを読み取るにはどのようにしている?

  • AIを正しく実装するためのポイント(プリンター、スキャナーメーカー様向け)

より引用

2.重要な制御記号FNC1(ファンクション1)
FNC1(ファンクション1)は、AIをGS1標準シンボルに表現する際に重要な役割を果たす制御記号です。目視文字には表さないため、通常はユーザーに認識されない部分ですが、GS1標準シンボルを正しく表現し、正確なデータをシステムに取り込むために不可欠の機能です。 FNC1には2つの役割があり、使われる位置によって機能が異なります。

1)シンボルの先頭:そのシンボルが表現するデータがGS1標準のデータであることを示す
 独自フォーマットのデータや、ANSIなど他の標準のデータと区別するために使用します。

2)シンボルの途中:FNC1の直前の可変長データの終了(区切り)を示す
 可変長データの後ろに他のデータが続く場合に、可変長データの項目区切りとして使用されます。
 なお、固定長のデータの終了時には、FNC1は必要ありません。

すなわち、 可変長データの末尾には「FNC1」なるデータを設定 し、 データが終了しているかを判別 する。

バーコードリーダ読込時

バーコードをバーコードリーダで読込、取得したデータを入力してもらうことで
文字データとして出力することが出来る。

この時留意したほうが良いことは、一般的なPC接続して利用するバーコードリーダの場合は、 「バーコードリーダ入力≒キーボード入力」 ということ。
我々がキーボードを入力するのと同じく、バーコードリーダも入力する。
よって、基本は

1:あり得るAIを列挙
2:合致したAIが固定長なら固定長取得、可変長なら可変長データ末尾を判別し取得
3:バーコード自体の末尾でなければ1に戻る、末尾ならば終了

となると考える。この「可変長なら可変長データ末尾を判別し取得」を後述する。

FNC1・GS

まず、可変長データ末尾として設定されるFNC1自体はキーボード入力として書き込まれない。
一般的なバーコードリーダは、設定によってFNC1部分を[GS(グループセパレータ)]として出力することができる。

設定手法はバーコードリーダ機種によるが、概ね「Code128」の「GS送信あり」「UCC/EA1-128読み取りあり」と設定すればOKか?

上記の^] 29の部分。
ここで問題なのは^]という文字が入力される わけではない
コレは Ctrl + ]とキーを叩いている。

以下のように実装し動作を確認した。insertGSの詳細コードは記載しない。

// vueでの書き方。キーボードがCtrlを押しながら221(])を押した場合、処理が走るようにする。
// どのように実装するか次第だが、置換用の文字列を追加して元値に返すイメージが安定するだろうか。
          @keydown.ctrl.221="insertGS"
// バーコードリーダ出力の違いか、PCキーボード出力の違いか、
// 上記以外にもCtrl+219([)のケースでGSが出力されるケースがあるらしい。ソレもキャッチする。
          @keydown.ctrl.219="insertGS"

GS1バーコードから外れたvue実装の余談

vueにて実装する時は上記のキー修飾子を参考にしたが、

keyCode イベントの使用は 非推奨 で、新しいブラウザではサポートされない可能性があります。

とある。同じ挙動が出来て推奨されているイベントがあれば良いのだが…

終わりに

本記事の内容には「一般的」と書いたように、バーコードリーダ自体でも様々な種類が存在する。
あくまでも「こういうドキュメントがあるよ」「こういう例があるよ」ぐらいの参考になれば幸い。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?