API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

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

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

プロセス間通信

VB.NET解説

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

ウィンドウ操作 応用

Microsoft Word - DT-5100Lib_Manual_DotNet.doc

ファイル操作-インターネットキャッシュ

プリンタ印字用 DLL 取扱説明書


スレッド操作 タイマー

ICONファイルフォーマット

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

データアダプタ概要

印刷

VFD256 サンプルプログラム

DPC-0401

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

グラフィックス

アプリケーション


バスケットボール

FBWFMemoryWatcher

ファイル操作-バイナリファイル

3軸加速度センサーモジュール MM-2860 書込み済みマイコンプログラム通信コマンド概要

ファイル監視

1. 入力画面

ファイル操作

プレポスト【問題】

Msako技術資料 

Android Layout SDK プログラミング マニュアル

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

UIOUSBCOM.DLLコマンドリファレンス

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

GPC-6105

PowerPoint プレゼンテーション

DAOの利用

ルーレットプログラム

PowerPoint プレゼンテーション


<4D F736F F D20B6BCB5D7B2CCDED7D8CFC6ADB1D9315F43532E444F43>

DPC-0244

Microsoft Word - SREX_SDK2_R31.doc

BPC-0821 Help for Windows

Javaプログラムの実行手順

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

ExcelVBA

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

untitled

プログラミング基礎I(再)

正規表現応用

FSUx-SDK2

sinfI2005_VBA.doc

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

チア ダンス

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

NotifyIconコントロール

構造体

AquesTalk Mac マニュアル

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

ブロック パニック

Microsoft Word 練習問題の解答.doc

AquesTalk for WinCE プログラミングガイド

AquesTalk プログラミングガイド

C#の基本


目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

MISAO with WPF

デジタル表現論・第4回

Microsoft PowerPoint ppt

ListViewコントロール

構造体

Android プログラム ガイド

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

TestDesign for Web

データを TreeView コントロールで表示 VisualStudio2017 の Web サイトプロジェクトで bootstrap, 及び script フォルダの js ファイルが使用できるマスターページを親とする TestTreeView.aspx ページを作成します 下記の html コー

かべうちテニス

AquesTalk Win Manual

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

CONTEC DIOプロバイダ ユーザーズガイド

ブロック崩し風テニス

Microsoft Word - VB.doc

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

目次 目次... 1 はじめに... 3 概要... 4 サポート環境... 5 関数... 6 MEC_OpenDevice... 7 MECDevice_Release... 8 MECDevice_GetFirmVersion... 9 MECDevice_GetCoreTemperature

スライド 1

プロシード

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

システム監視ライブラリ

3D回転体プログラム

@(h) Select.vb ver 1.1 ( Select.vb ver 1.0 ( Option Explicit Private Structure SYMBOLINFO Dim SyDataType As String Dim

Microsoft Word _VBAProg1.docx

スライド 1

C#の基本2 ~プログラムの制御構造~

DPC-0403

MCDRS_tutorial_advanced_v1.pptx

Prog2_12th

ドッグファイト

JavaプログラミングⅠ

Transcription:

GS1-128 の描画 DLL について (ver. 2.2) 動作環境など動作環境 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 リアル

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 DLL の呼び出し宣言を加える // 外部 DLLの呼び出し (Ean128_API) private sealed class Ean128_API [DllImport("Ean128_API.dll", EntryPoint = "DrawEan128")] public static 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")] public static extern int MakeEanData(StringBuilder eanbuffer, string eanmakercd, string eancompcd, string eancode, string eanduedate, int eankingaku, int eankijungaku); [DllImport("Ean128_API.dll", EntryPoint = "CalCheckDigit")] public static extern int CalCheckDigit(StringBuilder Buffer, string EanCode); 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual Basic.NET の場合 ) クラスの内部に以下のような外部 DLL の呼び出し宣言を加える ' 外部 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) 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

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

DrawEan128 利用のサンプルコード (Microsoft Visual C#.NET の場合 ) private System.Drawing.Printing.PrintDocument printdocument1; ' 印刷作業 private void printdocument1_printpage(object sender, System.Drawing.Printing.PrintPageEventArgs e) StringBuilder bufcd = new StringBuilder(); 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"); // メモリ不足 else if (interrcheck == 87) MessageBox.Show("Argument 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"); // その他のエラー // 試用期限切れ //// バーコード印字 private void Command_exec_Click(object sender, EventArgs e) this.printdocument1.printpage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage); // 結果印刷 this.printdocument1.print(); 注意 : プログラムロジックにおいて DrawEan128 関数より以前の処理でプリンタへの出力を何も 行っていない場合 上記サンプルにあるようなダミー出力が必要となります

DrawEan128 利用のサンプルコード (Microsoft Visual Basic.NET の場合 ) 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 注意 : プログラムロジックにおいて DrawEan128 関数より以前の処理でプリンタへの出力を何も 行っていない場合 上記サンプルにあるようなダミー出力が必要となります

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

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); // 戻り値判定 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 == 536870924) MessageBox.Show("Being out of Trial Period "); // 試用期限切れ else if (interrcheck!= 0) MessageBox.Show("Otherwise Error"); // その他のエラー ////( 結果表示 ) チェックデジット追加済みEANコードを表示 Tx_EAN.Text = eanbuffer.tostring();

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) ' 戻り値判定 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 '//( 結果表示 ) チェックデジット追加済み EAN コードを表示 Tx_EAN.Text = eanbuffer.tostring() End Sub

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

CalCheckDigit 利用のサンプルコード (Microsoft Visual C#.NET の場合 ) ////43 桁のEan128 コードからチェックデジットを計算 private void CalCheckDigit_Click(object sender, EventArgs e) int interrcheck; StringBuilder buffer = new StringBuilder(); 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(); CalCheckDigit 利用のサンプルコード (Microsoft Visual Basic.NET の場合 )

'//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