
MSI ( Modified Plesseyとも呼ばれる)は、MSI Data CorporationがオリジナルのPlessey Codeシンボルに基づいて開発したバーコードシンボルです。連続シンボルであり、自己チェック機能はありません。MSIは主に在庫管理、倉庫環境における保管容器や棚のマーキングに使用されます。
文字セットとバイナリ検索
MSI バーコードは 0 ~ 9 の数字のみを表し、文字や記号はサポートしていません。
各桁は4つの2進化10進ビットに変換されます。その後、先頭に1ビット、末尾に2ビットの0が付加されます。
最後に、各ビットは合計3モジュール幅のバー/スペースのペアとして印刷されます。0ビットは1/3バーと2/3スペースで表され、1ビットは2/3バーと1/3スペースで表されます。
バイナリマッピング
各数字とガード文字は、次の表に示すように 2 進数で表されます。
| キャラクター | バイナリ | バー | 地図 |
|---|---|---|---|
| 始める | 1 | ▋ | 110 |
| 0 | 0000 | ▍▍▍▍ | 100100100100 |
| 1 | 0001 | ▍▍▍▋ | 100100100110 |
| 2 | 0010 | ▍▍▋▍ | 100100110100 |
| 3 | 0011 | ▍▍▋▋ | 100100110110 |
| 4 | 0100 | ▍▋▍▍ | 100110100100 |
| 5 | 0101 | ▍▋▍▋ | 100110100110 |
| 6 | 0110 | ▍▋▋▍ | 100110110100 |
| 7 | 0111 | ▍▋▋▋ | 100110110110 |
| 8 | 1000 | ▋▍▍▍ | 110100100100 |
| 9 | 1001 | ▋▍▍▋ | 110100100110 |
| 停止 | 00 | ▍▍ | 1001 |
このマップからバーコード イメージを作成するには、数字 1 を黒いバー、数字 0 を白いバーと見なし、それに応じてイメージを作成するだけです。
チェックディジットの計算
MSI バーコードでは、チェック ディジットを計算するために 5 つの方式のいずれかを使用します。
- チェックディジットなし(最も一般的ではない)
- Mod 10(最も一般的)
- モッド11
- モッド1010
- モッド1110
Mod 10 チェックデジット
Mod 10 チェック ディジット アルゴリズムを使用すると、エンコードされる文字列 1234567 はチェック ディジット 4 で印刷されます。
12345674
Mod 10チェックディジットアルゴリズム [ 1 ]はLuhnアルゴリズム を使用する。
Mod 11 チェックディジット
1. エンコードする文字列を逆にします (この場合は 1234567)。
Sをエンコードする文字列の逆とする S = 7654321
2. 次に、文字列は繰り返し重み付け係数パターンを用いて「重み付け」されます。異なる繰り返し重み付け係数パターンを用いるモジュロ11アルゴリズムが2つあります。IBMアルゴリズムは(2,3,4,5,6,7)を使用し、NCRアルゴリズムは(2,3,4,5,6,7,8,9)を使用します。各文字をループ処理して文字列の合計を求め、その文字の位置に応じて2~7(IBM)または2~9(NCR)の重みを掛けます。重みの値が最大値(7または9)を超えた場合は、重みを2に戻します。
この例では、重み付けパターン(2,3,4,5,6,7)のIBMモジュロ11アルゴリズムを使用しています。 X をエンコードする文字列の最終積とします。 X = 7 * 2 X = 6 * 3 X = 5 * 4 X = 4 * 5 X = 3 * 6 X = 2 * 7 X = 1 * 2
X = 14 + 18 + 20 + 20 + 18 + 14 + 2 X = 106
3. 合計を 11 で mod し、その結果を 11 から減算して、mod 11 関数を再度適用します。
C をチェック数字と等しくします。 C = (11 - (X mod 11)) mod 11 C = (11 - (106 mod 11)) mod 11 C = (11 - 7) を 11 で割ったもの C = 4 ÷ 11 C = 4
チェックディジットは4です。
Mod 1010 チェックディジット
最初に Mod 10 チェック ディジットを計算し、次に前回の結果を使用して再度計算し、2 回目の Mod 10 計算の結果をエンコードする文字列に追加するだけです。
Mod 1110 チェックディジット
Mod 1010 と同じですが、最初の計算は Mod 11 チェック ディジットにする必要があります。
例
例として、最も一般的な Mod 10 チェック ディジット方式を使用して、数字シーケンス 1234567 の MSI バーコードを生成します。
このシーケンスのチェック ディジット (上記で計算したとおり) は 4 です。
チェック デジットを計算したら、上の表を参考にしてエンコードする文字列の各文字をマッピングし、バーコードのバイナリ マップを取得します。コードの前に「start」を付け、最後に「stop」を付けることを忘れないようにしてください。たとえば、文字列 1234567 を Mod 10 チェック デジットでマッピングすると、次のバイナリ マップが生成されます。
| キャラクター | 地図 | コメント |
|---|---|---|
| 始める | 110 | 開始文字 |
| 1 | 100100100110 | 1番 |
| 2 | 100100110100 | 数字の2 |
| 3 | 100100110110 | 数字の3 |
| 4 | 100110100100 | 数字の4 |
| 5 | 100110100110 | 数字の5 |
| 6 | 100110110100 | 6という数字 |
| 7 | 100110110110 | 7という数字 |
| 4 | 100110100100 | チェックディジット4 |
| 停止 | 1001 |
結果として次のバーコードが生成されます。

参考文献
外部リンク
- バーコードアイランド: MSI 、 2021年1月31日時点のオリジナルよりアーカイブ