API-SIO(98/PC)を使用しています。デリミタで[CR+LF]を設定し、送受信したい。
対象製品型式: API-SIO(98/PC)
関連情報:
CR+LF デリミタを指定して送る方法ですが
SIO のプログラムでは ヘルプファイルにある関数リファレンスをみていただけると
判ると思いますが 通常 1バイトのデリミタ指定しかできません。
デリミタモードで<CR>を送受信するときと <LF>を送受信するときは 以下のようになります。
<LF> のとき SIO_DELIMITER | 0x0a
<CR> のとき SIO_DELIMITER | 0x0d
<CR>+<LF>のときは、2バイトコードになりますので、以下のように
ソースプログラムを変更すれば、動作させることが可能です。
補足:
SIO_DELIMITER は、0x0100 と使用する為、上記 <LF> 設定では、
SIO_DELIMITER には、0x010a が セットされることになります。
0x0100 については、ヘルプ(API-SIO HELP)に記載あります。
1.デリミタモードで送受信するとき
---------------------------------------------------------------------
<送信時>
まず、データに<CR>を含めて送信データを作成します。

そのデータをデリミタモード<LF>で送信します。
そうすることで、デリミタ<CR><LF>で送ることができます。
---------------------------------------------------------------------
<受信時>
まず、受信データをデリミタモード<LF>で受信します。
すると、下図のような受信データが流れてきます。

デリミタ<CR><LF>の場合ですと、データ+<CR>が流れてきます。
その後、文字の一番後ろの<CR>コードをとれば、実データが検出できます。
---------------------------------------------------------------------
2.固定長モードで送受信するとき
-------------------------------------------------------------
<送信時>
データに<CR><LF>を含めて送信データを作成します。

この状態で デリミタ無しの固定長モード(SIO_LENGTH)で、送信することで
デリミタ<CR><LF>で送ることができます。
----------------------------------------------------------------------
<受信時>
受信データを固定長モード(SIO_LENGTH)で受信します。

この状態から、最後から2番目と最後の2コードが<CR><LF>なのかを判定して
それを取り除けば、実データが検出できます。
----------------------------------------------------------------------