using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using i8094MF_NET;
namespace demo_first
{
///
/// Form1 的摘要描述。
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
public Form1()
{
//
// Windows Form 設計工具支援的必要項
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 呼叫之後加入任何建構函式程式碼
//
}
///
/// 清除任何使用中的資源。
///
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
#region Windows Form 設計工具產生的程式碼
///
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
///
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
//
// button1
//
this.button1.Location = new System.Drawing.Point(176, 128);
this.button1.Size = new System.Drawing.Size(232, 64);
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.Controls.Add(this.button1);
this.Text = "Form1";
}
#endregion
//======================================================
bool Driver_Open;
byte cardNo=0;
// Axis define
ushort AXIS_X =0x1;
ushort AXIS_Y =0x2;
ushort AXIS_Z =0x4;
ushort AXIS_U =0x8;
ushort AXIS_XY =0x3;
ushort AXIS_XZ =0x5;
ushort AXIS_XU =0x9;
ushort AXIS_YZ =0x6;
ushort AXIS_YU =0xa;
ushort AXIS_ZU =0xc;
ushort AXIS_XYZ =0x7;
ushort AXIS_XYU =0xb;
ushort AXIS_XZU =0xd;
ushort AXIS_YZU =0xe;
ushort AXIS_XYZU =0xf;
byte YES = 1;
byte NO = 0;
byte ON = 1;
byte OFF = 0;
///
/// 應用程式的主進入點。
///
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
//====='Step 1 Driver init
if (!Driver_Open)
{
i8094MF.i8094MF_REGISTRATION(cardNo,1);
Driver_Open = true;
}
//====='Step 2 CONFIG IO
i8094MF.i8094MF_RESET_CARD (cardNo);
i8094MF.i8094MF_SET_PULSE_MODE (cardNo, AXIS_XYZU, 2); //set the pulse output mode
i8094MF.i8094MF_SET_ALARM (cardNo, AXIS_XYZU, 0, 0); //disable the SERVO ALARM Input
i8094MF.i8094MF_SET_ENCODER (cardNo, AXIS_XYZU, 0, 0, 0);//set the encoder input type
i8094MF.i8094MF_SET_MAX_V (cardNo, AXIS_XYZU, 16000); //set the max speed for XYZU
i8094MF.i8094MF_EXD_DISABLE (cardNo, AXIS_XYZU); //set the external input Off
i8094MF.i8094MF_SET_LP (cardNo, AXIS_XYZU, 0); //set the Logic position =0
i8094MF.i8094MF_SET_EP (cardNo, AXIS_XYZU, 0); //set the Encoger position =0
i8094MF.i8094MF_SET_A (cardNo, AXIS_XYZU, 1000); //set the Acc =1000
i8094MF.i8094MF_SERVO_ON (cardNo, AXIS_XYZU); //set the Servo_ON to servo motors
//======'Step 3 Check ERROR
ushort KK=0;
KK=i8094MF.i8094MF_GET_ERROR(cardNo);
//System.String MSGG;
if (KK != YES)
{
//No ERROR: Step 4 Move X axis
ushort axis=AXIS_X; //for AXIS_X it can be to AXIS_XYZU
i8094MF.i8094MF_SET_MAX_V(cardNo, axis, 20000);
i8094MF.i8094MF_NORMAL_SPEED(cardNo, axis, 0); //set axis as Symmetrical T curve mode
i8094MF.i8094MF_SET_V(cardNo, axis, 20000); //set v=10000 PPS
i8094MF.i8094MF_SET_A(cardNo, axis, 100000); //set acc=100000 PPS/S
i8094MF.i8094MF_SET_SV(cardNo, axis, 10); //set start speed=1000 PPS
i8094MF.i8094MF_SET_AO(cardNo, axis, 0); //set offset pulse (at SV speed)= 0 PS
i8094MF.i8094MF_FIXED_MOVE(cardNo, axis, 10000); //run the fixed 10000 Pulse move.
while (i8094MF.i8094MF_STOP_WAIT(cardNo, axis) == NO)
{
i8094MF.system.DoEvents();
System.Threading.Thread.Sleep(1);
//wait for axis to stop
}
long AA=i8094MF.i8094MF_GET_LP(cardNo,axis); //Get X Now position
}
else
{
//Please check the ERROR CODE
//Get X ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_X);
//Get Y ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_Y);
//Get Z ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_Z);
//Get U ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_U);
//====================================
}
}
}
}