プリンタ印字用DLLファイル「easyprn.dll」


 

プリンタ印字用DLLファイル「easyprn.dll」はお客様作成のプログラムに組み込むことで、シリアル通信またはイーサネットによるソケット通信のプリンタに印字が簡単に行うことができるdllファイルです。

「easyprn.dll」には印字コマンド、シリアル通信、ソケット通信を行うための機能が搭載されているので、関数を呼び出すだけで印字、シリアル通信、ソケット通信を行うことが可能になります。

「easyprn.dll」があればシリアル通信、及びソケット通信のプログラムを全て記述する必要はありません。また、EPSON、STAR、CITIZEN、日本プリメックスのレシートプリンタの印字コマンドに対応しております。


「easyprn.dll」を使用したサンプルプログラムにつきましてはサンプルプログラムの作成方法をご参照ください。
「easyprn.dll」が対応しているコマンドにつきましてはサンプルプログラムのダウンロードからpdfファイルをダウンロードして「プリンタ印字用DLL取扱説明書(easyprn.pdf)」をご参照ください。
  コマンド一覧はこちらよりご確認ください。

「easyprn.dll」を使った構成例
「easyprn.dll」ではシリアル通信及びソケット通信に対応しています。
「easyprn.dll」では通信用の関数が組み込まれているためプログラム側で必要なパラメータを与えて、関数を呼び出すことで通信ができるようになります。

シリアル通信で印刷する場合

PC及びプリンタのボーレートを設定し、パソコンとプリンタをRS232Cケーブルで接続してください。
「easyprn.dll」をお客様が作成されたプログラムに組み込み、「easyprn.dll」を呼び出す際にプリンタを接続したCOMポート番号とシリアル通信のボーレートを設定することでプリンタへの印字ができるようになります。

ソケット通信で印刷する場合

上図は一般的に使用されているネットワークへの接続例です。
この場合、プリンタの固定IPアドレスを、グループ内IPでルータのDHCP(例の場合)が配信しない(衝突しない)IPアドレス、およびポート番号を設定します。
以上の設定により、PCからの印刷が可能になります。
「easyprn.dll」をお客様が作成されたプログラムに組み込み、「easyprn.dll」を呼び出す際に設定したIPアドレスとポート番号を設定してソケット通信の関数を「easyprn.dll」から呼出すことでプリンタへの印字ができるようになります。


尚、弊社では以下のプリンタにて動作を確認致しております。
EPSON TM-T88V
TM-T90
STAR TSP600
CITIZEN CT-S651
日本プリメックス NP-T210-D


プログラムを試す際に、パソコン以外に必要なもの

サンプルプログラムのダウンロード

  • easyprndemo.zip [Zip:164KB] VB2008/VB2008Express用Project ソース & dllファイル
    easyprnmanual.pdf [pdf:372KB] プリンターDLL取扱説明書pdfファイル
    このリンクをマウスで右クリックして、「対象をファイルに保存」のメニューを実行してください。

    上記サンプルのVFD2002E.vbprojをVB2008 / VB2008 Expressから起動することでサンプルの実行ができます。
    添付サンプルではレシートプリンタがパソコンのシリアルポートもしくはイーサネットLANに接続されていることを想定しています。
    また、上記サンプルは30日間ご利用いただける体験版です。この機会にぜひお試しください。


サンプルプログラムの作成方法

下記の動作環境で、プリンタにより印字を行うフォームアプリケーション制御プログラムを作成します。
(動作環境) Visual Studio 2008、Windows 7 64ビット版
                      Windows 7 32ビット版
                     Windows XP 32ビット版
        Visual Studio 2010、Windows 7 64ビット版
                      Windows 7 32ビット版
        .NET Framework 2.0
※上記環境以外での制御プログラム作成につきましてはお客様自身でご確認ください。

1.Visual Studio 2008の「ファイル」-「新しいプロジェクト」を選択します。
下記の画面が立ち上がりますので、「テンプレート」から「Windowsフォームアプリケーション」を選択し、「プロジェクト名」を入力、OKボタンをクリックします。


2.ソリューションエクスプローラの「My Project」をダブルクリックします。


3.「参照」をクリックします。


4.「追加」をクリックします。


5.「参照」タブをクリックします。
「easyprn.dll」ファイルを選択し「OK」ボタンを押します。
※上記ファイルは、ダウンロードした内に配置されています。


6.「Form1.vb[デザイン]」タブをクリックし、Formに以下のようにコントロールを配置します。
 
①easyprnSample
②TabControl1
③TextBox1
④TextBox2
⑤ComboBox1
⑥Button1
⑦Button2
⑧Button3
⑨TabControl2
⑩TextBox3
⑪TextBox4

7.プログラムコードを記述します。

以下のVB2008用ソースコードはダウンロードソースと同じものですので、このWeb表示で文字化けが発生する場合はそちらをご覧ください。

'
'   (C)Copyright by Techno Veins Co.,Ltd.

'   All right reserved. 2012
'
'
'   このプログラムの著作権はテクノベインズが保有します。
'   独自開発プログラムへソースの組込使用については自由に参考利用していただいてかまいません。(費用・登録等不要。)
'   VFD2002E販売の際、商品に添付して配布することはご自由に行ってください。
'
'   直接ソースの全部または一部を販売することは禁止します。
'   ソースの全部または一部を再配布や書籍・Web等への許可なき転載は禁止します。
'
'   本プログラムは参考用であり、すべてのお客様の環境で動作を保証するものではありません。
'   また、本プログラムを用いることで、何らかの不利益が発生した場合であっても、テクノベインズでは一切の保証を行いません。
'
'   説明のために1行で記述できる行も分解して記述している部分があります。
'
'
'   プリンターDLL用サンプルプログラム
'   簡単な印字及びDLL制御

'
'
'   easyprn.dllのコマンドについてはマニュアルを参照のこと
'

    PublicClass easyprnSample

        Dim Prn AsNew easyprn.Prn 'dll内のクラスのインスタンスを生成
        ' 各種設定のデフォルト値
        Dim mIp AsString = "192.168.1.199" ' IPアドレスの初期値
        Dim mPort AsInteger = 1001        ' ポート番号の初期値
        Dim comno AsString = "COM1"    'COM番号の初期値
        Dim baudrate AsInteger = 9600  'ボーレートの初期値
        Dim msgdata AsString = ""  '印字する内容を格納するための変数
        Dim printerset AsString    'プリンターの機種選択用の変数

        ' フォームのロード
        PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
            ' フォームのテキストボックスにIPアドレスなどを表示
            TextBox1.Text = mIp
            TextBox2.Text = mPort
            TextBox3.Text = comno
            TextBox4.Text = baudrate
        EndSub


        PrivateSub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            'プリンターの機種名はEPSONNPICITIZENSTARのみ
            printerset = ComboBox1.Text 'プリンターの機種の設定値を変数に代入
        EndSub


        PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            '整理券本文
            Dim str AsString = "整理券番号"
            Dim smv AsString = "printerDLL"
            'msgdataの変数の中に印字したい内容を格納する
            'DLLからのコマンドを呼び出すにはPrn.コマンド(msgdata,printersetで呼び出すことができる
            '本文の内容は最初に必ずIntでプリンターの初期化を行う
            'ひらがな・カタカナ・漢字を印字したい場合はJISコマンドを呼び出す
            msgdata = ""
            msgdata = Prn.Int(msgdata, printerset) + Prn.LF(msgdata, printerset) + _
                Prn.CTR(msgdata, printerset) + Prn.JIS(msgdata, printerset) + Prn.DBLON(msgdata, printerset) + _
                (str) + Prn.DBLOFF(msgdata, printerset) + Prn.LF(msgdata, printerset) + _
                Prn.BOLDON(msgdata, printerset) + smv + Prn.BOLDOFF(msgdata, printerset) + Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.DBLON(msgdata, printerset) + "001" + Prn.DBLOFF(msgdata, printerset) + Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.LFT(msgdata, printerset) + _
                "整理券発行日時:" + Date.Now + Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.CUT(msgdata, printerset)

            '通信の実行
            Comunication()
        EndSub


        PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            'レシート本文
            msgdata = ""
            msgdata = Prn.Int(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.JIS(msgdata, printerset) + Prn.CTR(msgdata, printerset) + _
                "テクノベインズ湯島店" + Prn.LF(msgdata, printerset) + _
                "TEL:03-3832-7460" + Prn.LF(msgdata, printerset) + Prn.LFT(msgdata, printerset) + _
                Date.Now + Prn.LF(msgdata, printerset) + _
                "------------------------------" + Prn.LF(msgdata, printerset) + _
                "食パン" + Prn.LF(msgdata, printerset) + _
                String.Format("{0, 9}", "600") + String.Format("{0, -6}", "X1") + String.Format("{0, 13}", "600") + Prn.LF(msgdata, printerset) + _
                "ジャムパン" + Prn.LF(msgdata, printerset) + _
                String.Format("{0, 9}", "120") + String.Format("{0, -6}", "X1") + String.Format("{0, 13}", "120") + Prn.LF(msgdata, printerset) + _
                "------------------------------" + Prn.LF(msgdata, printerset) + _
                "小計:" + String.Format("{0, 23}", "720") + Prn.LF(msgdata, printerset) + _
                "------------------------------" + Prn.LF(msgdata, printerset) + _
                "合計:" + String.Format("{0, 23}", "720") + Prn.LF(msgdata, printerset) + _
                "内税計:" + String.Format("{0, 21}", "33") + Prn.LF(msgdata, printerset) + _
                "お預り:" + String.Format("{0, 21}", "800") + Prn.LF(msgdata, printerset) + _
                "お釣り:" + String.Format("{0, 21}", "80") + Prn.LF(msgdata, printerset) + _
                "お買上点数:" + String.Format("{0, 17}", "2") + Prn.LF(msgdata, printerset) + _
                "------------------------------" + Prn.LF(msgdata, printerset) + _
                "No.20120406032" + Prn.LF(msgdata, printerset) + _
                "担当:山田" + Prn.LF(msgdata, printerset) + _
                Prn.CTR(msgdata, printerset)

            SelectCase printerset
                Case "EPSON", "CITIZEN", "NPI"
                    'CODEHIGTHTのコマンドの後にバーコードの高さのドット数をアスキーコードで指定。使用出来る値は1255まで
                    'CODEWIDEのコマンドの後にバーコードの横幅を指定。使用できる値は26 モジュール幅 2:0.282mm 3:0.423mm 4:0.564mm 5:0.706mm 6:0.847mm
                    'バーコードの印字コマンドを入力後、バーコード終了印字のコマンドを入力すること
                    msgdata += Prn.CODEHIGHT(msgdata, printerset) + Chr(&H50) + _
                    Prn.CODEWIDE(msgdata, printerset) + Chr(&H2) + _
                    Prn.CODABAR(msgdata, printerset) + _
                    Chr(&H41) + Chr(&H32) + Chr(&H30) + Chr(&H31) + Chr(&H32) + Chr(&H30) + Chr(&H34) + Chr(&H30) + Chr(&H36) + Chr(&H30) + Chr(&H33) + Chr(&H32) + Chr(&H41) + _
                    Prn.CODEOFF(msgdata, printerset) + _
                    Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.CUT(msgdata, printerset)
                Case "STAR"
                    'バーコード印字コマンドの後にバーコードの横幅、高さを設定する
                    msgdata += Prn.CODABAR(msgdata, printerset) + Chr(&H1) + Chr(&H50) + _
                    Chr(&H41) + Chr(&H32) + Chr(&H30) + Chr(&H31) + Chr(&H32) + Chr(&H30) + Chr(&H34) + Chr(&H30) + Chr(&H36) + Chr(&H30) + Chr(&H33) + Chr(&H32) + Chr(&H41) + _
                    Prn.CODEOFF(msgdata, printerset) + _
                    Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.CUT(msgdata, printerset)
            EndSelect


            '通信の実行
            Comunication()
        EndSub


        PrivateSub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            '引換券券本文
            msgdata = ""
            msgdata = Prn.Int(msgdata, printerset) + Prn.JIS(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.KULON(msgdata, printerset) + Prn.ULON(msgdata, printerset) + _
                "テクノベインズ25周年記念キャンペーン" + Prn.ULOFF(msgdata, printerset) + Prn.KULOFF(msgdata, printerset) + Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.DBLON(msgdata, printerset) + "記念品引換券" + Prn.DBLOFF(msgdata, printerset) + Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + _
                Prn.BOLDON(msgdata, printerset) + String.Format("{0, -9}", "No.120") + Prn.BOLDOFF(msgdata, printerset) + Date.Now + Prn.LF(msgdata, printerset) + _
                Prn.LFT(msgdata, printerset) + "本券1枚につき、記念品1個をお渡し致します。" + Prn.LF(msgdata, printerset) + _
                "引換は当日のみ有効です。" + Prn.LF(msgdata, printerset) + _
                Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.LF(msgdata, printerset) + Prn.CUT(msgdata, printerset)

            '通信の実行
            Comunication()
        EndSub


        PublicSub Comunication()
            'プリンター選択
            Prn.PrnSet = printerset
            '通信の実行
            If TabControl1.SelectedIndex = 0 Then
                mIp = TextBox1.Text
                mPort = TextBox2.Text
                Prn.IpSet = mIp  'IPアドレス
                Prn.PortSet = mPort  'ポート番号
                Prn.MsgSet = msgdata 'メッセージ本文
                Prn.SendTcpClient(msgdata)  'ソケット通信の実行
            ElseIf TabControl1.SelectedIndex = 1 Then
                comno = TextBox3.Text
                baudrate = TextBox4.Text
                Prn.ComSet = comno   'COM番号
                Prn.BRSet = baudrate     'ボーレート
                Prn.MsgSet = msgdata 'メッセージ本文
                Prn.serial_main()    'COM通信の実行
            EndIf

        EndSub
    EndClass

通信用とコマンド用のクラスのインスタンス生成を行うことによって、dll内にあるコマンドや通信の設定が使えるようになります。
印字コマンドにつきましては、ダウンロードしたフォルダ内にマニュアルをご用意しておりますので、そちらをご参照ください。
通信の設定はソケット通信を行う場合、IPアドレスとポート番号を設定することで使用できます。
設定する際は「通信用のクラス(easyprn.communication).IpSet」で与えてください。サンプルソースの場合は「Prn.IpSet」になっています。
ポート番号も同様に設定します。
シリアル通信を行う場合はCOM番号とボーレートの値を同様に設定します。
設定後、通信の実行はソケット通信の場合は「通信用のクラス(easyprn.communication).SendTcpClient(msgdta)」で設定してください。サンプルソースの場合は「Prn.SendTcpClient(msgdta)」になっています。
シリアル通信の場合は「通信用のクラス(easyprn.communication).serial_main()」で設定してください。サンプルソースの場合は「Prn.serial_main()」になっています。
プリンタに印字させるメッセージはmsgdataという変数に入れ、「通信用のクラス(easyprn.communication).MsgSet」でdll側に設定することができます。サンプルソースの場合は「Prn.MsgSet」になっています。


サンプルプログラムの実行

「ソケット通信」または「シリアル通信」のタブを選択し、各値を入力した後にボタンをクリックすると接続先のプリンタに印字されます。
サンプルプログラムの実行ファイルはbin/Releaseフォルダのprinter.exeにより、直接実行して試すこともできます。(インストーラは作成しておりません。)


サンプルプログラムの印字例



  整理券発行サンプルのボタンを押したときの印字結果です。 レシートサンプルのボタンを押したときの印字結果です。    引換券サンプルのボタンを押したときの印字結果です。

 

 


  テクノベインズ株式会社 〒110-0016 東京都台東区台東4-21-21 橋本ビル2F 電話:03-3832-7460 (平日:09:00-17:30) FAX:03-3832-7430
Techno Veins Co.,Ltd. Hashimoto Bldg. 2F, 4-21-21, Taito, Taito-ku, Tokyo, 1100016, JAPAN. Tel:+81 3-3832-7460 FAX:+81 3-3832-7430 sales@technoveins.co.jp
Copyright © 1987- Techno Veins Co.,Ltd. All Rights Reserved.