ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE CODE39描画(V0.10) /SWinX (02/04/06(Sat) 03:06) [715]
......MESSAGE わぉー /のえる (02/04/06(Sat) 18:02) [718]
............MESSAGE JANコード? /moka (02/04/06(Sat) 18:49) [719]
..................MESSAGE あれはJANコードだったんですか /のえる (02/04/06(Sat) 23:38) [720]
......MESSAGE JANCODE描画(V0.10) /SWinX (02/04/10(Wed) 02:15) [735]
............MESSAGE バーコード要望? /クジラ飛行机 (02/05/03(Fri) 14:43) [842]


親記事 / ▼[ 718 ] ▼[ 735 ]
NO.715  CODE39描画(V0.10)
□投稿者/ SWinX -(2002/04/06(Sat) 03:06:03)
□U R L/
{CODE39描画}
{---プログラム掲示板投稿フォーム---
【ソフト名】CODE39描画 (バージョン 0.10)
【作 成 者】SWinX (連絡先:swinx@plala.to)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.37
【転  載】可(転載条件:ご自由にどうぞ)
【改変運用】可
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】WEBで検索して規格を見つけたので、作ってみました。
でも、バーコードリーダーなんて持ってません。
…どなたか、印刷して読み込みの確認をしていただけないでしょうか(笑)
参考文献:バーコードホームページ/日栄インテック(株)
http://www.barcode.ne.jp/barcode/code-39.html
---投稿フォームここまで---}
母艦の、タイトルは、「CODE39描画」。
肌色で、画面クリア。
CODE39=「0=NnNwWnWnN,0
1=WnNwNnNnW,1
2=NnWwNnNnW,2
3=WnWwNnNnN,3
4=NnNwWnNnW,4
5=WnNwWnNnN,5
6=NnWwWnNnN,6
7=NnNwNnWnW,7
8=WnNwNnWnN,8
9=NnWwNnWnN,9
A=WnNnNwNnW,10
B=NnWnNwNnW,11
C=WnWnNwNnN,12
D=NnNnWwNnW,13
E=WnNnWwNnN,14
F=NnWnWwNnN,15
G=NnNnNwWnW,16
H=WnNnNwWnN,17
I=NnWnNwWnN,18
J=NnNnWwWnN,19
K=WnNnNnNwW,20
L=NnWnNnNwW,21
M=WnWnNnNwN,22
N=NnNnWnNwW,23
O=WnNnWnNwN,24
P=NnWnWnNwN,25
Q=NnNnNnWwW,26
R=WnNnNnWwN,27
S=NnWnNnWwN,28
T=NnNnWnWwN,29
U=WwNnNnNnW,30
V=NwWnNnNnW,31
W=WwWnNnNnN,32
X=NwNnWnNnW,33
Y=WwNnWnNnN,34
Z=NwWnWnNnN,35
-=NwNnNnWnW,36
.=WwNnNnWnN,37
=NwWnNnWnN,38
$=NwNwNwNnN,39
/=NwNwNnNwN,40
+=NwNnNwNwN,41
%=NnNwNwNwN,42
*=NwNnWnWnN,」
X=2         //エレメント幅=細線の幅(>0.191mm)
N=2.5      //太・細エレメント比(1:2.2〜3.0)
W=INT(X*N)   //太線の幅
I=X         //キャラクタ間ギャップ(1X〜3X)
Q=6*X+3*W   //クワイエットゾーン
H=63      //シンボル高さ(6.35mmまたはシンボルの15%)

(0,100)に、移動。
変換元文字列ラベルを、ラベルとして、作成。
(その、右側)に、変換元文字列エディタを、エディタとして、作成。
その、幅は、200。
(その、右側)に、バーコード描画ボタンを、ボタンとして、作成。
その、イベントは、バーコード描画。
(その、右側)に、クリアボタンを、ボタンとして、作成。
その、有効は、オフ。
その、イベントは、バーコード破壊。
画像保存ボタンを、ボタンとして、作成。
その、有効は、オフ。
その、イベントは、画像保存。
(その、右側)に、表示ラベルを、ラベルとして、作成。
その、テキストは、「」。
その、幅は、200。
変換元文字列エディタに、注目。
待機。

*バーコード描画
それ=変換元文字列エディタ。
チェックサム追加。
C=文字数。
(0,0)に、CODE39イメージを、イメージとして、作成。
その、高さは、H。
その、幅は、(C*(6*X+3*W)+(C-1)*I+2*Q)。
表示ラベル=それ。
バー文字に変換。
'表示。
バー描画。
バーコード描画ボタンの、有効は、オフ。
画像保存ボタンの、有効は、オン。
クリアボタンの、有効は、オン。
戻る。

*バーコード破壊
CODE39イメージの、オブジェクト破壊。
バーコード描画ボタンの、有効は、オン。
画像保存ボタンの、有効は、オフ。
クリアボタンの、有効は、オフ。
戻る。

*画像保存
ダイアログキャンセルの値=「キャンセル」
「PNGイメージ|*.PNG|BMPイメージ|*.BMP」の、書込ファイル選択。
もし、それ=ダイアログキャンセルの値ならば、戻る。
それへ、CODE39イメージを、イメージ保存。
戻る。

*チェックサム追加
コード合計=0。
対象文字列=それ。
変換後文字列=「*」
文字数。
それ回(
   対象文字列の中で、回数から、1つ、MID。
   大文字変換。
   コード=CODE39の、それ。
   もし、コード=「」ならば、「{それ}は、CODE39では表せません」と、言う。
   違えば、(
      コード合計=コード合計+コード#1#0
      変換後文字列=変換後文字列&それ
   )。
)。
コード合計と、43の、余り。
それ=CODE39#それ。
それ=変換後文字列&LEFT(それ、1)&「*」。
戻る。

*バー文字に変換
コード文字=「q」。
対象文字列=それ。
文字数。
それ回(
   対象文字列の中で、回数から、1つ、MID。
   コード=CODE39の、それ。
   もし、コード<>「」ならば、コード文字=コード文字&コード#0#0&「i」。
)。
コード文字から、1文字、右端を切り取る。
それ=コード文字&「q」
戻る。

*バー描画
PX=0
ペン太さ=1。
対象文字列=それ。
文字数。
それ回(
   対象文字列の中で、回数から、1つ、MID。
   条件分岐。
      「q」の時、(
         ペン色=白色。塗り色=白色。
         CODE39イメージの、(PX,0)から、(PX+Q,H)へ、四角形描画。
         PX=PX+Q。
      )。
      「i」の時、(
         ペン色=白色。塗り色=白色。
         CODE39イメージの、(PX,0)から、(PX+I,H)へ、四角形描画。
         PX=PX+I。
      )。
      「W」の時、(
         ペン色=黒色。塗り色=黒色。
         CODE39イメージの、(PX,0)から、(PX+W,H)へ、四角形描画。
         PX=PX+W。
      )。
      「w」の時、(
         ペン色=白色。塗り色=白色。
         CODE39イメージの、(PX,0)から、(PX+W,H)へ、四角形描画。
         PX=PX+W。
      )。
      「N」の時、(
         ペン色=黒色。塗り色=黒色。
         CODE39イメージの、(PX,0)から、(PX+X,H)へ、四角形描画。
         PX=PX+X。
      )。
      「n」の時、(
         ペン色=白色。塗り色=白色。
         CODE39イメージの、(PX,0)から、(PX+X,H)へ、四角形描画。
         PX=PX+X。
      )。
)。
戻る。



▲[ 715 ] / ▼[ 719 ]
NO.718  わぉー
□投稿者/ のえる -(2002/04/06(Sat) 18:02:25)
□U R L/ http://members.tripod.co.jp/~my_tears/
SWinXさん、すごいなぁ。
参考URLも見させていただいたんだけど、なんか、専門用語が???って感じでした。

しかし、とっても、それっぽいですね。
コンビニで、アルバイトしている人とか、試してくれないかなぁ(^−^。



▲[ 718 ] / ▼[ 720 ]
NO.719  JANコード?
□投稿者/ moka -(2002/04/06(Sat) 18:49:00)
□U R L/ http://www.geocities.jp/moka21/teatime/
わ、そういえば私、コンビニでバイトしてます。(笑)

試しに手元の商品のJANコード(?)を入力して
バーコード化しましたが、実際とは違うようです。
バーコードの元の文字列は何なんだろう。



▲[ 719 ] / 返信無し
NO.720  あれはJANコードだったんですか
□投稿者/ のえる -(2002/04/06(Sat) 23:38:15)
□U R L/ http://members.tripod.co.jp/~my_tears/
mokaさん、こんばんは。
ロストワールド見てました(^−^。

あー、一般小売品のコードはJANコードなんですねー。
じゃぁ、無理でした。

ちなみに、JANコードについては、SWinXさんの参考ページの、別ページ
http://www.barcode.ne.jp/barcode/jan.html
でどうぞ。

だれか、これを、ひまわりで書いて、ためしてくれないかなぁ(^−^。
いや、面白そうと言うだけなんだけど(*^−^*)
しかし、CODE39は、どこで使われているんでしょうか?
バーコードに、こんなに規格があったとは...。
2次元バーコードも面白そうね。



▲[ 715 ] / ▼[ 842 ]
NO.735  JANCODE描画(V0.10)
□投稿者/ SWinX -(2002/04/10(Wed) 02:15:34)
□U R L/
{JANCODE描画}
{---プログラム掲示板投稿フォーム---
【ソフト名】JANCODE描画 (バージョン 0.10)
【作 成 者】SWinX (連絡先:swinx@plala.to)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.38
【転  載】可(転載条件:ご自由にどうぞ)
【改変運用】可
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】CODE39描画の姉妹品です。簡単かと思ったら、そうでもなかった…
JANコードは身の回りの商品には大抵ついてますから、なじみがありますね。
ためしに適当な商品のコードを入力して、出来たバーコードを見比べてみました。
…大体同じよーな絵が出来たので、よしとしますか(笑)
・13文字で普通サイズ、8文字で短縮サイズになります。
・半角スペースは読み飛ばします。
・1文字少なく入力すると、チェックサムを自動補完します。
参考文献:バーコードホームページ/日栄インテック(株)
http://www.barcode.ne.jp/barcode/jan.html
---投稿フォームここまで---}
JAN_O=「3211\n2221\n2122\n1411\n1132\n1231\n1114\n1312\n1213\n3112」。
JAN_E=「」。
JAN_Oを、反復(
   「s/([1-4])/$1\n/g」で、正規表現置換。
   逆にする。
   「\n」を、「」に、置換。
   JAN_E=JAN_E&それ&「\n」。
)
プリフィックス=「OOOOOO\nOOEOEE\nOOEEOE\nOOEEEO\nOEOOEE\nOEEOOE\nOEEEOO\nOEOEOE\nOEOEEO\nOEEOEO」。
X=4         //モジュール幅=細線の幅(>0.191mm)
H=266      //バーコードの高さ
H1=224      //バー本体の高さ
H2=245      //ガイドバーの高さ

*インタフェース作成
母艦の、タイトルは、「JANコード描画」。
肌色で、画面クリア。
(0,270)に、移動。
変換元文字列を、ラベルとして、作成。
(その、右側)に、変換元文字列エディタを、エディタとして、作成。
その、幅は、200。
(その、右側)に、バーコード描画ボタンを、ボタンとして、作成。
その、イベントは、バーコード描画。
(その、右側)に、クリアボタンを、ボタンとして、作成。
その、有効は、オフ。
その、イベントは、バーコード破壊。
画像保存ボタンを、ボタンとして、作成。
その、有効は、オフ。
その、イベントは、画像保存。
(その、右側)に、表示ラベルを、ラベルとして、作成。
その、テキストは、「」。
その、幅は、200。
変換元文字列エディタに、注目。
待機。

*バーコード描画
文字列=変換元文字列エディタ。
文字チェック。
C=文字数。
(0,0)に、JANイメージを、イメージとして、作成。
その、高さは、H。
その、幅は、(17+コード長*16)*X。
表示ラベル=それ。
バー文字に変換。
バー描画。
バーコード描画ボタンの、有効は、オフ。
画像保存ボタンの、有効は、オン。
クリアボタンの、有効は、オン。
戻る。

*バーコード破壊
JANイメージの、オブジェクト破壊。
バーコード描画ボタンの、有効は、オン。
画像保存ボタンの、有効は、オフ。
クリアボタンの、有効は、オフ。
戻る。

*画像保存
ダイアログキャンセルの値=「キャンセル」
「PNGイメージ|*.PNG|BMPイメージ|*.BMP」の、書込ファイル選択。
もし、それ=ダイアログキャンセルの値ならば、戻る。
それへ、JANイメージを、イメージ保存。
戻る。

*文字チェック
入力コード=「」。
文字列の、文字数。
それ回(
   文字列の中で、回数から、1つ、MID。
   対象は、それ。
   数字か。
   もし、それならば、入力コード=入力コード&対象。
   違えば、(
      もし、対象≠「 」ならば、「{対象}はJANコードには使えません」と、言う。
   )
)
入力コードの、文字数。
条件分岐。
   13の時、(コード長=6。入力コードから、1文字、右端を切り取る。)
   12の時、(コード長=6。それ=-1。)
   8の時、(コード長=4。入力コードから、1文字、右端を切り取る。)
   7の時、(コード長=4。それ=-1。)
   その他の時、(「JANコードは13桁または8桁の数字で入力してください」と、言う。戻る。)
チェック値=それ。

*チェック値を計算
合計値=220
もし、コード長=4ならば、対象=「0」&入力コード。
違えば、対象=入力コード。
コード長回(
   対象の中で、(回数*2-1)から、1つ、MID。
   合計値=合計値-それ
   対象の中で、(回数*2)から、1つ、MID。
   合計値=合計値-それ*3
)
合計値と、10の、余り。
もし、チェック値=-1ならば、チェック値=それ。
違えば、(
   対象=それ。
   もし、対象≠チェック値ならば、「チェックサムエラーです。\n{チェック値}→{対象}\n修正しますか?」と、二択。
   もし、それならば、チェック値=対象。
)
入力コード=入力コード&チェック値。
対象=「 」。
もし、コード長=6ならば、(
   入力コードから、1文字、左端を切り取る。
   対象=それ。
)
入力コードから、コード長文字、左端を切り取る。
それ=「{対象},{それ},{入力コード}」
戻る。

*バー文字に変換
JANコードは、それ。//数字表示用に保存
「,」で、区切る。
パリティ=それ#0。
JANコード左=それ#1。JANコード右=それ#2。
{レフトマージンとレフトガードを記入}
もし、パリティ=「 」ならば、(パリティ=「OOOO」。コード文字=「mb」。)
違えば、(パリティ=プリフィックス#パリティ。コード文字=「Mb」。)

JANコード左の、文字数。
それ回(
   JANコード左の中で、回数から、1つ、MID。
   対象は、それ。
   パリティの中で、回数から、1つ、MID。
   「コード文字=コード文字&(JAN_{それ}#対象)。」を、ひまわりする。
)
コード文字=コード文字&「1b1」。 //センターバーを記入
JANコード右の、文字数。
それ回(
   JANコード右の中で、回数から、1つ、MID。
   コード文字=コード文字&(JAN_O#それ)。
)
コード文字=コード文字&「bm」。 //ライトガードとライトマージンを記入
それ=JANコード&「\n」&コード文字。
戻る。


*バー描画
文字コード=それ#1。

文字色=黒色。文字サイズ=40。
もし、それ#0#0=「 」ならば、PX=40。違えば、PX=6。
「,」を、「 」に、置換。トリム。
JANイメージの、(PX,H1-4)へ、(それ#0)と、文字描画。


ペン太さ=1。
PX=0。
黒で描画=いいえ。

文字コードの、文字数。
それ回(
   色設定。
   文字コードの中で、回数から、1つ、MID。
   条件分岐。
      「M」の時、(JANイメージの、(PX,0)から、(PX+11*X,H1)へ、四角形描画。PX=PX+11*X。)
      「m」の時、(JANイメージの、(PX,0)から、(PX+7*X,H1)へ、四角形描画。PX=PX+7*X。)
      「b」の時、(JANイメージの、(PX,0)から、(PX+3*X,H2)へ、四角形描画。
               ペン色=白色。塗り色=白色。
               JANイメージの、(PX+X,0)から、(PX+2*X,H2)へ、四角形描画。PX=PX+3*X。)
      その他の時、(JANイメージの、(PX,0)から、(PX+それ*X,H1)へ、四角形描画。PX=PX+それ*X。)
   黒で描画=NOT(黒で描画)。
)
戻る。

*色設定
もし、黒で描画ならば、(ペン色=黒色。塗り色=黒色。)
でなければ、(ペン色=白色。塗り色=白色。)
戻る。



▲[ 735 ] / 返信無し
NO.842  バーコード要望?
□投稿者/ クジラ飛行机 -(2002/05/03(Fri) 14:43:36)
□U R L/
(^v^)ども。
亀レスですみません。

JACODEが刷れるってすごいですね。
しかも、チェックサムの自動補完(!)
確かに、この手のものって、チェックサムがあるんですよね。

ところで、
郵便局のページ(http://www.post.yusei.go.jp/
郵便番号を、バーコードで出力するってのがありまして、
http://www.post.yusei.go.jp/newnumber/barcode.htm

こちらは、画像ファイルがあって、かなり、簡単?かもですが、
これも、出来ると、完璧?かもです。



- Child Tree -