本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:SMC-4DL-PCIボードでの制御プログラム)

SMC-4DL-PCIボードでの制御プログラム

2023/10/18 10:44

このQ&Aのポイント
  • SMC-4DL-PCIボードでアクチュエータを制御するためのプログラム作成に問題があります
  • VC6.0を使用してプログラミングを行い、ビルドしてもアクチュエータが動きません
  • おそらくプログラムのどこかに問題がありますが、初心者でサンプルプログラムも難しく解読できません
※ 以下は、質問の原文です

SMC-4DL-PCIボードでの制御プログラム

2010/01/16 00:47

コンテックさんのSMC-4DL-PCIボードを使用してアクチュエータを動かそうとしています(動かしたいのはオリエンタルモーターさんのELC)。
VC6.0を使用してプログラミングを行い、ビルドして.exeを実行すると何も起きません。
ボードに付属のサンプルプログラムではアクチュエータが動くので、配線ミスということは無いと思います。
おそらく組んだプログラムのどこかがおかしいのだとは思うのですが、恥ずかしながらプログラミング自体初めてなうえ、サンプルプログラムが難しすぎて解読が全く出来ないのでどうしたらいいか困っています。
卒論で使用するのでとにかく早く作り上げなければなりません。

足りない部分、間違いなどあればご指摘お願いします。
(ちゃんとライブラリファイルも追加してあります)

#include "stdafx.h"
#include "CSmc.h"
#include "CSmcdef.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
long Ret;
char *DeviceName ="SMC000" ;
short Id ;
Ret = SmcWInit( DeviceName , &Id );

short PulseMode ;
short DirTimer ;
PulseMode = 5;
DirTimer = 1;
Ret = SmcWSetPulseType( Id , 1, PulseMode , DirTimer );

Ret = SmcWSetInitParam( Id , 1);



short MotionType ;
short StartDir ;
MotionType = 2;
StartDir = 0;
Ret = SmcWSetReady( Id , 1, MotionType , StartDir );

short Coodinate ;
short StopPosition ;
Coodinate = 1;
StopPosition = 1000;
Ret = SmcWSetStopPosition( Id , 1, Coodinate , StopPosition ) ;

Ret = SmcWMotionStart( Id , 1);

Ret = SmcWExit( Id );


return 0;
}

回答 (1件中 1~1件目)

2010/01/16 12:31
回答No.1

さすがにこれだけじゃあわからない
実機もないし

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
//   Ret の 宣言
long Ret;

// DeviceName の宣言 & "SMC000" 代入
char *DeviceName ="SMC000" ;

// Id の 宣言
short Id ;

//   SmcWinit (初期化)失敗したら Ret に なんか変えるので ブレークポイント 作って 見る
Ret = SmcWInit( DeviceName , &Id );

//   PulseMode DirTimer の宣言
short PulseMode ;
short DirTimer ;


//   代入
PulseMode = 5;
DirTimer = 1;

//   失敗したら Ret に なんか変えるので ブレークポイント 作って 見る
Ret = SmcWSetPulseType( Id , 1, PulseMode , DirTimer );

//   失敗したら Ret に なんか変えるので ブレークポイント 作って 見る
Ret = SmcWSetInitParam( Id , 1);


//   宣言
short MotionType ;
short StartDir ;

//   代入
MotionType = 2;
StartDir = 0;

//   失敗したら Ret に なんか変えるので ブレークポイント 作って 見る
Ret = SmcWSetReady( Id , 1, MotionType , StartDir );


//   宣言
short Coodinate ;
short StopPosition ;

//   代入
Coodinate = 1;
StopPosition = 1000;

//   失敗したら Ret に なんか変えるので ブレークポイント 作って 見る
Ret = SmcWSetStopPosition( Id , 1, Coodinate , StopPosition ) ;


//   失敗したら Ret に なんか変えるので ブレークポイント 作って 見る
Ret = SmcWMotionStart( Id , 1);


// 失敗したら Ret に なんか変えるので ブレークポイント 作って 見る
Ret = SmcWExit( Id );


return 0;
}

デバッグの仕方を覚えましょう

たぶん素人なので話がかみ合わないんだと思う

たとえば
char *DeviceName ="SMC000" ;


    char *DeviceName ="SNC000" ;

と打ち間違えても 実行ファイルはできます

コンパイルする前に VC6 だと F8 で ステップ 起動できるはずなので
それで トレース していくべきです

まあ、普通 Ret を 見て エラーが発生したら 処理すべきですが してないので 初心者に優しくない プログラムだと思う
そのプログラムは エラーが発生しても 駄々流しです


デバッグの仕方
http://www.vcppclub.com/kouza/beginner/beginner3.html

まあ、本当に初心者なので ハローワールドから はじめてみたほうがいいです

補足

2010/01/16 16:38

ブレークポイントとは何でしょうか?

デバッグで何か引っかかってもビルドできてしまうことはあるんですか?

実機をお持ちでなかったらおそらくおわかりにならないと思います、
このコードはコンテックさんオリジナルのコードなので・・・

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。