/// <summary> /// 线程主体,循环发送串口指令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void threadGP_Refresh() { int count = 0; while (true) { Thread.Sleep(50); int addr = GPdata.Comaddr; while (WRABLE) { ; } WRABLE = true; if (Com.IsExists(addr)) { GPdata.COMSoftCon = 1; count = 0; } else { count++; if (count > 5) { count = 0; GPdata.COMHardCon = 0; GPdata.COMSoftCon = 0; lForm.RecodeInfo("心跳异常"); Com.Close(); threadGP.Abort(); //避免重复新建线程 } } WRABLE = false; if (GPdata.COMSoftCon == 1) //串口数据处理 { while (WRABLE) { ; } WRABLE = true; if (GPdata.GetFirstNum() == 0) //读取固件信息 { GPdata.SetFirstNum(1); //获取版本信息 GPdata.SetVer_Info(Com.GetVerInfo(addr)); } GPdata.GPOutput = Com.GetOutputs(addr); GPdata.GPLed = Com.GetLeds(addr); GPdata.GPPolarity = Com.GetOutputPol(addr); GPdata.GPState = Com.GetSTATE0(addr); int[] sensorPV = Com.GetSensors(addr); GPdata.SensorP1 = sensorPV[0]; GPdata.SensorP2 = sensorPV[1]; GPdata.SensorP3 = sensorPV[2]; GPdata.SensorP4 = sensorPV[3]; WRABLE = false; } } }
/// <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> /// <param name="sender"></param> /// <param name="e"></param> private void threadCom_Refresh() { int count = 0; while (true) { Thread.Sleep(30); if (S2data.COMHardCon == 1) //串口数据处理 { if (Com.IsExists()) { //label3.Text = "心跳起搏"; S2data.COMSoftCon = 1; count = 0; } else { count++; //label3.Text = "心跳异常"; if (count > 2) { count = 0; S2data.COMHardCon = 0; S2data.COMSoftCon = 0; lForm.RecodeInfo("串口心跳异常"); threadCom.Abort(); //避免重复新建线程 } } if (S2data.COMSoftCon == 1 && S2data.NetHardCon == 0) //软链接成功 { if (S2data.GetFirstNum() == 0) //读取固件信息 { S2data.SetFirstNum(1); //获取主板名称 S2data.SetName(Com.GetCardName()); //获取固件编号 S2data.SetSN(Com.GetSN()); //获取编码开关状态 S2data.DIP = Com.GetDipSwitch(); //获取版本信息 S2data.SetVer_Info(Com.GetVerInfo()); } int axis = S2data.Axis; //获取轴位置 S2data.SetLocation(axis, Com.GetPosition(axis)); //获取轴IO S2data.SetPWMIOState(axis, Com.GetAIO()); if (S2data.GetCardID() == 1) { //获取主板输入端口值 S2data.MInput = Com.GetInputsEx(); //获取主板输出端口值 S2data.MOutput = Com.GetOutputsEx(); } else { //获取主板输入端口值 S2data.MInput = Com.GetInputs(); //获取主板输出端口值 S2data.MOutput = Com.GetOutputs(); } //获取轴状态 S2data.SetPWMState(axis, Com.GetAxisStatus(axis)); if (S2data.GetShowMode(axis) == 1) { if ((S2data.GetPWMState(axis) >> 1 & 0x1) == 0) { int Dis = S2data.GetDire(axis) > 0 ? S2data.GetDistence(axis) : -S2data.GetDistence(axis); Com.RltMove(S2data.Axis, Dis, S2data.GetStartSpd(axis), S2data.GetRunSpd(axis), S2data.GetAcce(axis), S2data.GetDece(axis)); if (S2data.GetDire(axis) == 0) { S2data.SetDire(axis, 1); } else { S2data.SetDire(axis, 0); } } } } } } }