public int GetEncoderCurrPos(int encChn, out double pos) { pos = 0; if (!IsOpen) { return((int)ErrorDef.NotOpen); } if (encChn < 0 || encChn >= EncoderChannels) { throw new ArgumentOutOfRangeException("GetEncoderCurrPos(encChn ,...) fialed By:encChn = " + encChn + " is outof range:0~" + (EncoderChannels - 1)); } if ((pulseFactors[encChn]) <= 0) { throw new ArgumentOutOfRangeException("GetEncoderCurrPos(encChn ,...) fialed By:factor<=0,factor=" + pulseFactors[encChn]); } int ret = APS168.APS_get_position_f(encChn, ref pos); if (ret != 0) { return((int)ErrorDef.InvokeFailed); } pos = pos / ((double)pulseFactors[encChn]); return((int)ErrorDef.Success); }
/// <summary> /// 读取反馈位置计数器计数值 /// </summary> /// <param name="axisNo"></param> /// <returns></returns> public double GetFeedbackPosition(int axisNo) { var tmp = 0.0; APS168.APS_get_position_f(axisNo, ref tmp); return(tmp); }
public override void GetAxisPosition(uint axisindex, ref double paramvalue) { if (!m_isInitialed) { throw new Exception("请先初始化"); } if (!m_isLoadConfigFile) { throw new Exception("未加载xml配置文件"); } APS168.APS_get_position_f((int)axisindex, ref paramvalue); }
private void btnSetInt_Click(object sender, EventArgs e) { // 开启1个DI上升沿中断 var board_id = 0; var item = 9; // DI interrupt rising // Step 1: set interrupt factor var interruptId = APS168.APS_set_int_factor(board_id, item, 0, 1); // Step 2: set interrupt main switch var ret = APS168.APS_int_enable(board_id, 1); // Enable the interrupt main switch BeginInvoke(new Action(() => { richTextBox2.Text += "Interrupt Enabled\r\n"; })); //开启线程 Task.Factory.StartNew(() => { var count = 0; while (true) { if (APS168.APS_wait_single_int(interruptId, 0x0000ff) == 0) //Wait interrupt { double pos = 0; APS168.APS_get_position_f(0, ref pos); APS168.APS_reset_int(interruptId); BeginInvoke(new Action(() => { richTextBox2.Text += string.Format("Interrupt Postion[{0}] = {1}\r\n", count++, pos); richTextBox2.SelectionStart = richTextBox2.TextLength; richTextBox2.ScrollToCaret(); })); } } }); }
public void GetPostionAbs(ref double x, ref double y) { APS168.APS_get_position_f(_selectAxisX, ref x); APS168.APS_get_position_f(_selectAxisY, ref y); }
private void tmrUpdateUi_Tick(object sender, EventArgs e) { if (_card0.IsLoadXmlFile) { _selectAxis = Convert.ToInt32(cmbSelectAxis.SelectedItem); double d = 0; APS168.APS_get_position_f(_selectAxis, ref d); txtFeedbackPos.Text = d.ToString("f0"); txtFeedbackPosition.Text = d.ToString("f0"); switch (tabControl1.SelectedTab.Name) { case "tabMotion": int index; bool status; int motionIoStatus, motionStatus; //刷新MotionIoStatus motionIoStatus = APS168.APS_motion_io_status(_selectAxis); foreach (var label in grpMotionIo.Controls.OfType <Label>()) { if (label.BorderStyle == BorderStyle.FixedSingle) { index = Convert.ToInt32(label.Tag); status = (motionIoStatus & (1 << index)) != 0; label.BackColor = status ? Color.LawnGreen : Color.DimGray; } } //刷新MotionStatus motionStatus = APS168.APS_motion_status(_selectAxis); foreach (var label in grpMotion.Controls.OfType <Label>()) { if (label.BorderStyle == BorderStyle.FixedSingle) { index = Convert.ToInt32(label.Tag); status = (motionStatus & (1 << index)) != 0; label.BackColor = status ? Color.LawnGreen : Color.DimGray; } } //刷新Feedback信息 double value = 0; APS168.APS_get_command_f(_selectAxis, ref value); txtCommandPosition.Text = value.ToString("f0"); //APS168.APS_get_position_f(_selectAxis, ref value); //txtFeedbackPos.Text = value.ToString("f0"); //txtFeedbackPosition.Text = value.ToString("f0"); APS168.APS_get_target_position_f(_selectAxis, ref value); txtTargetPosition.Text = value.ToString("f0"); APS168.APS_get_error_position_f(_selectAxis, ref value); txtErrorPosition.Text = value.ToString("f0"); APS168.APS_get_command_velocity_f(_selectAxis, ref value); txtCommandVelocity.Text = value.ToString("f0"); APS168.APS_get_feedback_velocity_f(_selectAxis, ref value); txtFeedbackVelocity.Text = value.ToString("f0"); //刷新ServoOn, motionIoStatus第7位 status = (motionIoStatus & (1 << 7)) != 0; lblServoOn.BackColor = status ? Color.LawnGreen : Color.DimGray; //刷新JOG正 和 JOG负 var jogPostive = (motionStatus & (1 << 15)) != 0 && (motionStatus & (1 << 4)) != 0; var jogNegative = (motionStatus & (1 << 15)) != 0 && (motionStatus & (1 << 4)) == 0; lblJogPostive.BackColor = jogPostive ? Color.LawnGreen : Color.DimGray; lblJogNegative.BackColor = jogNegative ? Color.LawnGreen : Color.DimGray; break; case "tabIo": var diValue = 0; APS168.APS_read_d_input(_card0.CardId, 0, ref diValue); foreach (var label in grpDi.Controls.OfType <Label>()) { if (label.BorderStyle == BorderStyle.FixedSingle) { index = Convert.ToInt32(label.Tag); status = (diValue & (1 << index)) != 0; label.BackColor = status ? Color.LawnGreen : Color.DimGray; } } var doValue = 0; APS168.APS_read_d_output(_card0.CardId, 0, ref doValue); foreach (var label in grpDo.Controls.OfType <Label>()) { if (label.BorderStyle == BorderStyle.FixedSingle) { index = Convert.ToInt32(label.Tag); status = (doValue & (1 << index)) != 0; label.BackColor = status ? Color.LawnGreen : Color.DimGray; } } break; case "tabTrigger": { var count = 0; APS168.APS_get_trigger_count(0, 0, ref count); txtTriggerCount0.Text = count.ToString(); APS168.APS_get_trigger_count(0, 1, ref count); txtTriggerCount1.Text = count.ToString(); } break; case "tabPtline": { if (_ptEnabled) { txtTotalPoint.Text = _bufTotalPoint.ToString(); txtBufFreeSpace.Text = _bufFreeSpace.ToString(); txtbufUsageSpace.Text = _bufUsageSpace.ToString(); txtRunningCnt.Text = _bufRunningCnt.ToString(); } } break; } } }