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

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

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

Re[5]: (再)シリアル通信について


(過去ログ 43 を表示中)

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

■23203 / inTopicNo.1)  (再)シリアル通信について
  
□投稿者/ とし (6回)-(2008/08/11(Mon) 11:03:05)

分類:[C#] 

2008/08/11(Mon) 11:12:01 編集(投稿者)
2008/08/11(Mon) 11:11:44 編集(投稿者)
2008/08/11(Mon) 11:08:14 編集(投稿者)

度々すいません。
Form1にserialPortを配置し、publicな通信するメソッド(Data_Send)を作成。
Form2でForm1のserialPortをオープンし、Data_Send();を実行すると、ポートは閉じられてしまい通信できません。

このようにフォームが複数ある場合は、フォームごとにserialPortを配置し、通信メソッドを作成しなければいけないのでしょうか?
Data_Send();を実行するたびにポートをオープンすればいいのかもしれませんが。通信するたびにオープンすると通信機器の問題ですが時間がかなりかかってしまいます。


よろしくお願い致します。
引用返信 編集キー/
■23207 / inTopicNo.2)  Re[1]: (再)シリアル通信について
□投稿者/ Azulean (181回)-(2008/08/11(Mon) 11:13:57)
> Form1にserialPortを配置し、publicな通信するメソッド(Data_Send)を作成。
> Form2でForm1のserialPortをオープンし、Data_Send();を実行すると、ポートは閉じられてしまい通信できません。
「閉じられてしまい」と書かれていますが、あなたがそのData_Sendの中で閉じているのでは?
その実装がまずいのであれば、どのように実装するのが適切か検討して下さい。

部外者から見ると、アプリの仕様や関数のあるべき仕様が分かりませんので、対策をどのようにするべきかまでは回答できません。

ポートオープン&クローズは適切なタイミングでのみ行うべきです。
無闇に繰り返すのは問題があるかもしれません。
引用返信 編集キー/
■23208 / inTopicNo.3)  Re[2]: (再)シリアル通信について
□投稿者/ とし (7回)-(2008/08/11(Mon) 11:54:41)
そうですね。実装方法は見直す必要があります。

今回は質問内容が悪く申し分けございません。
お聞きしたかったのは、別フォームからserialPortを操作しようとする場合、オープン→通信→クローズと一連の流れで行わないといけないのかなって。
個別に実行するとなぜエラーになるのか。
というのがお聞きしたかったのです。すいませんでした。
引用返信 編集キー/
■23210 / inTopicNo.4)  Re[3]: (再)シリアル通信について
□投稿者/ Azulean (182回)-(2008/08/11(Mon) 12:17:06)
2008/08/11(Mon) 12:18:13 編集(投稿者)

> 個別に実行するとなぜエラーになるのか。
基本的にポートを開くことができるのは1つだけです。
FormAでポートを開いている状態で、FormBで同じポートをさらに開くことはできません。
もし、できてしまうと、両方のFormに同じデータが届くか、片方のFormにしかデータが届かないような状態になり、正常な通信ができません。

また、どこかのFormで作ったSerialPortのインスタンスを無闇に参照すると通信状態がよく分からなくなります。
(どのFormが最後に通信したか分からないので、取得したデータをどう処理するかが分からない)

どこか強い存在(メインとなるフォーム?通信マネージャクラス?)が通信状態やデータ送受信を含めて、一手に引き受けるとかになるのかな。
引用返信 編集キー/
■23211 / inTopicNo.5)  Re[4]: (再)シリアル通信について
□投稿者/ とし (8回)-(2008/08/11(Mon) 13:28:37)
なるほどです。
やはりフォームごとにserialPortを配置して管理するのがいいのかもしれません。
オープンした状態で、別フォームに移ると強制的にポートが閉じられてしまうみたいです。

どうもありがとうございました。
解決済み
引用返信 編集キー/
■23221 / inTopicNo.6)  Re[5]: (再)シリアル通信について
□投稿者/ επιστημη (1215回)-(2008/08/11(Mon) 15:06:45)
επιστημη さんの Web サイト
Azuleanさん曰く
> どこか強い存在(メインとなるフォーム?通信マネージャクラス?)が通信状態や
> データ送受信を含めて、一手に引き受けるとかになるのかな。

それに対し

> なるほどです。
> やはりフォームごとにserialPortを配置して管理するのがいいのかもしれません。

真逆やないですか。どこが"なるほどです"だったのでしょうか?

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -