ページ 1 / 1
方向を示す画面
Posted: 2011年10月31日(月) 10:31
by ery
こんにちは
初心者なんですが、VC6.0でプログラムを書こうとしています。
機械から出され、分かりやすくその実験結果を表示する、ユーザインタフェースを作りたいのですが全く分からないので、お助け願います。
3×3の9個の数字がその位置ごとに機械から入力され
それぞれの結果を表示し、大きい数字には異変がある為と予想されるので、だいたいの位置を把握する為に
結果を異変がある方へと導くように示したいのですが
どの様なプログラムになるのでしょうか。
操作者はその結果を見て機械を指示された方向に動かし、また結果を見る。といった繰り返しをします。
数値だけでは直感的に分かりずらいので視覚的に分かりやすいように
色などを用いて表示したいです。(だいたい5色くらい)
すごく分かりずらくてすいません。
具体的な計算方法の案としては二つあって
①中心の値からその周りにある値を引き算してそれを各方向へのベクトルとして
そのベクトルを合成した方向に進むように矢印で表示する。
その際に、ベクトルの長さも情報として載せる。
また数値は0から上限がおおよそ500くらいなので入力された初期値で大きいほうが赤
小さいと青、といったように色分けをする
という方法です。
②全体の平均をとり、それと個々の値を比較して、その差が大きければ赤、小さければ青
といったようにいろでだいたいの進むべき方向が分かる
といった方法です。
本当に伝わりずらいかと思いますがよろしくお願いします。
Re: 方向を示す画面
Posted: 2011年10月31日(月) 11:05
by softya(ソフト屋)
描画ですが、Win32APIとMFCのどちらを使われる予定でしょう?
細かい情報も頂きたいのでフォーラムルール(規約)にテンプレートがありますので、それを使って書いてみてください。
http://dixq.net/board/board.html
テンプレートで書く時は使える言語の知識について出来るだけ詳しく書いてください。C言語は使える。C++はダメなど。
あと、出来ればイメージが分かる絵があると嬉しいのですが。
↓ こう云うのをお使いください。
http://www.fastpic.jp/
Re: 方向を示す画面
Posted: 2011年10月31日(月) 11:13
by non
さっぱりわからない。
機械とパソコンはどうやってつながってるの?
VC6.0でないといけないの?
Re: 方向を示す画面
Posted: 2011年10月31日(月) 11:18
by softya(ソフト屋)
一番わからないのは、ここですね。
3×3の9個の数字がその位置ごとに機械から入力
って言うのが具体的なイメージが湧きません。
3x3の9つのゾーンに区切られた各ゾーンごとに数値が機械から送られてくるって意味でしょうか?
Re: 方向を示す画面
Posted: 2011年10月31日(月) 11:21
by softya(ソフト屋)
あと中心と呼ばれるものが良く分かりません。
中心の値からその周りにある値を引き算してそれを各方向へのベクトルとして
そのベクトルを合成した方向に進むように矢印で表示する。
中心と呼ばれるものと各ゾーン(区画?)と機械の移動の関係を説明してください。
Re: 方向を示す画面
Posted: 2011年11月02日(水) 10:43
by ery
たくさん教えていただいてありがとうございます。
自分は今何がしたくて
自分はロボットを遠隔操作し、超音波装置をからの超音波画像と
縦に3こ横に3この9マスに並んだひずみゲージを使用し数値として出力されるデータをPC上に表示する、
ユーザインタフェースを作りたいと思っています。操作者がその画面を見て結果を判断するものです。
どう取り組んで(作ったプログラムはどれで
私が作ったものではないのですが、6.0を使用して超音波画像を表示するものは出来ていて
そのプログラムを参考にし追加していきたいのですが、私は全くプログラムの(というかPC自体の)
知識と経験がない状況です。
正直何から取り組んだらいいのかも分からず勉強してはいるのですが時間もあまりない状況です。
描画ですが、多分Win32APIだと思います。
画像の乗せ方はあっているでしょうか?
小さい機械がひずみゲージでここをロボットで対象物に当て硬さの差異によって硬い位置を探す為に
視覚的に操作しやすく色などで表示を考えています。
Re: 方向を示す画面
Posted: 2011年11月02日(水) 10:45
by ery
すいません画像が載せれていなかったようなのでもう一度書きます

Re: 方向を示す画面
Posted: 2011年11月02日(水) 10:59
by softya(ソフト屋)
とりあえず9区画にわかれた値を見て、ベクトルと色分けを行えば良いんですね。
慣れた人にはそれほどでもない処理ですが、ほぼ素人となるとかなり難しいと思います。
Win32APIの参考サイト。
「標準 Windows API」
http://wisdom.sakura.ne.jp/system/winap ... index.html
「Win32API(C言語)編 トップページ」
http://www.geocities.jp/ky_webid/win32c/index.html
この書かれ方をしていればWin32APIで間違いないでしょう。
それに対して、
「MFC編INDEX」
http://www.kumei.ne.jp/c_lang/indexmfc.html
の書かれ方をしている場合は、MFCの可能性が高いです。
見分け方は、classとか出てきたり::とか出てきたらMFCを疑ったほうが良いでしょう。
まず、そこを確認してください。出来ればソースコードの一部を見せてもらえると正確にわかると思います。
【追記】
時間がないとのことですので締め切りを明らかにしてもらいたいのと、このペースでやり取りしていては進展するものも進展しません。
本当にやばいと思うのだったら、やり取りの頻度アップと多分学内からのアクセスでしょうが、それ以外の場合でもやり取りすることをお勧めします。
Re: 方向を示す画面
Posted: 2011年11月02日(水) 11:31
by non
ひずみゲージから出てくる電圧をPCに入力しているということは、アナログ入力ボードを
使っているのではないですか?すると、ActiveXコンポーネントが提供されているのかな。
ユーザーインターフェースがどうのという前に、ひずみゲージの値をディスプレイに表示は
できるの?
Re: 方向を示す画面
Posted: 2011年11月25日(金) 10:16
by ery
以前たくさんの返信をいただいていたのに連絡せず大変申し訳ありませんでした.
学内でしかプログラムは組めないのですが,これからは連絡だけでも学内,自宅共に頻度を上げ取り組みたいと思っていますのでご指導のほどよろしくお願いします.
また,期限が一月の頭くらいと延長されましたのでそれまでに何とか仕上げたいと考えております.
教えていただいた,サイト拝見しましたが
一応ソースファイルの一部をコピーしました.
code
// cap.cpp : インプリメンテーション ファイル
//
#include "stdafx.h"
#include "slrobo.h"
#include "cap.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Ccap
Ccap::Ccap()
{
}
Ccap::~Ccap()
{
}
BEGIN_MESSAGE_MAP(Ccap, CButton)
//{{AFX_MSG_MAP(Ccap)
// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Ccap メッセージ ハンドラ
/code
Re: 方向を示す画面
Posted: 2011年11月25日(金) 10:39
by softya(ソフト屋)
コードタグは[]で囲んでくださいね。 フォーラムルール→
http://dixq.net/board/board.html
で、コードを見るかぎりC++でMFCを使っているものだと思いますが、これは初心者にはかなり厳しいと思います。
もし何も知らないとC++を学習するだけで死に物狂いで数ヶ月はかかるものです。MFCもともなると一年以上かかっても仕方がないと言えます。
なにかを端折るとしてもソース全容を把握している人がいないと直すところもわかりません。
「VC++,MFCでのプログラミングでのTips CRIMSON Systems」
http://www.crimson-systems.com/tips/index.html
ここの内容が理解できますでしょうか?
それとnonさんの質問に答えていただけますか?
[補足]
ちなみに自宅で期限付きですがMFCを勉強する方法はあります。
VisualStudio2010 Professionalの体験版が90日間だけつかえます。
http://www.microsoft.com/japan/visualstudio/try
ただ問題があってVC6.0とかなりインターフェイスが違うんですよね。
Re: 方向を示す画面
Posted: 2011年11月28日(月) 09:51
by ery
返信遅くなってすいません
ひずみゲージの値をディスプレイに表示は装置を作る人が作りましたが,MATLABで作ってある状態です.
やはり難しいのですね.
新しく違う方法で作成も考えたのですが,そうすると既存のプログラムとは互換性がなくなってしまいますよね...?
Re: 方向を示す画面
Posted: 2011年11月28日(月) 09:59
by ery
先ほどのサイトですが,
現段階では理解できません
せっかく教えていただいたのにすいません
Re: 方向を示す画面
Posted: 2011年11月28日(月) 10:29
by softya(ソフト屋)
約1ヶ月で出来る程度のものに抑えないと行けません。
>ひずみゲージの値をディスプレイに表示は装置を作る人が作りましたが,MATLABで作ってある状態です.
もう一度、整理をお願いします。
既存のプログラム、ひずみゲージの値をディスプレイに表示するMATLABのプログラム、提示されたC++/MFCのコードの関係が良く分かりません。
C++/MFCのプログラムでもひずみゲージの値は取得出来ているのでしょうか?
>新しく違う方法で作成も考えたのですが,そうすると既存のプログラムとは互換性がなくなってしまいますよね...?
既存のプログラムとどう接続するかです。
VBなどの方が楽でしょうが、それでも一ヶ月は短いです。
他のプログラミング言語や環境で自信のあるものはありますか?
[追記]
>やはり難しいのですね.
厳しいこと言いますが、期間的な事と知識を合わせて考えると、野球で例えると9回裏15点差で負けているぐらいピンチです。
あるいは、サッカーならロスタイムで10点差で負けているぐらいピンチで、逆転ののぞみはほとんどない状態だと思って下さい。
Re: 方向を示す画面
Posted: 2011年11月29日(火) 14:33
by ery
既存のプログラム、ひずみゲージの値をディスプレイに表示するMATLABのプログラム、提示されたC++/MFCのコードの関係が良く分かりません。
C++/MFCのプログラムでもひずみゲージの値は取得出来ているのでしょうか?
>正直私の感覚ではひずみゲージからの値は取得できていないという状況で正しいと思います.
新しく違う方法というのは,MATLABやラボビュウなどで作成する方法ということですが,
何が今回のシステムに適しているかがわからなかった為,既存のプログラムと同じC++を使用しようと考えました.
接続の方法は最悪後回しで,自身で適当な数値を入力してそれから方向を示すことは不可能でしょうか?
他のプログラミング言語や環境で自信のあるものないので
ご指摘いただいたように非常に厳しい状況と思い,今回相談させていいただいたしだいです....
Re: 方向を示す画面
Posted: 2011年11月29日(火) 14:52
by softya(ソフト屋)
手入力ならグラフィックが描画できる言語ならどれでも可能ですがC++とMFCの組み合わせで行うことはそれらの中でも高難度に属します。
ひずみゲージの値の取得が、どの様なインターフェイスで行われるか分かりませんので他の言語を提示してもよいかどうかも分かりません。RS232Cでは無いのでしょうか?
>MATLABやラボビュウ
申し訳ないですが、それらは私は詳しく有りません。
手入力ならこういう言語なら容易ですが未経験者がどのぐらいの期間で作れるか予想もつきません。それと下に示した言語たちは将来的に「ひずみゲージの値」の自動取得は困難が予想されます(できない可能性もあります)。
「Small Basicで学ぶプログラミング」
http://homepage2.nifty.com/nobukit/smallbasic.html
「(仮称)十進BASICのホームページ」
http://hp.vector.co.jp/authors/VA008683/
Re: 方向を示す画面
Posted: 2011年11月29日(火) 17:48
by バグ
>>正直私の感覚ではひずみゲージからの値は取得できていないという状況で正しいと思います.
問題を整理して落ち着いて考えましょう。
ではどうやったら取得できるのですか?
まず一番に必要になるのは、値の取得方法じゃないのですか?
現状はどういう方法でパソコンにデータを送信していますか?
なんかしらのケーブルでつながっていると思われますが、そういう情報は出せませんか?
ひずみゲージを出力する機械は既製品でしょうか?それとも完全なる自作品でしょうか?
もし、既製品だったら、メーカーと型番が分かればそこから情報を引っ張り出せると思いますし、場合によっては、メーカーのサポートセンターに電話してみるのもいいでしょうし・・・。
もし、自作品(多分ありえなさそうだけど・・・)だったら、作った人に仕様を確認しにいくべきでしょう。
※分からない、分からないでは、全く前に進みませんよ。
Re: 方向を示す画面
Posted: 2011年11月29日(火) 18:05
by softya(ソフト屋)
とにかく、やり取りのペースが遅すぎます。一日一回。多くて週5回では進みようがありません。
このやり取りを再開して1週間立ちましたが具体的な進展はありましたか?
このままズルズルと4週間が経過して今年が終わっても良いのでしょうか?
よく考えて行動なさってください。4週間なんてあっという間です。
Re: 方向を示す画面
Posted: 2011年12月02日(金) 09:45
by bitter_fox
あれから全然音沙汰がないですが大丈夫ですか?
1月まで完全に一か月切りましたよ。
超手抜きですが、Javaで作ってみました。参考にしてください。
バグがあるかもしれません。
とにかく何か動かないと事態は変わりませんよ。
どのようにしたら取りあえず値を取得できるのか調べてみましょう。
[hr]
矛盾があったり漠然としてたりで話がつかめないですね。
矛盾というのは
ery さんが書きました:
どう取り組んで(作ったプログラムはどれで
私が作ったものではないのですが、6.0を使用して超音波画像を表示するものは出来ていて
>正直私の感覚ではひずみゲージからの値は取得できていないという状況で正しいと思います.
超音波画像を表示するプログラムと今あるプログラムはどういう関係なのでしょうか?
ery さんが書きました:
ひずみゲージの値をディスプレイに表示は装置を作る人が作りましたが,MATLABで作ってある状態です.
つまり超音波画像のプログラムとは関係が無くMATLABで書かれているという事ですね。
ery さんが書きました:
何が今回のシステムに適しているかがわからなかった為,既存のプログラムと同じC++を使用しようと考えました.
今度は既存のプログラムというのがC++で書かれていることになっています。
結局今のプログラムは何で書かれていて何が出来ているのでしょう?
憶測でなんですが次のような状態でしょうか?
コード:
既存1.MATLABで作られていた
→値の表示も出来ていた
→色付けとかをしようとして詰んだ
既存2.結果C++で書き直そうとした
→超音波画像は表示できた
→現状値が取得できない
(ここまでは別の誰かが作成)
今
→このままC++で作る
→MATLABに戻る
→他の言語で作る
装置の仕様や現在どこまで作成されているのかをはっきりとさせましょう。
コード:
・装置の仕様
・・装置とコンピュータの接続法
・現在どこまで出来てるのか(既存のプログラムが複数ある場合は分けて)
・・使用している言語
・・値を取得できているのか
・・どのような形で出力されているのか
・・使用している言語でグラフィカルな出力が出来るのか
・これからどう作るか
・・使用する言語
・・・現在と違う場合はどのように互換性を保つのか
・・その言語で作成する場合どのように装置と接続するのか
・・描画にはどのライブラリを使うのか
Re: 方向を示す画面
Posted: 2011年12月07日(水) 10:07
by ery
C++とMFCの組み合わせというのは難易度が高かったのですね...
ひずみゲージの値の取得が、は現状難しそうなので今は手入力で値を入れることにしたら
多少は希望が見えるでしょうか?
Re: 方向を示す画面
Posted: 2011年12月07日(水) 10:10
by ery
ひずみゲージを出力する機械は既製品でしょうか?
>既製品だとおもいます.
メーカーと型番さらサポートセンターに電話してみようと思います.
Re: 方向を示す画面
Posted: 2011年12月07日(水) 10:12
by ery
とにかく、やり取りのペースが遅すぎます。一日一回。多くて週5回では進みようがありません。
>他の仕事にも追われてて遅くなりすいません,更に頻度を上げて進めたいと思います.
Re: 方向を示す画面
Posted: 2011年12月07日(水) 10:34
by softya(ソフト屋)
bitter_foxさんの質問にもお応え下さいね。
ery さんが書きました:C++とMFCの組み合わせというのは難易度が高かったのですね...
ひずみゲージの値の取得が、は現状難しそうなので今は手入力で値を入れることにしたら
多少は希望が見えるでしょうか?
厳しいことを言いますね。
手入力で意味があるのかなど問題がありますが、そもそもプログラミングができないんですよね?
初歩の初歩のプログラミングだけでも一日4時間で一ヶ月ぐらいかかってもおかしくありません。
どのプログラミング言語でも良いので入門書は読まれましたか?実際に一週間やってみてください。その上で希望があるか無いか判断できると思いますが、実際のところほぼ希望はない状態だと思ってもらって間違い無いです。最初の質問から1ヶ月以上を無駄に過ごした取り返しはもう付きません。
ery さんが書きました:とにかく、やり取りのペースが遅すぎます。一日一回。多くて週5回では進みようがありません。
>他の仕事にも追われてて遅くなりすいません,更に頻度を上げて進めたいと思います.
私達に言い訳をしても仕方がありません。困るのはeryさん自身ですよ。
会社の仕事なら時間が無いからできませんと言うのは許されませんので引き受けた以上は何をしてもやり遂げないといけません。この課題は、そのぐらい責任感を持って完遂しなくてはいけないものではないのでしょうか?
前の回答から一週間が過ぎていますので、あと1ヶ月を切りました。
Re: 方向を示す画面
Posted: 2011年12月07日(水) 10:40
by ery
超手抜きですが、Javaで作ってみました。参考にしてください。
バグがあるかもしれません。
>ありがとうございます.
とにかく状況を自分なりに整理しました.
・まず,合同で研究していますがぞれぞれの装置を作る人など作成者が違うため,私はもともとパソコンやプログラムの知識もない上,装置や機械の知識もありません.
・C++6.0で完成しているプログラミングがあります,これは去年別の人が超音波画像を表示する為のユーザインタフェースを作成したものです,
・これとは別に違う装置から(ひずみゲージの結果)の出力結果を表示するユーザインタフェースを作成したいと考えています.
・のちに一つの画面上に双方とも表示させたいので,同じ言語のC++6.0 を使用しようと思っています.
・現状ひずみゲージの値をディスプレイに表示はできません.なので手入力などにしたいと思います.
・MATLABという単語を出してしまいましたが,ご指摘の通り超音波画像のプログラムとは関係が無く簡易的に表示しただけになります。
Re: 方向を示す画面
Posted: 2011年12月07日(水) 10:51
by ery
厳しいご指摘非常に感謝しています。
以前C++2010の入門書は読み,すこしよんで本当に初歩的なプログラムは組みました.もう一度やり直そうと思います.
Re: 方向を示す画面
Posted: 2011年12月07日(水) 11:02
by softya(ソフト屋)
ery さんが書きました:・まず,合同で研究していますがぞれぞれの装置を作る人など作成者が違うため,私はもともとパソコンやプログラムの知識もない上,装置や機械の知識もありません.
本来、知識がない人が担当すべき物ではありません。やるとしても準備期間を含めて数ヶ月かけて取り組むべき問題で、それでも相当な困難が予想されます。
「合同の研究」が頓挫することを考えれば担当を変わってもらったほうが良いと思いますよ。代われる人がいないのかも知れませんがeryさんは合同の研究のメンバーとよく相談すべきです。
いっその事ハードで作ったら?と提案しようかと思いましたが電子回路の知識もないとすると手のうちようが無いです。
ery さんが書きました:厳しいご指摘非常に感謝しています。
以前C++2010の入門書は読み,すこしよんで本当に初歩的なプログラムは組みました.もう一度やり直そうと思います.
コピペしたのは組んだとは言いませんので、何も無いところから組めて始めてプログラミングできるようになった状態です。
(1)C++6.0で完成しているプログラミングがあります,これは去年別の人が超音波画像を表示する為のユーザインタフェースを作成したものです,
これとは別に違う装置から(ひずみゲージの結果)の出力結果を表示するユーザインタフェースを作成したいと考えています.
ハードウェアとのインターフェイスを解決することも困難なので諦めたほうが良いと思います。
(2)のちに一つの画面上に双方とも表示させたいので,同じ言語のC++6.0 を使用しようと思っています.
これも期間的に無理だと思います。C++とMFCを使うこととは諦めて下さい。
(3)現状ひずみゲージの値をディスプレイに表示はできません.なので手入力などにしたいと思います.
これでもかなり困難です。
特にC/C++系での開発はあきらめてください。プログラミング言語の中でも特に難易度が高いです。
Re: 方向を示す画面
Posted: 2011年12月07日(水) 11:17
by non
何かの研究だということですが、研究目的がゲージの表示でなく、それから得られるデータを使って何かをしたいのなら、
外注することをお勧めします。ただ、eryさんの説明ではハードがどうなっているのか、インターフェースがどうなっているのか
さっぱりわかりません。直接、現場で説明ができる業者を選ぶ必要がありそうです。
Re: 方向を示す画面
Posted: 2011年12月07日(水) 16:20
by bitter_fox
ery さんが書きました:すいません画像が載せれていなかったようなのでもう一度書きます

作ってて思ったんですけど色分けの値の境界ってこれであってるんですか?
広めの
コード:
151 <= x
101 <= x <= 150
51 <= x <= 100
1 <= x <= 50
x <= 0
と解釈しても0.5や50.2や100.9や150.3などが抜けてしまうのですが・・・
[hr][追記]
ery さんが書きました:
ひずみゲージの値をディスプレイに表示は装置を作る人が作りましたが,MATLABで作ってある状態です.
個人的に思うのはこのMATLABのプログラムの出力を標準出力にして、それと値を標準入力から受け取ってカラーリング・ベクトル表示するプログラムとをパイプで繋げば簡単に作れるんじゃないのかなと思うのですが、MATLABで作ってあるプログラムの出力を標準出力にすることは可能ですか?