• 検索結果がありません。

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

N/A
N/A
Protected

Academic year: 2021

シェア "GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)

GS1-128 の描画 DLL について

(ver. 2.3) 動作環境など 動作環境 WindowsXP、Windows Vista、Windows7、Windows8/8.1、Windows10 ※ 上記 OS について、すべて日本語版を対象としております。 ※ 32bit アプリケーションから呼び出される必要があります。 使用条件 プリンタの解像度 300dpi 以上 機能 ・バーコードの基本幅を 1 ドット単位で指定できる ・プリンタの解像度を考慮した補正機能により黒セルが太る場合に対応 ・43 桁の GS1-128 コードからチェックデジットの計算が出来る ・各種データ(メーカコード・会社コードなど)を指定することにより 44 桁の GS1-128 コードが 出来る 利用可能なメーカーコード 550056 企業負担 929023 企業負担 959879 顧客負担 929233 税 959881 料 959909 水道 929407 リアル

(2)

//外部DLLの呼び出し(Ean128_API) privatesealed classEan128_API

{

[DllImport("Ean128_API.dll", EntryPoint = "DrawEan128")]

publicstatic extern int DrawEan128(IntPtr hDC, int bTani, int bPointX, int bPointY, int bHeight, int bWidth, int bAdjust, string bEANCode);

[DllImport("Ean128_API.dll", EntryPoint = "MakeEanData")]

publicstatic extern int MakeEanData(StringBuilder eanBuffer, string eanMakerCD, string eanCompCD, string eanCode, string eanDueDate, int eanKingaku, int eanKijungaku,

string eanInsiflg);

[DllImport("Ean128_API.dll", EntryPoint = "CalCheckDigit")]

publicstatic extern int CalCheckDigit(StringBuilder Buffer, string EanCode); }

'外部DLLの呼び出し(Ean128_API)

Private NotInheritable Class Ean128_API

Public Declare Function DrawEan128 Lib "Ean128_API.dll" Alias "DrawEan128" (ByVal hDC As IntPtr, ByVal bTani As Integer, ByVal bPointX As Integer, ByVal bPointY As Integer, ByVal bHeight As Integer, ByVal bWidth As Integer, ByVal bAdjust As Integer, ByVal bEANCode As String) As Integer

Public Declare Function MakeEanData Lib "Ean128_API.dll" Alias "MakeEanData" (ByVal eanBuffer As StringBuilder, ByVal eanMakerCD As String, ByVal eanCompCD As String, ByVal eanCode As String, ByVal eanDueDate As String, ByVal eanKingaku As Integer, ByVal eanKijungaku As Integer, ByVal eanInsiflg As String) As Integer Public Declare Function CalCheckDigit Lib "Ean128_API.dll" Alias "CalCheckDigit" (ByVal Buffer As StringBuilder, ByVal EanCode As String) As Integer

End Class 'Ean128_API ■ API 連携方式

外部 DLL の呼び出し宣言

外部 DLL の呼び出し宣言のサンプルコード(Microsoft Visual C# .NET の場合) プログラムコードの先頭で

using System.Runtime.InteropServices; が必要。

クラスの内部に以下のような外部 DLL の呼び出し宣言を加える。

外部 DLL の呼び出し宣言のサンプルコード(Microsoft Visual Basic .NET の場合) クラスの内部に以下のような外部 DLL の呼び出し宣言を加える。

(3)

[既存事業者さま向け] DLL Ver2.3 利用時の留意事項 DLL の Ver2.3 において、「MakeEanData」関数の引数に「印紙フラグ」を追加しました。 すでに DLL をご利用の事業者さまにおかれまして、Ver2.3 の 「MakeEanData」関数をご利用の 際は、呼び出し宣言を行うメインプログラム(C#、C++、VB など)を修正のうえ、リコンパイルくださ いますようお願いいたします。 修正とリコンパイルは、引数「印紙フラグ」を使用しない場合も必要ですので、ご留意ください。 【「MakeEanData」関数の修正について】 ① 「MakeEanData」関数の宣言を行っている箇所を検索する。 ② 引数「印紙基準金額」の後ろに、引数「印紙フラグ」を追加する。 ③ リコンパイルを行う。

(4)

DrawEan128 44 桁の GS1-128 コードを受け取って目視文字付きバーコードを表示 目視文字はデバイスコンテキストに選択されているフォントを使用 引数 HDC バーコードを描画するデバイスコンテキストのハンドル long 表示位置・高さ・基本モジュール幅の単位 0 :物理座標(ピクセル) 1 :1/1000 インチ 2 :1/100mm long バーコード表示左位置 long バーコード表示上位置 long バーコード表示高さ long バーコード基本モジュール幅 long 解像度によるモジュール幅の調整を行うか否か 0 :調整を行わない 1 :調整を行う(解像度が 300 DPI 以下ならばスペースを 1 ドット 広げ、300 DPI を超えるならば、バーを 1 ドット狭める) 2 :調整を行う(解像度にかかわらずスペースを 1 ドット広げ、 かつ、バーを 1 ドット狭める) LPCSTR GS1-128 コード 戻り値 long エラーコード 0 :成功 8 :メモリ不足 87 :引数エラー 536870925:メーカコードエラー 536870924:試使用期限切れ 主要コードは以上ですが、ほかにもエラーコードあり ※バーコード下部のフォントサイズが変更できない場合は、サポートまでご連絡く ださい。

(5)

DrawEan128 利用のサンプルコード(Microsoft Visual C# .NET の場合)

注意:プログラムロジックにおいて、DrawEan128 関数より以前の処理でプリンタへの出力を何も 行っていない場合、上記サンプルにあるようなダミー出力が必要となります。

private System.Drawing.Printing.PrintDocument printDocument1;

'印刷作業

privatevoid printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {

StringBuilder bufCD = newStringBuilder(); int intErrCheck; int w_Tani; int w_PointX; int w_PointY; int w_Height; int w_Width; int w_Adjust; IntPtr w_hdc; string w_EanCD; //サンプルプログラム画面より取得した情報を関数パラメータにセット w_Tani = int.Parse(Tx_Tani.Text); w_PointX = int.Parse(Tx_PointY.Text); w_PointY = int.Parse(Tx_PointX.Text); w_Height = int.Parse(Tx_Height.Text); w_Width = int.Parse(Tx_Width.Text); w_Adjust = int.Parse(Tx_Adjust.Text); w_EanCD = Tx_EAN.Text; //ダミー出力

e.Graphics.DrawString("", printFont, Brushes.Black, 30, 30);

//関数呼び出し

intErrCheck = Ean128_API.DrawEan128(e.Graphics.GetHdc(), w_Tani, w_PointX, w_PointY, w_Height, w_Width, w_Adjust, w_EanCD); //印刷データの開放 e.Graphics.ReleaseHdc(); //戻り値判定 if (intErrCheck == 8) {

MessageBox.Show("Memory shortage"); //メモリ不足 }

elseif (intErrCheck == 87) {

MessageBox.Show("Argument Error"); //引数エラー }

elseif (intErrCheck == 536870925) {

MessageBox.Show("MakerCode Error"); //メーカコードエラー }

elseif (intErrCheck == 536870924) {

MessageBox.Show("Being out of Trial Period "); //試用期限切れ }

elseif (intErrCheck != 0) {

MessageBox.Show("Otherwise Error"); //その他のエラー }

}

////バーコード印字

privatevoid Command_exec_Click(object sender, EventArgs e) {

this.printDocument1.PrintPage += new

System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage); //結果印刷

this.printDocument1.Print(); }

(6)

DrawEan128 利用のサンプルコード(Microsoft Visual Basic .NET の場合)

注意:プログラムロジックにおいて、DrawEan128 関数より以前の処理でプリンタへの出力を何も 行っていない場合、上記サンプルにあるようなダミー出力が必要となります。

Private printDocument1 As System.Drawing.Printing.PrintDocument

'印刷作業

Private Sub printDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)

Dim bufCD As New StringBuilder() Dim intErrCheck As Integer Dim w_Tani As Integer Dim w_PointX As Integer Dim w_PointY As Integer Dim w_Height As Integer Dim w_Width As Integer Dim w_Adjust As Integer Dim w_EanCD As String

'サンプルプログラム画面より取得した情報を関数パラメータにセット w_Tani = Integer.Parse(Tx_Tani.Text) w_PointX = Integer.Parse(Tx_PointY.Text) w_PointY = Integer.Parse(Tx_PointX.Text) w_Height = Integer.Parse(Tx_Height.Text) w_Width = Integer.Parse(Tx_Width.Text) w_Adjust = Integer.Parse(Tx_Adjust.Text) w_EanCD = Tx_EAN.Text 'ダミーデータの出力

e.Graphics.DrawString("", printFont, Brushes.Black, 30, 30) '関数呼び出し

intErrCheck = Ean128_API.DrawEan128(e.Graphics.GetHdc(), w_Tani, w_PointX, w_PointY, w_Height, w_Width, w_Adjust, w_EanCD)

'プリントデータの開放 e.Graphics.ReleaseHdc() '戻り値判定

If intErrCheck = 8 Then

MessageBox.Show("Memory shortage") 'メモリ不足 ElseIf intErrCheck = 87 Then

MessageBox.Show("Argument Error") '引数エラー ElseIf intErrCheck = 536870925 Then

MessageBox.Show("MakerCode Error") 'メーカコードエラー ElseIf intErrCheck = 536870924 Then

MessageBox.Show("Being out of Trial Period ") '試用期限切れ ElseIf intErrCheck <> 0 Then

MessageBox.Show("Otherwise Error") 'その他のエラー End If

'結果印刷 End Sub

'印刷ボタン押下時

Private Sub Command_exec_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Command_exec.Click

'PrintPageイベントハンドラの追加

AddHandler printDocument1.PrintPage, AddressOf printDocument1_PrintPage '結果印刷

Me.printDocument1.Print() End Sub

(7)

MakeEanData 各項目データから 44 桁の GS1-128 コードを作成 引数 LPSTR 作成 GS1-128 コード格納バッファ(45 バイト) LPCSTR メーカーコード LPCSTR 企業コード LPCSTR コード LPCSTR 支払期限 long 金額 long 印紙基準金額 LPCSTR 印紙フラグ ※ Ver2.3 で追加 戻り値 long エラーコード 0 :成功 8 :メモリ不足 87 :引数エラー 97 :印紙フラグ設定エラー(0、1 以外) 536870925:メーカコードエラー 536870924:試使用期限切れ データは以下のように編集し、44 桁の GS1-128 コードを作成 ・ メーカーコードは 6 桁で設定。 ・ 支払期日がない場合、”999999”を設定。 ・ 支払期日が 5 桁の場合、システム時刻を基に先頭に 1 桁の数値を付加。 ・ 印紙フラグが 0 または 1 の場合、印紙基準金額、金額に関わらず、 印紙フラグをそのまま設定。 ・ 印紙フラグが未設定の場合、下記内容で印紙フラグを設定する。 ・印紙基準金額が-1 の場合、印紙フラグは’0’ ・印紙基準金額 =< 金額の場合、印紙フラグは’1’ ・印紙基準金額 > 金額の場合、印紙フラグは’0’

(8)

MakeEanData 利用のサンプルコード(Microsoft Visual C# .NET の場合) //EANコードの作成

private void EanGen_Click(object sender, EventArgs e) {

StringBuilder eanBuffer = new System.Text.StringBuilder(44); int intErrCheck = 0; int w_Amount = 0; int w_TaxBorder = 0; //サンプルプログラム画面より取得したバーコード情報を関数パラメータにセット w_Amount = int.Parse(Tx_Amount.Text); w_TaxBorder = int.Parse(Tx_TaxBorder.Text); //関数呼び出し

intErrCheck = Ean128_API.MakeEanData(eanBuffer, Tx_MakerCD.Text, Tx_CompCD.Text, Tx_KanyuCD.Text, Tx_PayDate.Text, w_Amount, w_TaxBorder, Tx_Insiflg.Text); //戻り値判定 if (intErrCheck == 8) { MessageBox.Show("Memory shortage"); //メモリ不足 } else if (intErrCheck == 87) { MessageBox.Show("Argument Error"); //引数エラー } else if (intErrCheck == 97) { MessageBox.Show("StampFlg Error"); //印紙フラグエラー } else if (intErrCheck == 536870925) { MessageBox.Show("MakerCode Error"); //メーカコードエラー } else if (intErrCheck == 536870924) {

MessageBox.Show("Being out of Trial Period "); //試用期限切れ } else if (intErrCheck != 0) { MessageBox.Show("Otherwise Error"); //その他のエラー } ////(結果表示)チェックデジット追加済みEANコードを表示 Tx_EAN.Text = eanBuffer.ToString(); }

(9)

MakeEanData 利用のサンプルコード(Microsoft Visual Basic .NET の場合) 'EANコードの作成

Private Sub EanGen_Click(ByVal sender As Object, ByVal e As EventArgs) Handles EanGen.Click

Dim eanBuffer = New System.Text.StringBuilder(44) Dim intErrCheck As Integer = 0

Dim w_Amount As Integer = 0 Dim w_TaxBorder As Integer = 0

'サンプルプログラム画面より取得したバーコード情報を関数パラメータにセット w_Amount = Integer.Parse(Tx_Amount.Text)

w_TaxBorder = Integer.Parse(Tx_TaxBorder.Text) '関数呼び出し

intErrCheck = Ean128_API.MakeEanData(eanBuffer, Tx_MakerCD.Text, Tx_CompCD.Text, Tx_KanyuCD.Text, Tx_PayDate.Text, w_Amount, w_TaxBorder, Tx_Insiflg.Text)

'戻り値判定

If intErrCheck = 8 Then

MessageBox.Show("Memory shortage") 'メモリ不足 ElseIf intErrCheck = 87 Then

MessageBox.Show("Argument Error") '引数エラー ElseIf intErrCheck = 97 Then

MessageBox.Show("StampFlg Error") '印紙フラグエラー ElseIf intErrCheck = 536870925 Then

MessageBox.Show("MakerCode Error") 'メーカコードエラー ElseIf intErrCheck = 536870924 Then

MessageBox.Show("Being out of Trial Period ") '試用期限切れ ElseIf intErrCheck <> 0 Then

MessageBox.Show("Otherwise Error") 'その他のエラー End If

'//(結果表示)チェックデジット追加済みEANコードを表示 Tx_EAN.Text = eanBuffer.ToString()

(10)

CalCheckDigit 43 桁の GS1-128 コードからチェックデジットを計算 引数 LPSTR チェックデジット文字の格納バッファ(2 バイト) LPCSTR GS1-128 コード 戻り値 long エラーコード 0 :成功 8 :メモリ不足 87 :引数エラー 536870925:メーカコードエラー 536870924:試使用期限切れ

(11)

CalCheckDigit 利用のサンプルコード(Microsoft Visual C# .NET の場合)

CalCheckDigit 利用のサンプルコード(Microsoft Visual Basic .NET の場合) ////43 桁のEan128 コードからチェックデジットを計算

private void CalCheckDigit_Click(object sender, EventArgs e) {

int intErrCheck;

StringBuilder buffer = newStringBuilder(); String eanCode = "";

//サンプルプログラム画面より取得した情報を関数パラメータにセット eanCode = Tx_EAN.Text;

//関数呼び出し

intErrCheck = Ean128_API.CalCheckDigit(buffer, eanCode); //戻り値判定

if (intErrCheck == 8) {

MessageBox.Show("Memory shortage"); //メモリ不足 }

else if (intErrCheck == 87) {

MessageBox.Show("Argument Error"); //引数エラー }

else if (intErrCheck == 536870925) {

MessageBox.Show("MakerCode Error"); //メーカコードエラー }

else if (intErrCheck != 0) {

MessageBox.Show("Otherwise Error"); //その他のエラー }

////計算したチェックデジットを追加 Tx_EAN.Text += buffer.ToString(); }

'//43 桁のEan128 コードからチェックデジットを計算

Private Sub CalCheckDigit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CalCheckDigit.Click

Dim intErrCheck As Integer

Dim buffer As New StringBuilder() Dim eanCode As [String] = ""

'サンプルプログラム画面より取得し情報を関数パラメータにセット eanCode = Tx_EAN.Text

'関数呼び出し

intErrCheck = Ean128_API.CalCheckDigit(buffer, eanCode) '戻り値判定

If intErrCheck = 8 Then

MessageBox.Show("Memory shortage") 'メモリ不足 ElseIf intErrCheck = 87 Then

MessageBox.Show("Argument Error") '引数エラー ElseIf intErrCheck = 536870925 Then

MessageBox.Show("MakerCode Error") 'メーカコードエラー ElseIf intErrCheck <> 0 Then

MessageBox.Show("Otherwise Error") 'その他のエラー End If

'//計算したチェックデジットを追加 Tx_EAN.Text += buffer.ToString() End Sub

(12)

変更履歴

発行日 バージョン

第1版 2001.10.30 1.0 初期リリース

第2版 2017.02.28 2.2 新メーカーコード対応

参照

関連したドキュメント

SVF Migration Tool の動作を制御するための設定を設定ファイルに記述します。Windows 環境 の場合は「SVF Migration Tool の動作設定 (p. 20)」を、UNIX/Linux

問題はとても簡単ですが、分からない 4人います。なお、呼び方は「~先生」.. 出席について =

(ページ 3)3 ページ目をご覧ください。これまでの委員会における河川環境への影響予測、評

(※)Microsoft Edge については、2020 年 1 月 15 日以降に Microsoft 社が提供しているメジャーバージョンが 79 以降の Microsoft Edge を対象としています。2020 年 1

(Sexual Orientation and Gender

地下水採取等対象物 質と地下水採取を行う

という熟語が取り上げられています。 26 ページ

№3 の 3 か所において、№3 において現況において環境基準を上回っている場所でございま した。ですので、№3 においては騒音レベルの増加が、昼間で