• 締切済み

設定ダイヤログを作りたいのですが。

設定ダイヤログを作りたいのですが。 C#にてシリアル通信送信受信するアプリを作ってみようかなと思っている初心者です。 「ツール」メニューに「設定」メニューストラップで「設定ダイアログ」frmのフォームを呼び出す 手順まではなんとなく解ります。 フォーム内の設定値を何処に持たせたらいいとか、呼び出すお作法やマナーや定石の書いてあるサイトの お勧めありますでしょうか? やりたいことはRS232Cのポートやボーレートなどの通信設定を行う設定画面を作りたいです。 参考図書だと、当該コントロールをフォームにぶち込んで、すぐその場でプロパティ欄に直書き。とか ComSerialPort.PortName="COM1" ComSerialPort.BaudRate=9600 とフォーム.loadにベタベタ書いてるみたいなものにしか見かけないんです。 近所の小さな本屋で立ち読みしてみたけど、多くはフォーム1枚板のみで完結した超初心向け内容で ・親フォームから子フォームをモーダルでShowDialogで出すときのお作法は? ・設定値は何処に持たせたらいいの?最終的にはアプリ起動しなおしても保持しておきたい。 ・適用やキャンセルしたときの処理は何処に書いた方がいいの? ・設定間違いCOM123とか無いものは弾くか警告かチェックしたいな などなど、基本が解ってません。 参考サイトやサンプル、お勧めございましたら教えてください。

みんなの回答

回答No.1

参考サイトとかは知りませんが、シリアルの通信設定は基本的なレベルなので、設定値の範囲さえ掴んでいれば、あとはフォームに張り付けるコントロールの知識とか、それを使ったプログラミング設計の仕方というところだと思います。 シリアル設定の参考にするなら、Windowsに付いてるハイパーターミナルの設定項目を参考にするのも良いかと思います。(XPなら、スタートメニュー → アクセサリ → 通信) ポート名とかボーレートとか、基本的に設定出来る値は決まっているので、ラジオボタンないしはコンボボックス等で選択する方法が一般的でユーザーフレンドリーだと思います。 > ・親フォームから子フォームをモーダルでShowDialogで出すときのお作法は? 普通にShowDialogで呼び出せばモーダルになるので、特に作法とか意識する必要は無いと思いますが、気を付ける必要があるのは親フォームと子フォームとの間のデータの受け渡しです。「C#」では確かグローバル変数は使えなかったと思うので、データは関数受け渡しになると思います。モーダルダイアログが表示されている間は親フォームには制御が返らないので、データの受け渡しは子フォームが生成されてから破棄されるまでの間で、かつShowDialogの前後で行わなければいけません。 > ・設定値は何処に持たせたらいいの?最終的にはアプリ起動しなおしても保持しておきたい。 一般的にはレジストリに保存しますが、それを避けたい場合は実行ファイルと同じフォルダに設定ファイルとして保存する方法もあります。 > ・適用やキャンセルしたときの処理は何処に書いた方がいいの? Windowsフォームアプリの場合、DialogResultのプロパティが設定されているボタンコントロールが押された場合、またはWindowバーのクローズボタンが押された場合に終了します。 一般的に終了処理を何もしない場合はダイアログでの処理結果はすべて破棄されるので、キャンセルの処理は何もしません。設定とか適用とかの場合はそのボタンが押された時のイベント処理で何かを行うか、あるいは親フォームに制御が戻ってからShowDialogの返り値(押されたボタンDialogResultの値)を見てから何かを行うということになります。 > ・設定間違いCOM123とか無いものは弾くか警告かチェックしたいな COMポートの有無はちょっと簡単に判別する方法が思い付きませんが、実際にポートが使えるかどうかチェックするのかな? いずれにせよ、ポート以外は設定出来る選択肢としてありうるものだけ出してるなら、理論上ありえない設定間違いは起こりません。ただ、この範囲での組み合わせで通信できるかどうかはすべて相手側の機器次第なので(実務とかでやってると相手側の設定が間違ってる場合も多々ある)、必ずしも完全にチェックできるというものではありません。

Passerby01
質問者

補足

引き続き、 >フォーム内の設定値を何処に持たせたらいいとか、 >呼び出すお作法やマナーや定石の書いてあるサイトの 参考サイトとかの情報お待ちしています。 気を付ける必要があるのは・・・ って以降の概論が知りたいです。 (○○してもいいですか?はい/いいえ式 メッセージダイアログぐらいしか本に書いてないので  設定データの受け渡しとかてんで無知です。) ひとまず「設定ダイヤログ」とか「RS232」と云えば、どういった設定項目があって入力欄があるとか、 私の質問と回答者さんの思い描くイメージと、そうそうブレたトンチンカンなやり取りにならないかな?っと。 いきなり上級すぎましたでしょうか・・・ ><; ・子フォームのOKボタンをダブルクリックして出来たクリックイベントに処理を書いたらいいの? ・シリアル通信のコントロールアイコンは親フォームに投げ込めばいいの?子設定ダイアログのフォームにも必要? ・通信設定の構造体をユーザ毎のxmlやREGで保存するには? ・そもそも構造体でまとめるの?個々に変数で持つの?クラスのプロパティ? ・子ダイアログはインスタンス作ってShowDialogするのですか?OKやCANCELで破棄?hide?  もう一回設定しなおすときは、もう一回インスタンス作ってShowDialog? etc・・・他多数。 1から10までお相手していただくには長丁場でご迷惑でしょうし 参考になりそうなサイト、この本がいいよ、とかお勧めありましたら なにとぞよろしくご教示のほどおねがいします。

関連するQ&A

  • VB6のRS232C通信で75bpsは可能ですか?

    WinXP VB6 にて開発をしています。 RS232Cで通信する必要があり、相手側のボーレートが75bpsとのことです。 しかし標準COMポートでは、最低は110bpsしかサポートされておりません。 デバイスマネージャのCOMポートを確認したところ、75bpsにて設定が出来ますので、 WinXP自体は対応されていると思います。 この状況でどうすれば通信が可能でしょうか? たとえば。 このソフトをインストールしたらVBでCOM通信ツールが使える? DLLを作ればいい?? API関数がある?? もしくはこの質問サイトにはプログラミングの猛者がいる。そっちで聞いてみれば? というようなサイト、ご存知でしたら教えて下さい。

  • GPS受信機時計ConnectionError

    GPSでのPC時刻同期のため、以下のハード・ソフトを使用しています。 (1)USB GPS Resiver VFAN UG-353 (2)GPS受信機時計 GPS_Clock.EXE Version 1.4.0.0 for Windows 7/8/10 (1)でGPS測位できることを確認しNMEAフォーマットデータが表示されることは確認できたのですが、(2)でのデータ取り込みに失敗。(2)で Communication Failed!! になってしまいます。 (2)の「ツール」→「設定」→「通信ポート」「ボーレート」を確認・設定し「OK」を設定すると Connection Error COM4  (このときはCOM4:(1)とおなじCOMポートを設定)になってしまいます(ボーレートは9600に設定。これは(1)のボーレートと一致させている)。 デバイスマネジャーを確認すると、 ポート(COMとLPT) → u-blox Virtual COM Port(COM4) と出るので、COMポート設定は合っていると思われます。 なぜ「Connection Error COM4 」となってしまのか、原因がわかりません。 どなたか原因と対処方法をご教授願えないでしょうか。

  • FANUC LADDER ? の通信

    先日FANUC LADDER ? のソフトを購入してPMCのデータをバックアップ、編集するためにCNCのRS232Cポートに接続したのですが、ソフト選択欄にあるツール→通信→接続を選択してもCNC(PMC)と通信できずに『COM1に接続しています→切断されました』となってしまいます。 設定等調べましたが行き詰まってしまい質問させていただきました。 条件ですが パソコン側 通信設定 ボーレート:19200 パリティ:NONE ストップビット:2 CNC側 FANUC 18iM-C 通信設定 ボーレート:9600 パリティ:NONE ストップビット:2 PMCはRB5を使用しています キープリレーK17.1→1 他のソフトでプログラムやパラメータの通信は問題なく、バックアップも取れたのでRS232Cの設定は問題ないとは思うのですが、よいアドバイスがあればよろしくお願いします。

  • ラダープログラムのお手本

    ラダープログラミングを勉強し始めたところの初心者です。 ラダープログラムを書くに当たっての作法や定石のお手本として何か最適な参考資料やWebページなどはありませんか? いくつかWebから参考にしているページなどもあるのですが、 一般に言われるような見やすいプログラムを真似て書くところからスタートしようと思うのですが、 どのプログラムが見易く、どのプログラムが見難いのかを判断する目を持ち合わせていないというのが正直なところです。 自己保持やオルタネイトなどの基礎的な記述についてはおおよそわかりますが、 プログラムを書くにあたって、最初にはこういうことを書きましょう、その次はこんな風に記述しましょう(たとえば、最初に異常回路を書いておく、その次に自動、手動を書いておく、一時停止・異常停止を入れておくなど)という作法がよくわかっていません。 また、こうした作法にのっとって記載されているような例題があればうれしいのですが。 どなたかご存じであればお願いします。

  • XBee、ZigBeeのプログラミングに関して

    XBee、ZigBeeの使用を考えているのですが、 PICで、参考回路があったのですが、PICのTX、RXの通信に接続されていました。 質問内容 (1)XBee、ZigBeeは、共に RS232Cの様なプログラミング感覚で、コマンドの転送が可能なのでしょうか? (2)また、通信速度もボーレートの設定をすれば自由にできるのでしょうか? (3)XBee、ZigBeeで、PCにデータを無線転送した場合、どれぐらいの転送速度(最大)なのでしょうか? (4)参考資料(書籍、サイト等)があれば教えて頂きたいのですが? 初心者なので申し訳ありませんがよろしくお願いいたします。

  • VirtualBoxでのシリアル通信設定について

    VirtualBoxを使用したシリアル通信の設定方法について教えて下さい。 以下、やりたいこと及び、環境(設定)です。 【やりたいこと】 ホストOSとゲストOS間でシリアル通信を使用して、 データの送受信等をやりたいです。 【環境・設定】 ・VirtualBox ver.4.0.10 ・ホストOS WindowsXP SP2   通信ポート設定     COM1 有効     IRQ   04     I/O範囲 03F8~03FF   使用ソフト  ハイパーターミナル、SeriaDdebug ・ゲストOS Fedora8   通信ポート設定(VirtualBoxの設定→シリアル)     ポート1     シリアルを有効化にチェック     ポート番号 COM1(※COM2もやってみましたが、結果は変わりませんでした。)     IRQ     4     I/Oポート 0x3F8     ポートモード ホストデバイス     ポート/ファイルパス COM1     ※ポート2は設定していません。   使用ソフト minicom、自作アプリ ※上記条件でVirtualBoxのfedoraを立ち上げて、ホスト側でシリアル用ターミナルを 起動すると、ポートが開けません等のエラーログ(ポップアップ)が出ます。 設定方法、そもそものできる出来ない等のアドバイス、回答をお願い致します。 よろしくお願いします。

  • ポートの設定についてです。

    ポートの設定についてです。 まったくの初心者なので、なにとぞ不明な文章あるかと思いますが、汲んで頂ければと思います。 あるソフトウエア(電子天秤)を使用するのですが、そこでポート番号の設定欄があり、ちょっと調べたところ、ソフトウェアのポートとPCのポートを同じにしないといけないと言うことが分かりました。 そこで3点確認させてください。 (1)基本的にPCのポートを基準とし、その番号にソフトウェアの方を合わせる形でよいでしょうか? (2)デバイスマネージャーでポート欄を見ると、通信ポート(COM1等)と、もうひとつ(COM6等)の二種類がありますが、これは通信ポートでよろしいのでしょうか? (3)例えば6台パソコンを使用するときに、ポート番号を新たに好きな番号で設定してよいのでしょうか? その場合、どのように設定するのでしょうか? 以上3点お手数ですが、どなたかよろしくおねがいします。

  • COMポートについて

    2点ご質問があります。お願い致します。 1)モバイル使用が至急必要になりまして、   携帯に、通信ケーブルをつないでダイアル   アップ接続を試みました。    あ)デバイスドライバのインストール    い)モデム設定    う)アクセスポイント設定   あ)は正常に完了しました。   い)の設定時に    「COMポートは別のアプリが使用しています」   と出て、設定出来ません。   モデムのプロパティを見ると、   COM1(既定)   COM2   COM3(既定)   COM4   ・・・   とあり、設定したモデムはCOM4になって   いました。設定マニュアルにはCOM3とあるので   設定ミスかな?と思い、何回もドライバの   再インストール>モデム設定   を実施しましたが同様でした。   COM3ポートを使用しているアプリを検索する   方法と使用停止にする方法はどのように   したら良いのでしょうか? 2)COMポートとは何ですか? よろしくお願いいたします。

  • パソコン設定の仕方でいろいろ教えてください。

    パソコン設定の仕方でいろいろ教えてください。 自分は、通信会社の一社員で、今回パソコンの設定まですることになり、いろいろと不安でみなさんの力を貸していただけたら幸いです。 まず最初に聞きたいのは、何に気をつければいいか教えてください。 あと、失敗談とその解決方法も教えてください。今後の参考にしたいです。 ちなみにパソコンは初心者です。 お願いします。

  • 初めての囲碁。

     40歳男性です。将棋は自称初段ですが、囲碁はまったくの初心者です。父が指しているのを横目で見たり、テレビでプロが指しているのを意味もわからず見ている程度で、ルールもよく分かりません。囲碁を将来の趣味として続けて行こうかと考えておりますが、まず基礎からみっちり学習して行きたいと思います。囲碁の打てる人に聞いたところ、定石が大切だとか、9×9盤?で練習するのがいいとか、色々と言われます。ここで質問ですが、具体的にどのような学習法がいいのでしょうか。参考書?とか通信?とか・・・。参考になりそうなことを教えて下さい。よろしくお願いします。