このQ&Aは役に立ちましたか?
SMC-4DL-PCIボードでの制御プログラム
2023/10/18 10:44
- 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件目)
さすがにこれだけじゃあわからない
実機もないし
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
まあ、本当に初心者なので ハローワールドから はじめてみたほうがいいです
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
補足
2010/01/16 16:38
ブレークポイントとは何でしょうか?
デバッグで何か引っかかってもビルドできてしまうことはあるんですか?
実機をお持ちでなかったらおそらくおわかりにならないと思います、
このコードはコンテックさんオリジナルのコードなので・・・