/// <summary> /// 线程主体,循环发送指令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void thread_Refresh() { int count = 0; while (true) { Thread.Sleep(30); if (S1data.COMHardCon == 1) //串口数据处理 { if (Com.IsExists()) { S1data.COMSoftCon = 1; count = 0; } else { count++; if (count > 5) { count = 0; S1data.COMHardCon = 0; S1data.COMSoftCon = 0; lForm.RecodeInfo("心跳异常"); thread.Abort(); //避免重复新建线程 } } if (S1data.COMSoftCon == 1) //软链接成功 { if (S1data.GetFirstNum() == 0) //读取固件信息 { S1data.SetFirstNum(1); //获取版本信息 S1data.SetVer_Info(Com.GetVerInfo()); } int axis = S1data.Axis; //获取轴位置 S1data.SetLocation(axis, Com.GetPosition()); //获取DIP if (Com.GetDIP() != Com.ErrNum) { S1data.DIP = Com.GetDIP(); } //获取输入口状态 if (Com.GetInputs() != Com.ErrNum) { S1data.MInput = Com.GetInputs(); } //获取输出口状态 if (Com.GetOutputs() != Com.ErrNum) { S1data.MOutput = Com.GetOutputs(); } if (S1data.GetShowMode(axis) == 1) { int dir = S1data.GetDire(axis); int dis = S1data.GetDistence(axis); long Loca = S1data.GetLocation(axis); if (ShowLoc - Loca == 0 && ShowNum == 0) { ShowEn = true; ShowNum++; } else if (Math.Abs(ShowLoc - Loca) == dis && ShowNum == 1) { ShowEn = true; ShowNum--; } if (ShowEn) { ShowEn = false; Com.SetMMmove(S1data.GetDire(axis), S1data.GetDistence(axis), S1data.GetRunSpd(axis)); if (dir == 0) { S1data.SetDire(axis, 1); } else { S1data.SetDire(axis, 0); } } } } } } }
/// <summary> /// 窗口数据变化 /// </summary> void WindosShowData() { int temp = 0; double temd = 0; int axis = S2data.Axis; if (axis == 0) { tbXLoca.Text = S2data.GetLocation(axis).ToString(); } else if (axis == 1) { tbYLoca.Text = S2data.GetLocation(axis).ToString(); } else { tbZLoca.Text = S2data.GetLocation(axis).ToString(); } if (axis == 0) { temp = Convert.ToInt32(tbXDist.Text); } else if (axis == 1) { temp = Convert.ToInt32(tbYDist.Text); } else if (axis == 2) { temp = Convert.ToInt32(tbZDist.Text); } S2data.SetDistence(axis, temp); if (axis == 0) { temp = Convert.ToInt32(tbXTarg.Text); } else if (axis == 1) { temp = Convert.ToInt32(tbYTarg.Text); } else if (axis == 2) { temp = Convert.ToInt32(tbZTarg.Text); } S2data.SetTargloca(axis, temp); if (axis == 0) { temp = Convert.ToInt32(tbXSpdstart.Text); } else if (axis == 1) { temp = Convert.ToInt32(tbYSpdstart.Text); } else if (axis == 2) { temp = Convert.ToInt32(tbZSpdstart.Text); } S2data.SetStartSpd(axis, temp); if (axis == 0) { temp = Convert.ToInt32(tbXSpdrun.Text); } else if (axis == 1) { temp = Convert.ToInt32(tbYSpdrun.Text); } else if (axis == 2) { temp = Convert.ToInt32(tbZSpdrun.Text); } S2data.SetRunSpd(axis, temp); if (axis == 0) { temp = Convert.ToInt32(tbXSpdsec.Text); } else if (axis == 1) { temp = Convert.ToInt32(tbYSpdsec.Text); } else if (axis == 2) { temp = Convert.ToInt32(tbZSpdsec.Text); } S2data.SetSecSpd(axis, temp); if (axis == 0) { temd = double.Parse(tbXAss.Text); } else if (axis == 1) { temd = double.Parse(tbYAss.Text); } else if (axis == 2) { temd = double.Parse(tbZAss.Text); } S2data.SetAcce(axis, temd); S2data.SetRunMode(0, cbXMode.SelectedIndex); S2data.SetRunMode(1, cbYMode.SelectedIndex); S2data.SetRunMode(2, cbZMode.SelectedIndex); }