シリアル通信でデータが16進で00,10進で0,アスキー文字でNULL(ヌル)までしか読み取られないのはなぜでしょうか使用ソフトウェア: LabWindows/CVI Development Systems>>Full Development System使用ソフトウェア・バージョン: N/A 使用ソフトウェア・バージョンに特化: N/A 二次のソフトウェア: N/A
問題: LabWindows/CVIでシリアル通信を行う際,計測器から返されるデータの途中に00xが含まれています。00x以降のデータがすべて失われてしまいます。例えば,返されるデータが AA 4C 00 DD BB であった場合,AA 4C 00しか読み取ることができず,DD BB が失われているように思えます。どのように対処すればよいでしょうか。 解決策: 計測器は00xの後を含め,すべてのデータを返しているようです。データは,文字列や配列の操作の後に失われていると考えられます。ANSI C標準ライブラリ関数のprintf(), strcpy(), strcat()などは,00xもしくはNULL(ヌル文字)までを読み取ります。従って,これらの関数を使う変わりにCVIのsprintf()関数を使用して自力でフォーマットして下さい。 これに加え,以下の様にして配列中の任意の要素を調べることができます。 read_data[Index] Indexは00xが含まれる要素よりも後の指標を指定することができます。 もしデータが読み取り中に失われている場合,シリアル受信の終端文字を変更する必要があります。CVI関数のComRdTerm()を使用して下さい。LabVIEWでは,終端文字はVisa Configure Serial Port.viで設定できます。 関連リンク: KnowledgeBase 21LCJ1LI: Why Does My Serial Instrument Not Respond to Commands? 添付:
報告日時: 03/14/2003 最終更新日: 03/17/2005 ドキュメントID: 2VDB8MHM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
