FrmPusicanTest.cs 9.8 KB
using PUSICANLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TSA_V.Common;
using TSA_V.DeviceLibrary;
using TSA_V.LoadCSVLibrary;

namespace TSA_V
{
    public partial class FrmPusicanTest : FrmBase
    {
        public FrmPusicanTest()
        {
            InitializeComponent();
        }

        private void FrmPositionList_Load(object sender, EventArgs e)
        {
            FormStatus(false);
            LanguageProcess();
            List<TSAVPosition> list=new List<TSAVPosition> (CSVPositionReader<TSAVPosition>.allPositionMap.Values); 
           
            List<NodeInfo> nodeList = new List<NodeInfo>();
            //nodeList.Add(new NodeInfo(TSAVBean.Node_X, "红外X轴", "红外X轴"));
            //nodeList.Add(new NodeInfo(TSAVBean.Node_Y, "红外Y轴", "红外Y轴"));

            foreach (Dictionary<int, NodeInfo> map in TSAVBean.RotateMap.Values)
            {
                foreach (NodeInfo nodeid in map.Values)
                {
                    nodeList.Add(nodeid);
                }
            }
            uint chaSlv = (uint)ConfigAppSettings.GetIntValue(Setting_Init.Line_NodeAddr);
            nodeList.Add(new NodeInfo( chaSlv, "调宽电机_"+chaSlv, "调宽电机_"+chaSlv));
            this.cmbNode.DataSource = nodeList;
            this.cmbNode.DisplayMember = "NodeName";
            this.cmbNode.ValueMember = "NodeId";

            if (PUSICANControl.Open().Equals(""))
            {
                lblCanMsg.Text =ResourceCulture.GetString(ResourceCulture.DeviceInConnect, "设备连接成功");
                FormStatus(true);
            }
            else
            { 
                lblCanMsg .Text= ResourceCulture.GetString(ResourceCulture.DeviceNotOkMsg, "设备未连接");
                FormStatus(false);
            }
            SetScreen();
            cmbNode.SelectedIndex = cmbNode.Items.Count - 1;
        }
        private void FormStatus(bool open)
        {
            timer1.Enabled = open;
            btnReadAll.Enabled = open;
            btnWriteAll.Enabled = open;
            btnStopMove.Enabled = open;
            btnSpeedMove.Enabled = open;
            btnRelMove.Enabled = open;
            btnGetStatus.Enabled = open;
            btnAbsMove.Enabled = open;
            btnClearStatus.Enabled = open;
            lkSetMaxSpeed.Enabled = open;
            checkBox1.Enabled = open;
            btnSetPosition.Enabled = open;
            btnHomeMove.Enabled = open;
            llblClearp.Enabled = open;
        }
         
          

        private void btnBack_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private uint GetSelectNode()
        {
            return FormUtil.GetuIntValue(txtNode);
        }
        private void btnReadAll_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            this.txtGetPosition.Text = PUSICANControl.GetPosition(nodeid).ToString();
            this.nudMaxSpeed.Text = PUSICANControl.GetMaxSpeed(nodeid).ToString();
            this.nudAddSpeed.Text = PUSICANControl.GetAddSpeed(nodeid).ToString();
            this.nudDelSpeed.Text = PUSICANControl.GetDelSpeed(nodeid).ToString();
            this.nudStartSpeed.Text = PUSICANControl.GetStartSpeed(nodeid).ToString();
            this.nudStopSpeed.Text = PUSICANControl.GetStopSpeed(nodeid).ToString();
            this.cmbXiFen.SelectedIndex = PUSICANControl.getXifenList().IndexOf(PUSICANControl.GetMicroStepping(nodeid).ToString());
            this.nudFengzhi.Text = PUSICANControl.GetMaxPhaseCurrent(nodeid).ToString();
            this.nudShuaijian.Text = PUSICANControl.GetDelPhaseCurrent(nodeid).ToString();
        }

        private void btnWriteAll_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            int value = Convert.ToInt32(this.nudAddSpeed.Value);
            PUSICANControl.SetAddSpeed(nodeid, value);
            value = FormUtil.GetIntValue(this.txtGetPosition);
            PUSICANControl.SetPosition(nodeid, value);

            value = (int)this.nudDelSpeed.Value;
            PUSICANControl.SetDelSpeed(nodeid, value);
            value = (int)this.nudStartSpeed.Value;
            PUSICANControl.SetStartSpeed(nodeid, value);
            value = (int)this.nudStopSpeed.Value;
            PUSICANControl.SetStopSpeed(nodeid, value);
            value = Convert.ToInt32(this.cmbXiFen.Text);
            PUSICANControl.SetMicroStepping(nodeid, value);

            value = Convert.ToInt32(this.nudMaxSpeed.Text);
            PUSICANControl.SetMaxSpeed(nodeid, value);

            value = Convert.ToInt32(this.nudShuaijian.Text);
            PUSICANControl.SetDelPhaseCurrent(nodeid, value);

            value = Convert.ToInt32(this.nudFengzhi.Text);
            PUSICANControl.SetMaxPhaseCurrent(nodeid, value); 
        }

        private void btnSpeedMove_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            int speed = Convert.ToInt32(nudMaxSpeed.Text);
            PUSICANControl.VolMove(nodeid, speed);
        }

        private void btnRelMove_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            int position = FormUtil.GetIntValue(txtPosition);
            PUSICANControl.RelMove(nodeid, position);  
        }

        private void btnAbsMove_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            int position = FormUtil.GetIntValue(txtPosition);
            PUSICANControl.AbsMove(nodeid, position);
        }

        private void btnStopMove_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            PUSICANControl.StopMove(nodeid); 
        }

        private void btnGetStatus_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            int value = 0;
            if (PUSIResult.RET_SUCCESS == PUSICANControl.ReadSDO(nodeid, CAN_Address.ControlStatus, out value))
            {
                string str = Convert.ToString(value, 2).PadLeft(5, '0');

                lblControlStatus.Text = ("status:stop 3:[" + str.Substring(0, 1) + "],busy:[" + str.Substring(1, 1) + "],Locked-rotor state:["
                    + str.Substring(2, 1) + "],stop 2:[" + str.Substring(3, 1) + "],stop 1:[" + str.Substring(4, 1) + "]");
            }
            lblControlStatus.Text += PUSICANControl.GetGPIO(nodeid);
        }

        private void btnClearStatus_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            if (PUSIResult.RET_SUCCESS == PUSICANControl.WriteSDO(nodeid, CAN_Address.ControlStatus, 1))
            {
                lblControlStatus.Text = ("write CAN_Address.ControlStatus sdo ok.");
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (PUSICANControl.Open().Equals(""))
            {
                uint nodeid = GetSelectNode();
                txtGetPosition.Text = PUSICANControl.GetPosition(nodeid).ToString();
            }
        }

        private void lkSetMaxSpeed_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            uint nodeid = GetSelectNode();
            if (PUSIResult.RET_SUCCESS == PUSICANControl.WriteSDO(nodeid, CAN_Address.MaxSpeed, Convert.ToInt32(this.nudMaxSpeed.Text)))
            {
                lblControlStatus.Text = ("write CAN_Address.MaxSpeed sdo ok.");
            }
        }

        private void cmbNode_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbNode.SelectedItem != null)
            {
                NodeInfo node = (NodeInfo)cmbNode.SelectedItem;
                txtNode.Text = node.NodeId.ToString();

                uint nodeid = GetSelectNode();
                if (nodeid.Equals(LWidthManager.Line_NodeAddr))
                {
                    txtHomeMoveSpeed.Text = ConfigAppSettings.GetValue(Setting_Init.Line_HomeSpeed);
                }
                else
                {
                    txtHomeMoveSpeed.Text = ConfigAppSettings.GetValue(Setting_Init.RotateNode_HomeSpeed);
                }
                if (btnReadAll.Enabled)
                {
                    btnReadAll_Click(null, null);
                }
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            timer1.Enabled = checkBox1.Checked;
        }

        private void FrmPusicanTest_Shown(object sender, EventArgs e)
        {
            SetSkin(this);
            lblCanMsg.ForeColor = Color.Red;
            lblControlStatus.ForeColor = Color.Red;
        }

        private void btnSetPosition_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            uint nodeid = GetSelectNode();
            int value = FormUtil.GetIntValue(txtGetPosition);
            PUSICANControl.SetPosition(nodeid, value);
        }

        private void btnHomeMove_Click(object sender, EventArgs e)
        {
            uint nodeid = GetSelectNode();
            if (nodeid.Equals(LWidthManager.Line_NodeAddr))
            {
                int homeSpeed = FormUtil.GetIntValue(txtHomeMoveSpeed);
                PUSICANControl.HomeMove(nodeid, true, homeSpeed);
            }
            else
            {
                int homeSpeed = FormUtil.GetIntValue(txtHomeMoveSpeed);
                PUSICANControl.HomeMove(nodeid,false, homeSpeed);
            }
        }

        private void llblClearp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            uint nodeid = GetSelectNode(); 
            PUSICANControl.SetPosition(nodeid, 0);
        }

        private void lblControlStatus_Click(object sender, EventArgs e)
        {

        }
    }

}