using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using i8094MF_NET;
namespace demo_Start
{
///
/// Form1 的摘要描述。
///
public class Form1 : System.Windows.Forms.Form
{
internal System.Windows.Forms.TextBox TextBox3;
internal System.Windows.Forms.TextBox TextBox2;
internal System.Windows.Forms.TextBox TextBox1;
internal System.Windows.Forms.Label Label6;
internal System.Windows.Forms.Label Label5;
internal System.Windows.Forms.Button Button4;
internal System.Windows.Forms.Button Button3;
internal System.Windows.Forms.Button Button2;
internal System.Windows.Forms.Button Button1;
internal System.Windows.Forms.Label Label4;
internal System.Windows.Forms.Label Label3;
internal System.Windows.Forms.Label Label2;
internal System.Windows.Forms.Label Label1;
public Form1()
{
//
// Windows Form 設計工具支援的必要項
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 呼叫之後加入任何建構函式程式碼
//
}
///
/// 清除任何使用中的資源。
///
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
#region Windows Form 設計工具產生的程式碼
///
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
///
private void InitializeComponent()
{
this.TextBox3 = new System.Windows.Forms.TextBox();
this.TextBox2 = new System.Windows.Forms.TextBox();
this.TextBox1 = new System.Windows.Forms.TextBox();
this.Label6 = new System.Windows.Forms.Label();
this.Label5 = new System.Windows.Forms.Label();
this.Button4 = new System.Windows.Forms.Button();
this.Button3 = new System.Windows.Forms.Button();
this.Button2 = new System.Windows.Forms.Button();
this.Button1 = new System.Windows.Forms.Button();
this.Label4 = new System.Windows.Forms.Label();
this.Label3 = new System.Windows.Forms.Label();
this.Label2 = new System.Windows.Forms.Label();
this.Label1 = new System.Windows.Forms.Label();
//
// TextBox3
//
this.TextBox3.Location = new System.Drawing.Point(40, 280);
this.TextBox3.Size = new System.Drawing.Size(416, 22);
this.TextBox3.Text = "";
//
// TextBox2
//
this.TextBox2.Location = new System.Drawing.Point(288, 224);
this.TextBox2.Size = new System.Drawing.Size(168, 22);
this.TextBox2.Text = "0";
//
// TextBox1
//
this.TextBox1.Location = new System.Drawing.Point(288, 144);
this.TextBox1.Size = new System.Drawing.Size(168, 22);
this.TextBox1.Text = "0";
//
// Label6
//
this.Label6.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.Label6.Location = new System.Drawing.Point(120, 224);
this.Label6.Size = new System.Drawing.Size(152, 24);
this.Label6.Text = "Now Logic Position";
//
// Label5
//
this.Label5.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.Label5.Location = new System.Drawing.Point(120, 152);
this.Label5.Size = new System.Drawing.Size(160, 24);
this.Label5.Text = "Start Logic Position";
//
// Button4
//
this.Button4.Location = new System.Drawing.Point(120, 184);
this.Button4.Size = new System.Drawing.Size(128, 32);
this.Button4.Text = "Move X axis";
this.Button4.Click += new System.EventHandler(this.Button4_Click);
//
// Button3
//
this.Button3.Location = new System.Drawing.Point(120, 112);
this.Button3.Size = new System.Drawing.Size(128, 32);
this.Button3.Text = "Check ERROR";
this.Button3.Click += new System.EventHandler(this.Button3_Click);
//
// Button2
//
this.Button2.Location = new System.Drawing.Point(120, 72);
this.Button2.Size = new System.Drawing.Size(128, 32);
this.Button2.Text = "Config IO";
this.Button2.Click += new System.EventHandler(this.Button2_Click);
//
// Button1
//
this.Button1.Location = new System.Drawing.Point(120, 32);
this.Button1.Size = new System.Drawing.Size(128, 32);
this.Button1.Text = "Driver init";
this.Button1.Click += new System.EventHandler(this.Button1_Click);
//
// Label4
//
this.Label4.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.Label4.Location = new System.Drawing.Point(40, 192);
this.Label4.Size = new System.Drawing.Size(64, 24);
this.Label4.Text = "Step 4:";
//
// Label3
//
this.Label3.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.Label3.Location = new System.Drawing.Point(40, 112);
this.Label3.Size = new System.Drawing.Size(64, 24);
this.Label3.Text = "Step 3:";
//
// Label2
//
this.Label2.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.Label2.Location = new System.Drawing.Point(40, 72);
this.Label2.Size = new System.Drawing.Size(64, 24);
this.Label2.Text = "Step 2:";
//
// Label1
//
this.Label1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular);
this.Label1.Location = new System.Drawing.Point(40, 32);
this.Label1.Size = new System.Drawing.Size(64, 24);
this.Label1.Text = "Step 1:";
//
// Form1
//
this.ClientSize = new System.Drawing.Size(498, 375);
this.Controls.Add(this.TextBox3);
this.Controls.Add(this.TextBox2);
this.Controls.Add(this.TextBox1);
this.Controls.Add(this.Label6);
this.Controls.Add(this.Label5);
this.Controls.Add(this.Button4);
this.Controls.Add(this.Button3);
this.Controls.Add(this.Button2);
this.Controls.Add(this.Button1);
this.Controls.Add(this.Label4);
this.Controls.Add(this.Label3);
this.Controls.Add(this.Label2);
this.Controls.Add(this.Label1);
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
}
#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 Form1_Load(object sender, System.EventArgs e)
{
}
private void Button1_Click(object sender, System.EventArgs e)
{
//====='Step 1 Driver init
if (!Driver_Open)
{
i8094MF.i8094MF_REGISTRATION(cardNo,1);
Driver_Open = true;
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
//====='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
}
private void Button3_Click(object sender, System.EventArgs e)
{
//======'Step 3 Check ERROR
ushort KK=0;
KK=i8094MF.i8094MF_GET_ERROR(cardNo);
System.String MSGG;
if (KK == YES)
{
//Please check the ERROR CODE
//Get X ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_X);
MSGG="Xerr=" + KK + " ";
//Get Y ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_Y);
MSGG=MSGG + "Yerr=" + KK + " ";
//Get Z ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_Z);
MSGG=MSGG + "Zerr=" + KK + " ";
//Get U ERROR CODE
KK=i8094MF.i8094MF_GET_ERROR_CODE(cardNo, AXIS_U);
MSGG=MSGG + "Uerr=" + KK + " ";
//====================================
}
else
MSGG="No Error";
TextBox3.Text=MSGG;
}
private void Button4_Click(object sender, System.EventArgs e)
{
//No ERROR: Step 4 Move X axis
ushort axis=AXIS_X; //for AXIS_X it can be to AXIS_XYZU
TextBox1.Text = i8094MF.i8094MF_GET_LP(cardNo, AXIS_X).ToString();
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);
TextBox2.Text = i8094MF.i8094MF_GET_LP(cardNo, AXIS_X).ToString();//Get X Now position
//wait for axis to stop
}
TextBox2.Text = i8094MF.i8094MF_GET_LP(cardNo, AXIS_X).ToString(); //Get X Now position
}
}
}