文字列の送受信関数

平成20年7月26日

トラ技BIOSのUSB通信関数

    トラ技BIOSには以下の4つのUSB送受信関数が用意されています

      ・void trg_puts(const char *src)

      ・char *trg_getc()

      ・void trg_senddata(unsigned char *src,unsigned short len)

      ・void trg_recvdata(unsigned char *src,unsigned short len)

    このページでは、これらの関数の使いかたと注意事項を説明します。

文字列送信関数の説明

    trg_putsはキャラクタベースの送受信関数です。

    trg_putsは、'\0'で終端された文字列を送信します。
    C言語のputsに相当する働きをします。

     

    この関数ではバイナリデータを扱えません。その理由は

     @ 改行コードが変換される
     A '\0'を送ることができない

    からです。

     

    trg_putsはトラ技BIOSの中でusbSendStr関数を呼び出します。usbSendStr関数はヌル文字を見つけるまでループしながらusbSendChar関数を呼び出します。usbSendChar関数は送信したい文字が'\n'である場合、再帰呼び出しを用いて'\r'を先に送信します。
    usbSendChar関数は内部でUSBファンクションコールのsvUSB_datawriteを呼び出し、USBにデータが送信されます。

    つまり、"Hello\n"という文字列は、USBの上では"Hello\r\n"となって送信されます。

     

文字受信関数の説明

    trg_getcはキャラクタベースの1文字受信関数です。

    C言語のgetc()に相当する働きをします。

    この関数もバイナリデータを扱えません。その理由は

     @ 改行コードが変換される ('\r'を'\n'に変換する)
     A '\0'を無視する
     B '\n'を無視する
     C EOF(0x1A)を無視する

    からです。

    trg_getc()を呼び出すと、

        trg_getc → usbGetChar → svUSB_byteread

    という順序で最終的にはUSBの受信バッファから1文字取り出されます。

    usbGetCharという関数は上記の@〜Cの処理を行うので、バイナリデータの受信ができません。

     

chickens_back.gif 戻る

 Copyright(C) 2008 NAITOU Ryuji. All rights reserved. 無断転載を禁ず