3.3. IPort

プリンターとの通信を行うためのクラスです。

  • プロパティ

    名称

    説明

    PortName

    ポートをオープンしたときのportNameを取得します。

    PortSettings

    ポートをオープンしたときのportSettingsを取得します。

    Timeout

    ポートをオープンしたときのtimeoutを取得します。

    HoldPrintTimeout

    用紙保持制御のタイムアウト時間を設定します。

  • メソッド

    名称

    説明

    WritePort

    プリンターにデータを書き込みます。

    ReadPort

    プリンターからデータを読み込みます。

    GetParsedStatus

    プリンターのステータスを取得します。

    GetOnlineStatus

    プリンターのオンライン状態を取得します。

    BeginCheckedBlock

    印刷終了監視を開始します。

    EndCheckedBlock

    印刷終了監視を終了します。

    ResetDevice

    ハードウェアレベルでリセットを行います。

    GetFirmwareInformation

    プリンターのモデル名とファームウェアバージョンを取得します。

3.3.1. 印刷処理フロー

次の印刷処理フローの手順に沿って印刷を行う方法を示します。

../_images/port_flow.png
  • 実装例

    byte[] command = new byte[] { 0x41, 0x42, 0x43, 0x44, 0x1B, 0x7A, 0x00, 0x1B, 0x64, 0x02 };
    IPort port = null;
    
    try
    {
     port = Factory.I.GetPort("BT:COM1", "", 10000);
    
        // Start to check the completion of printing
     StarPrinterStatus status = port.BeginCheckedBlock();
    
        if (status.Offline)
        {
            // There was an error writing to the port
        }
    
        uint writtenLength = port.WritePort(command, 0, (uint)command.Length);
    
        // Stop to check the completion of printing
       status = port.EndCheckedBlock();
    
        if (status.Offline)
        {
            // There was an error writing to the port
        }
    }
    catch (PortException)
    {
        // There was an error writing to the port
    }
    finally
    {
        Factory.I.ReleasePort(port);
    }
    

    Communication.csを参照ください。

3.3.2. PortName

GetPort メソッドで指定したportNameを取得します。

  • 宣言

    string PortName { get; }
    

3.3.3. PortSettings

GetPort メソッドで指定したportSettingsを取得します。

  • 宣言

    string PortSettings { get; }
    

3.3.4. Timeout

GetPort メソッドで指定したtimeoutMillisを取得します。

  • 宣言

    uint Timeout { get; }
    

3.3.5. HoldPrintTimeout

added in version 2.7.0

用紙保持制御のタイムアウト時間を示します。(単位:ミリ秒)

  • 宣言

    int HoldPrintTimeout { get; set; }
    

3.3.6. WritePort

プリンターにデータを書き込みます。

  • 宣言

    uint WritePort(byte[] writeBuffer, uint offset, uint size);
    
  • 引数

    名称

    説明

    writeBuffer

    書き込みたいデータを格納するbyte配列

    byte[]

    offset

    writeBufferのどの位置から書き込み始めるかを指定するインデックス

    uint

    size

    書き込むbyte数

    uint

  • 戻り値

    説明

    書き込んだデータサイズ

    uint

  • 例外

    説明

    通信エラーが発生したとき

    PortException

  • エラーコード

    説明

    StarResultCode.ErrorFailed

    何らかのエラーが発生した

印刷の手順については 印刷処理フロー を参照ください。

3.3.7. ReadPort

プリンターからデータを読み込みます。 プリンターからRaw byteを読み込む必要がある場合のみ、本メソッドをご使用ください。

  • 宣言

    uint ReadPort(ref byte[] readBuffer, uint offset, uint size);
    
  • 引数

    名称

    説明

    readBuffer

    データが読み込まれるbyte配列

    byte[]

    offset

    readBufferにデータを書き込み始めるインデックス

    uint

    size

    読み込むbyte数

    uint

  • 戻り値

    説明

    実際に受信できたバイト数
    データを全て受信できなかった場合でも、本メソッドは成功します。アプリケーションは、期待するデータが全て受信できるまで本メソッドを複数回呼び出すか、しきい値に達するまで再試行する必要があります。

    uint

  • 例外

    説明

    通信エラーが発生したとき

    PortException

  • エラーコード

    説明

    StarResultCode.ErrorFailed

    何らかのエラーが発生した

重要

USB接続でご利用時の制限事項

プリンターから512バイト以上の応答が発生する場合、本メソッドの引数readBufferおよびsizeは512バイト以上を指定してください。

512バイト未満を指定した場合、応答を読み込めない場合があります。

3.3.8. GetParsedStatus

プリンターのステータスを取得します。

  • 宣言

    StarPrinterStatus GetParsedStatus();
    
  • 引数

    なし

  • 戻り値

    説明

    現在のプリンターステータス
    取得できるステータスの種類は、 StarPrinterStatus 構造体をご参照ください。

    StarPrinterStatus

  • 例外

    説明

    通信エラーが発生したとき

    PortException

  • エラーコード

    説明

    StarResultCode.ErrorFailed

    何らかのエラーが発生した

3.3.9. GetOnlineStatus

プリンターのオンライン状態を取得します。

  • 宣言

    bool GetOnlineStatus();
    
  • 引数

    なし

  • 戻り値

    説明

    プリンターのオンライン状態
    true ... オンライン
    false ... オフライン

    bool

  • 例外

    説明

    通信エラーが発生したとき

    PortException

  • エラーコード

    説明

    StarResultCode.ErrorFailed

    何らかのエラーが発生した

3.3.10. BeginCheckedBlock

EndCheckedBlock メソッドとセットで使用し、印刷終了を監視します。

最後まで正しく印刷されたか確認したい場合、印刷データ送信の直前に本メソッドを、 印刷データ送信の直後に EndCheckedBlock メソッドをそれぞれ実行します。

用紙保持制御を行う場合、本メソッドは用紙が抜き取られるまでブロックし、抜き取られると制御を返します。 HoldPrintTimeout で指定したタイムアウト時間内に用紙が抜き取られない場合、エラーとなります。

  • 宣言

    StarPrinterStatus BeginCheckedBlock();
    
  • 引数

    なし

  • 戻り値

    説明

    現在のプリンターステータス
    取得できるステータスの種類は、 StarPrinterStatus 構造体をご参照ください。

    StarPrinterStatus

  • 例外

    説明

    通信エラーが発生したとき
    プリンターがオフライン状態のとき

    PortException

  • エラーコード

    説明

    ライブラリバージョン

    StarResultCode.ErrorPaperPresent

    用紙保持制御のタイムアウトが発生した

    2.7.0+

    StarResultCode.ErrorFailed

    何らかのエラーが発生した

    2.3.0+

  • 実装例

    BeginCheckedBlock / EndCheckedBlock による印刷終了監視処理の手順は、印刷処理フロー を参照ください。

3.3.11. EndCheckedBlock

BeginCheckedBlock メソッドとセットで使用し、印刷終了の監視を行います。

プリンターの状態を監視し、送信した印刷データの印刷が正常に完了する、印刷途中にプリンターの状態がオフラインになる、 GetPort で指定したタイムアウトが経過しエラーが発生すると、 制御を返します。印刷データ以外を送信した場合は、そのコマンドがプリンターで処理されると制御を返します。

  • 宣言

    StarPrinterStatus EndCheckedBlock();
    
  • 引数

    なし

  • 戻り値

    説明

    現在のプリンターステータス
    取得できるステータスの種類は、 StarPrinterStatus 構造体をご参照ください。

    StarPrinterStatus

  • 例外

    説明

    通信エラーが発生したとき
    タイムアウト時間内にプリンターからの応答がないとき

    PortException

  • エラーコード

    説明

    StarResultCode.ErrorFailed

    何らかのエラーが発生した

  • 実装例

    BeginCheckedBlock / EndCheckedBlock による印刷終了監視処理の手順は、印刷処理フロー を参照ください。

3.3.12. ResetDevice

プリンターをハードウェアレベルでリセットします。

  • 構文

    void ResetDevice();
    
  • 引数

    なし

  • 戻り値

    なし

  • 例外

    説明

    通信エラーが発生したとき

    PortException

  • エラーコード

    説明

    StarResultCode.ErrorFailed

    何らかのエラーが発生した

3.3.13. GetFirmwareInformation

プリンターのモデル名とファームウェアバージョンを取得します。

  • 宣言

    Dictionary<string, string> GetFirmwareInformation();
    
  • 引数

    なし

  • 戻り値

    説明

    モデル名とファームウェアバージョンをDictionaryで返します。
    Keyに ModelName を設定することで戻り値からモデル名を取得します。
    Keyに FirmwareVersion を設定することで戻り値からファームウェアバージョンを取得します。

    Dictionary<string, string>

  • 例外

    説明

    通信エラーが発生したとき

    PortException

  • エラーコード

    説明

    StarResultCode.ErrorFailed

    何らかのエラーが発生した