C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#のシリアル送信におけるフリーズ


(過去ログ 72 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■41951 / inTopicNo.1)  C#のシリアル送信におけるフリーズ
  
□投稿者/ sy (4回)-(2009/10/05(Mon) 13:55:40)

分類:[C#] 

[開発環境] Microsoft Visual C# 2005 Express Edition



たびたびお世話になります。

COMポートに接続したデバイスにbyte型配列をシリアル送信したいのですが、トリガーであるボタンを押すとフリーズしてしまい、その原因が分からず困っています。
以下のような記述をしています。


private void button1_Click(object sender, EventArgs e)
{
SendParameter();
}

private void SendParameter()
{
try
{
byte[] parameter = new byte[3];
parameter[0] = 0x01;
parameter[1] = 0x02;
parameter[2] = 0x03;
serialPort1.Write(parameter, 0, parameter.Length);   …(*)
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}


ステップ実行をした結果、(*)の行が通過できないようでした(ここでフリーズします)。
使用しているCOMポートが問題なのかと思い複数のCOMポート、PCで試してみましたが、結果は同じでした。
ただし、仮想COMポートを作成してハイパーターミナルに送信した場合には問題なく送信できました。

原因が分かる方がいましたら、お手数ですがご教授願います。

引用返信 編集キー/
■41952 / inTopicNo.2)  Re[1]: C#のシリアル送信におけるフリーズ
□投稿者/ 774RR (403回)-(2009/10/05(Mon) 14:05:40)
妥当性確認手順が間違っていると思う・・・

コード(ソフトウェア)が悪いのか、
ハード(ケーブルや接続位置やその他)が悪いのか、どっちか確定済みであるの?
ソフトの修正は当該機器とハードウェア的に正しく接続できているかどうかを確認してから。
まずは HyperTerminal や TeraTerm で当該機器に送信できるかどうか チェック

あとコードが断片的過ぎて、提示部分だけで処理として正しいかどうかの判定を行うのは無理。
シリアル通信条件 (bps, N81 等) が正しく設定されているのかどうか
ハンドシェイク設定 (RTS/CTS, DTR/DSR, XON/XOFF 等) が正しく設定されているのかどうか
その辺全部要確認

# ハングアップ=ハンドシェイク手順が違うと見たが・・・
引用返信 編集キー/
■41953 / inTopicNo.3)  Re[1]: C#のシリアル送信におけるフリーズ
□投稿者/ オショウ (332回)-(2009/10/05(Mon) 14:41:05)
No41951 (sy さん) に返信
> 原因が分かる方がいましたら、お手数ですがご教授願います。

  例えば、RTS/CTS, DTR/DSRでのハンドシェーク設定になっていた
  場合、送信可能状態にならなければ、同期式ならWriteでフリーズ
  します。

  ただし、タイムアウト設定していれば、その時間が経過したら、
  エラーで返ってくるはずですが・・・

  何はともあれ、シリアルポートの設定を見直すべきかと。

※ 設定が正しくても、シリアルケーブルの種類(クロス・ストレート)
  によっては、正しくハンドシェーク信号ラインが繋がらず、当然
  フリーズ状態に陥ることもある。

  仮想COMポートの場合、動作しても、原因追求にはならないかと。

以上。

引用返信 編集キー/
■42003 / inTopicNo.4)  Re[2]: C#のシリアル送信におけるフリーズ
□投稿者/ sy (5回)-(2009/10/06(Tue) 14:06:33)
774RRさん、オショウさん

色々と確認した結果、ハンドシェイクの設定が間違っていたことが分かりました。
おかげさまでフリーズ問題が解決できました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -