2014/07/09 CashDrawer ライブラリ API 仕様書 Rev. 00.0.04 1 / 10
目次 1. ファイル構成... 3 2. 環境 3 2.1. 動作環境 OS... 3 2.2. コンパイル時の注意点... 3 2.3. USB ドライバ... 3 3. 関数一覧... 4 3.1. USB 接続確認処理 (CD_checkConnect CD_checkConnect) 4 3.2. ソレノイド ON 処理 (CD_onSolenoid CD_onSolenoid).. 4 3.3. マイクロスイッチの状態取得処理 (CD_getStatusSw CD_getStatusSw)... 4 3.4. USB 切断処理 (CD_disConnect CD_disConnect)... 4 4. 使用例... 5 4.1. C++... 5 4.2. VB.NET... 6 4.3. C#.NET... 7 4.4. VB6.0... 8 5. Appendix... 9 5.1. ソレノイド ON 仕様.. 9 6. 変更履歴... 10 2 / 10
1. ファイル構成 ファイル名 説明 CashDrawer.dll 本仕様書の対象 DLL CashDrawer.lib インポートライブラリファイル (C++ 参照用 ) CashDrawer.h インクルードファイル (C++ 参照用 ) 2. 環境 2.1. 動作環境 OS Windows XP (32bit) Windows Vista (32bit/64bit) Windows 7 (32bit/64bit) Windows 8 (32bit/64bit) Windows 8.1 (32bit/64bit) 2.2. コンパイル時の注意点 本ライブラリは 32bit プログラムです 呼び側 exe でも 使用 CPU を x86 に設定する必要があります 例えば VisualStdio2012 の場合 プロジェクトのプロパティ内にて設定します AnyCPU x64 の場合 USB 通信エラーになります 32bit プログラムですが 64bit 用 PC 上でも動作可能です 2.3. USB ドライバ 本ライブラリのUSB ドライバは 標準 HID 通信を行っているため PC 本体にUSB をつなげると Windows 側で自動的にインストールが行われます USB ドライバのインストールが完了していない状態で 呼び側 exe にて通信処理を行っても USB 通信エラーになります この際の動作保証は致しませんのでご了承ください 3 / 10
3. 関数一覧インクルードファイル :CashDrawer.h 3.1. USB 接続確認処理 (CD_checkConnect) USB 接続状態を確認します 未接続の場合 接続処理を行います INT32 WINAPI CD_checkConnect() 引数 : なし 戻り値 : 0 接続中 -1 切断中 (USB 接続に失敗 ) -2 切断中 ( 現存するインターフェースが存在しない ) -3 切断中 ( メモリ不足 ) -4 切断中 (USB 詳細情報取得に失敗 ) -5 切断中 ( 送信ハンドルの作成に失敗 ) -6 切断中 ( 受信ハンドルの作成に失敗 ) 3.2. ソレノイド ON 処理 (CD_onSolenoid) ソレノイド ON 送信を行います 3 回連続で送信を行います (150msec ごとに 3 回送信 ) ソレノイド ON 送信後 基盤側で約 3 秒間はソレノイド ON を受け付けません ( 詳細は 5.1. ソレノイド ON 仕様 を参照 ) INT32 WINAPI CD_onSolenoid() 引数 : なし 戻り値 : 0 送信成功 -1 送信失敗 -2 USB 未接続などで未送信 3.3. マイクロスイッチの状態取得処理 (CD_getStatusSw) マイクロスイッチの状態取得送信を行います スイッチ状態の受信を行います INT32 WINAPI CD_getStatusSw() 引数 : なし 戻り値 : 1 SW OFF 0 SW ON -1 送信失敗 -2 USB 未接続などで未送信 -3 受信失敗 -4 USB 未接続などで未受信 3.4. USB 切断処理 (CD_disConnect) USB 切断処理を行います 再び接続状態にしたい場合は CD_checkConnect() 関数をCall してください INT32 WINAPI CD_disConnect() 引数 : なし 戻り値 : なし 4 / 10
4. 使用例 4.1. C++ #include "CashDrawer.h" // プロジェクトの設定にて CashDrawer.lib 参照も追加 // USB 接続 INT32 irtn; irtn = CD_checkConnect(); if( irtn == 0 ) GetDlgItem(IDC_STATIC)->SetWindowText(_T("Connect OK")); GetDlgItem(IDC_STATIC)->SetWindowText(_T("Connect NG")); // ソレノイド ON INT32 irtn; irtn = CD_onSolenoid(); if( irtn == 0 ) GetDlgItem(IDC_STATIC)->SetWindowText(_T("SolenoidON OK")); GetDlgItem(IDC_STATIC)->SetWindowText(_T("SolenoidON NG")); // Sw 状態取得 INT32 irtn; irtn = CD_getStatusSw(); if( irtn == 0 ) GetDlgItem(IDC_STATIC)->SetWindowText(_T("Status : A Pressed")); if( irtn == 1 ) GetDlgItem(IDC_STATIC)->SetWindowText(_T("Status : Not Pressed")); GetDlgItem(IDC_STATIC)->SetWindowText(_T("GetStatusSw NG")); // USB 切断 CD_disConnect(); // アプリケーション終了時 CD_disConnect() を call してください BOOL CVc_sampleDlg::DestroyWindow() // TODO: この位置に固有の処理を追加するか または基本クラスを呼び出してください CD_disConnect(); return CDialog::DestroyWindow(); 5 / 10
4.2. VB.NET Private Declare Function CD_checkConnect Lib "CashDrawer.dll" () As Integer Private Declare Function CD_onSolenoid Lib "CashDrawer.dll" () As Integer Private Declare Function CD_getStatusSw Lib "CashDrawer.dll" () As Integer Private Declare Sub CD_disConnect Lib "CashDrawer.dll" () USB 接続 irtn = CD_checkConnect() Label1.Text = "Connect OK" Label1.Text = "Connect NG" & Environment.NewLine & "(code = " & irtn & ")" ソレノイド ON irtn = CD_onSolenoid() Label1.Text = "SolenoidON OK" Label1.Text = "SolenoidON NG" & Environment.NewLine & "(code = " & irtn & ")" Sw 状態取得 irtn = CD_getStatusSw() Label1.Text = "Status : A Pressed" If (irtn = 1) Then Label1.Text = "Status : Not Pressed" Label1.Text = "Get StatusSw NG" & Environment.NewLine & "(code = " & irtn & ")" USB 切断 CD_disConnect() Label1.Text = "disconnected" アプリケーション終了時 CD_disConnect() を call してください Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing End Sub CD_disConnect() 6 / 10
4.3. C#.NET using System.Runtime.InteropServices; [DllImport("CashDrawer.dll")] public static extern int CD_checkConnect(); [DllImport("CashDrawer.dll")] public static extern int CD_onSolenoid(); [DllImport("CashDrawer.dll")] public static extern int CD_getStatusSw(); [DllImport("CashDrawer.dll")] public static extern void CD_disConnect(); // USB 接続 int irtn; irtn = CD_checkConnect(); if (irtn == 0) label1.text = "Connect OK"; label1.text = "Connect NG" + "\r\n" + "(code = " + irtn + ")"; // ソレノイド ON int irtn; irtn = CD_onSolenoid(); if (irtn == 0) label1.text = "SolenoidON OK"; label1.text = "SolenoidON NG" + "\r\n" + "(code = " + irtn + ")"; // Sw 状態取得 int irtn; irtn = CD_getStatusSw(); // USB 切断 if (irtn == 0) label1.text = "Status : A Pressed"; if (irtn == 1) label1.text = "Status : Not Pressed"; label1.text = "Get StatusSw NG" + "\r\n" + "(code = " + irtn + ")"; CD_disConnect(); label1.text = "disconnected"; // アプリケーション終了時 CD_disConnect() を call してください private void Form1_FormClosing(object sender, FormClosingEventArgs e) CD_disConnect(); 7 / 10
4.4. VB6.0 Private Declare Function CD_checkConnect Lib "CashDrawer.dll" () As Integer Private Declare Function CD_onSolenoid Lib "CashDrawer.dll" () As Integer Private Declare Function CD_getStatusSw Lib "CashDrawer.dll" () As Integer Private Declare Sub CD_disConnect Lib "CashDrawer.dll" () USB 接続 irtn = CD_checkConnect() Label1.Caption = "Connect OK" Label1.Caption = "Connect NG" & vbnewline & "(code = " & irtn & ")" ソレノイド ON irtn = CD_onSolenoid() Label1.Caption = "SolenoidON OK" Label1.Caption = "SolenoidON NG" & vbnewline & "(code = " & irtn & ")" Sw 状態取得 irtn = CD_getStatusSw() Label1.Caption = "Status : A Pressed" If (irtn = 1) Then Label1.Caption = "Status : Not Pressed" Label1.Caption = "Get StatusSw NG" & vbnewline & "(code = " & irtn & ")" USB 切断 Call CD_disConnect Label1.Caption = "disconnected" アプリケーション終了時 CD_disConnect() を call してください Private Sub Form_Unload(Cancel As Integer) End Sub Call CD_disConnect 8 / 10
5. Appendix 5.1. ソレノイド ON 仕様 ソレノイドON 実行後 約 3 秒以内に再度ソレノイドON を実施しても実行されません ソレノイドON 実行後 約 3 秒後に再度ソレノイドON を実施した場合 実行します ソレノイドON 送信は 基盤側から実行中かどうかの返信がありませんので 呼び側で タイムコントロールを行う必要があります 以下 基盤側で行っているタイムチャートイメージです ON 10ms 150ms OFF 10ms 約 3 秒 実行不可〇実行可 トリガー トリガー (3 秒以内の場合トリガーを受けても受け付けない ) トリガー (3 秒後の場合トリガー受付可 ) ライブラリ側で 150msec ごとに 3 回送信を実施しているのは 送信漏れ防止のため 3 回とも送信成功しても 基盤側で上記仕様により 1 回分しかソレノイド ON が実施されない 9 / 10
6. 変更履歴 Rev. 更新日説明 00.01 2014/06/02 ドラフト版 00.02 2014/06/09 2. 環境 修正 00.03 2014/06/26 4.4.VB6.0 追加 00.04 2014/07/09 2.3.USB ドライバ 追加 5.1. ソレノイド ON 仕様 追加 10 / 10