• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:この場合、MFCかCLRか)

MFCかCLRか?機器計測値をサーバーにアップするプログラムを作成する方法

kekyo0の回答

  • kekyo0
  • ベストアンサー率62% (5/8)
回答No.2

計測器から値を取得するのは、どのような方法によりますか? シリアル通信ではなく、独自のライブラリやドライバ経由(DeviceIOControl)であるなら、CLR環境では、P/InvokeやC++/CLIを使わなければならない可能性があります。 もし、MFCで手軽に作れそうな感触があるのであれば、MFCで作っても良いと思います。MFCは徐々にレガシーと認識され始めていると思いますが、まだすぐには無くならないでしょう。また、64ビットバイナリも勿論生成出来ます。

tyaeyama
質問者

お礼

お礼が遅くなりまして申し訳ありません。 > 独自のライブラリやドライバ経由(DeviceIOControl)であるなら、 > CLR環境では、P/InvokeやC++/CLIを使わなければならない可能性 そういうことがあるんですか。 ややこしいですね。 今回はMFCを使おうと思います。 ただ、MFC(に限らずC++)をできるのが社内に私ひとりなので、 他の者たちに将来「なぜC#やVBでなくC++(それもMFC)を使ったのか」と責められそうで心配ではあります。 せっかく覚えたMFC、以前は結構使ってたんですが、今やレガシーですか...。 開発言語というのは、移り変わりが激しくて、諸行無常ですね。 とりあえず、別のアプリ開発でC#を勉強してみようと思います。 ありがとうございました。

関連するQ&A

  • [CLR][C++]HTTPPOSTについて

    C++のCLRフォームアプリケーションで開発しています。 プログラムの中で、mixiなどのログインフォームにデータを POSTし、ログインする仕組みが必要になりました。 しかし、検索しても 「MFC」 の文献しか出てこず、 フォームアプリケーションの資源が使えなくて困っています。 このような仕組みをC++CLRフォームアプリケーションで作成することは 出来るのでしょうか。またその方法を教えていただけるとありがたいです。 使用ソフト:VisualStudio2005Academic

  • VC++ 2005 MFC ボタンの無効化

    VC++ 2005 MFC ボタンの無効化 現在スレッドを使ったプログラムを作成しています。 あるボタンを押すと、 親スレッド 1、RS232C受信スレッドを作成 2、RS232Cにデータを送信 3、WaitSingleObjectでイベント待ち 4、受信状態に応じた処理 子スレッド 1、サムチェック等確認して、受信が完了すれば   受信データを格納してCEventのSetEventを発行 というような処理の部分があるのですが、待っている間にウィンドウ内にある ボタンが押せてしまいます。厳密には、イベント待ちを抜けた時点で待っている 間に押せてしまったボタンの処理が走ってしまうのですが。 EnableWindow(FALSE)をやっても駄目でした。 何かいい方法がありませんか??すいませんがよろしくお願いします。

  • MFCでのPC毎の挙動について

    MFC使用のアプリケーションについて質問があります。 WINAPIと混在して、ある絵を描画するアプリケーションを MFCのダイアログベースにて作成しました。 開発を行ったPCでは問題なく想定した動作をしていますが、 別のPCで起動させるとウィンドウのみ出力され、×ボタンのクリックなど 全く動作しない状態になってしまいます。(他のソフトの操作は可能) 実際は待っていると(30分とか)動作する場合もありますが、 当然実用には適していません。 ちなみに一度起動してしまえば、次回は問題なく動くようです。 マルチメディアタイマーとダブルバッファなどを使用していますが、 何か影響しますか? このようにPCの違いで動作が変わってしまう要因をご存知ないでしょうか? 環境は下記のものです。 開発環境↓  XP SP3 VC2003  MFC ダイアログベース その他の実行環境↓  XP SP2 よろしくお願いします。

  • 【MFC】Version情報の取得

    MFCでアプリケーションを作成しています。 リソースビュー⇒「Version」⇒「VS_VERSION_INFO」の、 キー「FILEVERSION」の値を取得するにはどのように実装すれば良いのでしょうか? ご存知の方おられましたら、ご教授お願い致します。 開発環境はVC++2005です。

  • MFCマルチスレッドについて

    MFCマルチスレッドについて COMやIOボードからの入力に応じて動作するアプリを作っています。 AfxBeginThreadにてそれぞれワーカスレッドを作成しCOMやIOから入力があれば AfxBeginThreadを呼んでいるクラスにあるメンバ関数を実行しようとしています。 AfxBeginThreadにて*thisを送り、制御関数内で、mycls->OnButton***()というような 感じで現在は作っています。(OnButton***になっているのはデバッグ用にボタンで あらかじめ作成している関数のためです。) このときに、mycls->OnButton***()は親スレッドで動いていると考えていいのですか? あくまで親スレッドのクラスのメンバ関数を制御関数が動いている子スレッドで実行 しているだけなのでしょうか? 実は、ログ表示のため制御関数の中(受信データを表示)と、mycls->OnButton***()の中 (作業結果を表示)に同じエディットコントロールへの表示部分があります。 表示部分の処理は、いったんCStringで読み込んできて最大文字数チェックを行い、 再度文字数を調節して書き直しということをやっているため、一応クリティカル セクションにはしているのですが、実際どう動いているか分からないため、やり忘れ ていることや、やってはいけないことをやってそうです。 すいませんがご教授願います。

  • 「MFCを使用しない」から「MFCのスタティックライブラリを使用」

    VC++初心者ですが、 Win32Applicationで「MFCを使用しない」で作成したプログラムが正常動作しました。 そこで 「MFCを使用しない」から「MFCのスタティックライブラリを使用」にしてビルドしたところ、リンク中に どんどんエラーがでます。 関数関係のエラーなのですが。 (1) どうすればエラーを無くせるのでしょうか (2) 「MFCのスタティックライブラリを使用」にするとどの様なメリットがあるのか(説明している参考URLなど)。 教えて下さい

  • MFCをDLL化してコンソールアプリから起動

    MFCアプリケーション(プロジェクト作成でMFCアプリケーションを選択)をDLL化して、コンソールアプリケーションからこのMFCをマルチスレッドで起動する方法を教えてください。MFCが起動後、コンソールアプリケーションの処理は次に進行し、MFCは操作可能な状態(アイコンなどがクリック可能で、青丸クルクルにはならない)にしたいです。また、コンソールアプリケーションからもMFCが操作可能にしたいです(例えば、コンソールアプリからAと入力するとファイルのオープンダイアログが開く、、、とか)。

  • C++/CLIとMFC

    よろしくお願いします。 環境はVisual C++ 2005です。 ご存知の方がいらっしゃいましたらご教授ください。 一つのプロジェクトで作成した親Formに対して、 もう一つのプロジェクトで作成した子ウィンドウをプラグインさせ、MDIを作ろうとしているのですが [CLR]->[Windowsフォームアプリケーション]で作成したプロジェクトのFormに対して MFCで作成した子ウィンドウをプラグインさせることは可能なのでしょうか? C++/CLIでMDIを作る時は MDIの親となるFormのIsMdiContainerプロパティをtrueに設定し、 MDIの子となるFormのMdiParentプロパティをMDIの親Formの インスタンスに設定する必要があると思うのですが、 子の部分をMFCを使って作成した場合どのようにすれば 親子関係が作れるのかわからず質問させていただきました。 よろしくお願いします。

  • Perlで配列に設定した値が関数に引き継がれない。

    レンタルサーバ上でPerlのプログラムを作成しているの ですが、動作でよくわからないことがあるので、教えてください。 Perlのプログラムがあるサーバで動作していて、それを 他のサーバに移したのですが、正しく動作しなくなりました。 調べてみると、関数を呼んでいるところで配列の値がうまく 引き継がれていませんでした。 呼び出しの処理は次の通りです。 ●呼び出し元 ret= &SubModule(*DATA1); ●呼び出し先 sub SubModule { local(*DATA1) = @_ if @_; while(($key, $value) = each(%DATA1)) { #配列に対する処理 } #以下省略 このような処理の時に呼び出し元では配列DATA1に 値が入っているのに呼び出し先のSubModuleでは 空になりwhile文を素通りして「#配列に対する処理」 を実行しません。 いろいろ試しているうちに、呼び出し先に1つ余計な whileを入れると配列DATA1に値が入ってきました。 つまり次のように変更すると、うまくいきました。 呼び出し先 sub SubModule { local(*DATA1) = @_ if @_; while(($key, $value) = each(%DATA1)) { } while(($key, $value) = each(%DATA1)) { #配列に対する処理 } #以下省略 こうすると 「#配列に対する処理」が実行されました。 教えていただきたいのは以下の2点です。 (1)元のサーバでは問題なく動作していたのですが、  別のサーバでは、配列の引数がうまく引き継がれ  なくなりました。どういう原因が考えられるでしょうか。  処理上何かまずいところがあるのでしょうか。 (2)呼び出し先でwhile文を一つ入れることで、配列の  値が参照できるようになったのですが、これは  なぜでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • ソケットプログラミングとスレッドについて

    TCP/IPソケットを用いた通信プログラムを作成しています。その上でacceptする処理を専用スレッドにしており、accept後の受信処理をまた別のスレッドで処理しています。コンソールプログラムにおいてサーバとクライアントを用意しテストをしてみるとうまくいくのですが、MFCプログラムにおいて同じネットワーク処理を行ってみると、サーバ側へのconnectは成功するのですが、クライアント側からsendしたときにサーバ側でrecvの戻り値が必ず0にしかならず切断された状態になってしまいます。これはどういったときに発生すると考えられるでしょうか?ちなみにMFCが絡んでいるかどうかということは特にわかっておりません。 どなたかこのような経験をお持ちであればご教授お願い致します。