- PR -

送信電文にASCIIコードの制御文字を設定する方法について

1
投稿者投稿内容
みかん
常連さん
会議室デビュー日: 2006/08/08
投稿数: 31
投稿日時: 2007-12-07 20:25
いつもお世話になっております。

RS-232C通信を行うのにSerialPortコントロールのWriteメソッドを
使用して、下記のコードでコマンドを送信したいと考えています。

SerialPort.Write(String) ※Stringには制御コマンドを設定します。

送信するRS-232C制御コマンドは
Header部Message部CheckCode部Delimiter部
で構成されています。
仕様書によるとHeader部の最初にASCIIコードのSOH、
Message部の最初にSTX、最後にETXを付加しなければいけないのですが
制御文字をどのように記述したらよいのかわかりません。

どなたかご存知の方がいらしゃれば教えてください。
よろしくお願い致します。

環境は下記の通りです。
Windows XP Professional Version 2002 SP2
Visual Studio 2005 Professional Edition
.NET Framework Version 2
使用言語 vb.net


shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-12-07 20:36
VB.NETは(も?)まったくの門外漢ですが、char(01)とかで書けないんですかね。
みかん
常連さん
会議室デビュー日: 2006/08/08
投稿数: 31
投稿日時: 2007-12-09 00:12
返信ありがとうございます。

私の認識が間違っているのかもしれませんが、
Char(01)は ASCIIコードから文字に変換する場合だったと思います。
デバックでみるとChar(01)は「cのように表示されます。
これで正しいのでしょうか?
コマンドを送信しましたが、応答は返ってきませんでした。
他の部分に問題がある可能性も高いのですが、とりあえず制御文字の
扱いが正しいのかどうかわかりません。

Char関数の使用が正しいとご存知の方がいらっしゃったら
教えてください。

よろしくお願いいたします。
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2007-12-09 00:54
SerialPort.Write(Byte(), Integer, Integer)で、バイト列を送信する方法でいかがでしょうか?

STXだけ送信したいということであれば、以下のようになると思います。

コード:
Dim data(1) As Byte
data(0) = 2
SerialPort.Write(data, 1, data.Length)



みかん
常連さん
会議室デビュー日: 2006/08/08
投稿数: 31
投稿日時: 2007-12-11 17:38
ご回答ありがとうございました。
Chr(&H1)でできました。

1

スキルアップ/キャリアアップ(JOB@IT)