tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルシリアルポートの操作
記事No11145
投稿日: 2013/09/04(Wed) 22:09
投稿者レフティー
vb2012にて、周辺機器(カスタム基板等)とシリアル通信(RS-232)にて、データの設定・取得をするプログラムを作成しています。
仕事にて実験用に簡易的なプログラムを作成する程度のレベルです。

メインとなるForm1にシリアルポート(SerialPort1)を配置して、
Form1内にポートオープンの処理やデータ受信イベントを記述しています。
ここで、他のModuleファイルから、SerialPort1を操作(SerialPort1.writelineで送信)したいと
考えたのですが、他のModuleファイルにSerialPort1.writelineと記述すると、
"'SerialPort1' は宣言されていません。アクセスできない保護レベルになっています。"
とエラーになります。

Form1に配置したSerialPort1のModifiersプロパティをPrivateからPublicに変更してみたのですが、
エラーはなくなりません。

エラーを回避する方法、別ファイルからSerialPortを操作する方法を教えていただけますでしょうか。
他の質問サイトにて投稿させていただのですが、質問内容が悪いのか回答をいただくことができず、
そちらを削除して、こちらにて質問させていただいている次第です。
よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: シリアルポートの操作
記事No11146
投稿日: 2013/09/04(Wed) 23:36
投稿者オショウ
> エラーを回避する方法、別ファイルからSerialPortを操作する方法を教えていただけますでしょうか。

  やり方は、何通りかありますが・・・

  掲示板で説明できるほど簡単ではありません。
  言葉で説明するならば・・・

  1. ModuleファイルにPublic で、Form1 のインスタンスを
     格納する変数を宣言する
  2. Form1 をNewしている部分で、そのPublicで宣言した変数
     にインスタンスを代入
  3. 他のModuleから、そのインスタンス経由でSerialPort1に
     アクセスする。
  でしょうか・・・

  私は、融通が利くようにSerialPort1 をフォームに配置しないで
  動的に生成して使い回しします。
  そうすることでどうにでもなるプログラムを作成できますし、
  機器と通信する為もクラスをDLLとして分離できるようにもなり
  ますので。

  今からDLLに分離するプログラムに変形させるには手間だと思います
  ので、Public宣言したインスタンス経由でForm1内のSerialPort1 に
  アクセスできるようにした方が楽かと。

  ただし、Form1 を起動フォームにしないで、Sub Main で起動する
  ようにしたら、スンナリとプログラムを書けるのでは無いでしょう
  か?

以上。参考まで

[ツリー表示へ]
タイトルRe^2: シリアルポートの操作
記事No11148
投稿日: 2013/09/05(Thu) 21:40
投稿者レフティー
オショウ様 アドバイスありがとうございます。

>   1. ModuleファイルにPublic で、Form1 のインスタンスを
>      格納する変数を宣言する
>   2. Form1 をNewしている部分で、そのPublicで宣言した変数
>      にインスタンスを代入
>   3. 他のModuleから、そのインスタンス経由でSerialPort1に
>      アクセスする。

上記手順に沿って処置したところ、思い通りに他ModuleからForm1に配置した
SerialPort1にアクセスできました。

>   私は、融通が利くようにSerialPort1 をフォームに配置しないで
>   動的に生成して使い回しします。
>   そうすることでどうにでもなるプログラムを作成できますし、
>   機器と通信する為もクラスをDLLとして分離できるようにもなり
>   ますので。
>
ところで、SerialPort1をフォームに配置しないという上記方法、
今後のためにも検討したいのですが、
理解、習得のためにとっかかりとなるような参考先等ございますでしょうか?
もしよろしければ教えていただけますとありがたいです。

[ツリー表示へ]
タイトルRe^3: シリアルポートの操作
記事No11149
投稿日: 2013/09/05(Thu) 23:20
投稿者オショウ
> ところで、SerialPort1をフォームに配置しないという上記方法、
> 今後のためにも検討したいのですが、

  http://msdn.microsoft.com/ja-jp/library/cc825644.aspx
  http://stackoverflow.com/questions/466474/how-do-i-use-datareceived-event-of-the-serialport-port-object-in-c

  検索すれば、たくさんヒットしますが・・・
  きれいなコードが書かれているところがそう無いので
  こんなところでしょうか。

以上。参考まで

[ツリー表示へ]
タイトルRe^4: シリアルポートの操作
記事No11151
投稿日: 2013/09/07(Sat) 21:49
投稿者レフティー
オショウ様 参考リンク先ありがとうございます。
スキルアップを目指し、参考にさせていただきます。

[ツリー表示へ]