Windows2000 C#.NET を使用して、RS-232Cの送受信を行いたいと実験しております。
//RS-232C初期化
axMSComm1._CommPort = 1;
axMSComm1.Settings = 9600,N,8,1;
axMSComm1.InputLen = 4;
axMSComm1.PortOpen = true;
//送信
string st;
st = 1234;
axMSComm1.Output = st;
//受信
string st;
if(axMSComm1.InputLen > 0)
{
st = (string)axMSComm1.Input;
label3.Text = st;
}
送信ミスをしてしまいました。 申し訳ありません。 再度、送ります。
Windows2000、C#.NETでRS-232C通信を行いたいと思っております。
フォ-ムにMSComm(電話マ-クのコントロ-ル)を貼り付けて、以下のコ-ドで
動作確認をしましたが、送信は問題ないのですが、受信がうまくいきません。
どなたか、心当たりのある方は宜しくご教授の程、御願いします。
//RS-232C初期化
axMSComm1._CommPort = 1;
axMSComm1.Settings = 9600,N,8,1;
axMSComm1.InputLen = 4;
axMSComm1.PortOpen = true;
//送信OK
string st;
st = 12345;
axMSComm1.Output = st;
//受信NG(stはNULLです???)
string st;
if(axMSComm1.InputLen > 0)
{
st = (string)axMSComm1.Input;
}
MSCommは使った事がないので的はずれかもしれませんが・・・
> if(axMSComm1.InputLen > 0)
> {
> st = (string)axMSComm1.Input;
> }
この部分をループにしないといけないのでは?
これではデータ受信前に終了してしまうのでは無いでしょうか。
重さん、回答ありがとうございます。
ソ-スコ-ドの表現がはっきりせず、誤解を招いてしまったようです。
申し訳ありません。
RS-232C初期化、送信、受信の3コ-ドは、それぞれ3のボタン押下のイベントに
割り当て記述しています。
1のボタン--->RS-232C初期化
2のボタン--->送信
3のボタン--->受信
以上の様になっております。
最初に1のボタン押下--->初期化OK
次に2のボタン---->送信OK
最後のRS-232C接続されたPCからデ-タを受信後、3のボタン押下---->受信NG
以上の流れで確認しております。
質問内容が明確でなく申し訳ありませんでした。
宜しく御願い致します。
その後、時間があるときにコツコツとこの問題を突っついておりました。
VBでも同じ状態になると思いますが、MSCOMのプロパティで
RTSEnable----->true に設定し、受信可能となりました。
(通常のクロスケ-ブルの配線では、この設定が必要。)
VBでも同じ経験をしたのですが、C#で頭が混乱してしまいました。
お騒がせしました。
また、宜しく御願い致します。
受信プログラムに誤りがありますので、修正しておきます。
//RS-232C初期化
axMSComm1._CommPort = 1;
axMSComm1.Settings = 9600,N,8,1;
axMSComm1.InputLen = 0;
axMSComm1.PortOpen = true;
//送信OK
string st;
st = 12345;
axMSComm1.Output = st;
//受信OK
string st;
if(axMSComm1.InbufferCount > 0)
{
st = axMSComm1.Input.ToString();
}
以上です。