アカデミック 会社 イベント NI Developer Zone サポート ソリューション 製品とサービス お問い合わせ MyNI
This Document is not yet Rated  Rate this Document

シリアル通信やGPIBでヌル (NULL) 文字を送信できますか

使用ソフトウェア: LabWindows/CVI Development Systems>>Full Development System
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題: 計測器にヌル (NULL) 文字を送信しようとしていますが,うまく通信できません。LabVIEWやLabWindows/CVI,Visual C, Visual Basicなどで,ヌル文字を送信することはできるのでしょうか。


解決策: どのようなプログラム環境を用いても,シリアル通信でヌル文字を送受信することができます。問題は,文字列の扱い方の問題によりヌル文字の送受信ができていないことによる可能性があります。

char send_data[15] = "hello\00world";
stringsize = StringLength (send_data); // stringsizeには5が代入される
ComWrt (comport, send_data, stringsize); // "hello"だけがシリアルポートに送信される

ヌル文字をシリアル通信データの終端文字として送信するためには,ヌル文字を追加する必要があります。ヌル文字は文字列に存在するので,送信する文字数をインクリメントします。

char send_data[15] = "hello";
stringsize = StringLength (send_data)++; // stringsizeには6が代入される
ComWrt (comport, send_data, stringsize); // "hello/0"がシリアルポートに送信される

LabWindows/CVIインストールディレクトリのsamples\rs232にあるサンプルプログラムのserial.prjで,SendAscii関数とReadCallBackコールバック関数を添付ファイルと入れ替えることで,ヌル文字を終端文字として使用できます。ユーザーが終端文字ももしくは終端バイトに"None"を選択した場合,ヌル文字終端が使用されます。


関連リンク: KnowledgeBase 1Y0F7FVQ: Missing Characters after Null Byte (\0) in Visual Basic Text Box
KnowledgeBase 2VDB8MHM: Why Do Serial Reads Only Return Data Up to Hex 00, Decimal 0, or ASCII NULL?

添付:





報告日時: 08/21/2003
最終更新日: 03/14/2005
ドキュメントID: 30K7GUWH

Your Feedback! poor Poor  |  Excellent excellent   Yes No
 Document Quality? 
 Answered Your Question? 
  1 2 3 4 5
Please Contact NI for all product and support inquiries.submit