/// <summary> /// 抬起(松开)点动按钮时触发,停止定速运动 /// </summary> private void Move_MouseUp(object sender, MouseEventArgs e) { if (m_handle == (IntPtr)(0)) { MessageBox.Show("未连接控制器!"); return; } Button btn = (Button)sender; if (btn.Name == ("xMovePlus_btn") || btn.Name == ("xMoveRev_btn")) { SMC6X.SMCDecelStop(m_handle, 0); } else if (btn.Name == ("yMovePlus_btn") || btn.Name == ("yMoveRev_btn")) { SMC6X.SMCDecelStop(m_handle, 1); } else if (btn.Name == ("zMovePlus_btn") || btn.Name == ("zMoveRev_btn")) { SMC6X.SMCDecelStop(m_handle, 2); } else if (btn.Name == ("uMovePlus_btn") || btn.Name == ("uMoveRev_btn")) { SMC6X.SMCDecelStop(m_handle, 3); } }
private void OnTick(object sender, EventArgs e) { Int32 pos = 0; SMC6X.SMCGetPositionPulses(m_handle, 0, ref pos); POSX.Text = Convert.ToString(pos); }
/// <summary> /// 连接或断开控制器 /// </summary> private void Connect_btn_Click(object sender, EventArgs e) { if (m_handle == (IntPtr)(0)) { int iret = -1; string ipStr = ip_tbx.Text; if (!IsIP(ipStr)) { state_lab.Text = "IP地址无效"; return; } state_lab.Text = "正在连接"; iret = SMC6X.SMCOpenEth(ipStr, ref m_handle); //连接网络 if (0 != iret) { state_lab.Text = "连接失败"; MessageBox.Show("连接失败"); return; } state_lab.Text = "已连接"; timer1.Start(); connect_btn.Text = "断开连接"; } else { SMC6X.SMCClose(m_handle); m_handle = (IntPtr)(0); connect_btn.Text = "连接设备"; state_lab.Text = "未连接"; timer1.Stop(); } }
/// <summary> /// 设置手动操作速度按钮,设置手动速度 /// </summary> private void SetSpeed_btn_Click(object sender, EventArgs e) { Int32 speed = 0; try { speed = Convert.ToInt32(setSpeed_tbx.Text); } catch { MessageBox.Show("不是有效的数字", "设置信息"); return; } SMC6X.SMCSetLocateSpeed(m_handle, 0, speed); //设置运动速度,1000 Pulse/s; //SMC6X.SMCSetLocateAcceleration(m_handle, 0, 20); //设置运动加速度,2000 Pulse/s2; MessageBox.Show("设置成功"); }
private void PMove_Click(object sender, EventArgs e) { if (m_handle == (IntPtr)(0)) { MessageBox.Show("请先连接控制器!"); return; } Button btn = (Button)sender; SMC6X.SMCSetLocateSpeed(m_handle, 0, 1000); //设置运动速度,1000 Pulse/s; SMC6X.SMCSetLocateAcceleration(m_handle, 0, 2000); //设置运动加速度,2000 Pulse/s2; if (btn.Name == ("PMovePlus")) { SMC6X.SMCPMovePluses(m_handle, 0, 10000, 0); //向正方向运动10000个脉冲; } else if (btn.Name == ("PMoveReverse")) { SMC6X.SMCPMovePluses(m_handle, 0, -10000, 0); //向负方向运动10000个脉冲; } }
/// <summary> /// 点击暂停按钮触发,暂停运行当前程序,再次点击继续运行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Pause_btn_Click(object sender, EventArgs e) { if (m_handle == (IntPtr)(0)) { MessageBox.Show("未连接控制器!"); return; } if (isruning) { SMC6X.SMCPause(m_handle); pause_btn.Text = "继续"; isruning = false; } else { SMC6X.SMCContinueRun(m_handle); pause_btn.Text = "暂停"; isruning = true; } }
/// <summary> /// 点击按钮触发,进行语法检查 /// </summary> private void Check_btn_Click(object sender, EventArgs e) { if (m_handle == (IntPtr)(0)) { MessageBox.Show("未连接控制器!"); return; } Byte errorMassage = 0; int iresult = -1; iresult = SMC6X.SMCCheckProgramSyntax(gcode_richtbx.Text, ref errorMassage); if (iresult == 0) { MessageBox.Show("语法正确", "检查信息"); } else { MessageBox.Show("存在语法错误", "检查信息"); return; } }
/// <summary> /// 点动按钮按下(未抬起)时触发,控制某轴点动,定速运动 /// </summary> private void Move_MouseDown(object sender, MouseEventArgs e) { if (m_handle == (IntPtr)(0)) { MessageBox.Show("未连接控制器!"); return; } Button btn = (Button)sender; switch (btn.Name) { case "xMovePlus_btn": SMC6X.SMCVMove(m_handle, 0, 1); break; case "xMoveRev_btn": SMC6X.SMCVMove(m_handle, 0, 0); break; case "yMovePlus_btn": SMC6X.SMCVMove(m_handle, 1, 1); break; case "yMoveRev_btn": SMC6X.SMCVMove(m_handle, 1, 0); break; case "zMovePlus_btn": SMC6X.SMCVMove(m_handle, 2, 1); break; case "zMoveRev_btn": SMC6X.SMCVMove(m_handle, 2, 0); break; case "uMovePlus_btn": SMC6X.SMCVMove(m_handle, 3, 1); break; case "uMoveRev_btn": SMC6X.SMCVMove(m_handle, 3, 0); break; default: break; } }
/// <summary> /// timer定时器响应函数 /// </summary> private void Timer1_Tick(object sender, EventArgs e) { double last_x = cur_pos[0], last_y = cur_pos[1]; for (Byte axis = 0; axis < 4; axis++) { SMC6X.SMCGetPosition(m_handle, axis, ref cur_pos[axis]); } xMachCoor_tbx.Text = cur_pos[0].ToString("F2"); yMachCoor_tbx.Text = cur_pos[1].ToString("F2"); zMachCoor_tbx.Text = cur_pos[2].ToString("F2"); uMachCoor_tbx.Text = cur_pos[3].ToString("F2"); for (Byte axis = 0; axis < 4; axis++) { SMC6X.SMCGetCurSpeed(m_handle, axis, ref cur_speed[axis]); } xSpeed_tbx.Text = Convert.ToString(cur_speed[0]); ySpeed_tbx.Text = Convert.ToString(cur_speed[1]); zSpeed_tbx.Text = Convert.ToString(cur_speed[2]); uSpeed_tbx.Text = Convert.ToString(cur_speed[3]); if (isruning) { int num = 0; SMC6X.SMCGetCurRunningLine(m_handle, ref num); lineNum_lab.Text = num.ToString(); } if (cur_pos[0] != last_x || cur_pos[1] != last_y) { pointList.Clear(); trailList.Add(cur_pos[0], cur_pos[1]); pointList.Add(cur_pos[0], cur_pos[1]); zedGraph1.GraphPane.AxisChange(); // 在数据变化时绘制图形 zedGraph1.Invalidate(); //刷新 } }
IntPtr m_handle; //连接标识 private void OnLink(object sender, EventArgs e) { Button btn = (Button)sender; int iret = -1; if (btn.Name == "LinkEth") { string ipStr = "192.168.1.11"; iret = SMC6X.SMCOpenEth(ipStr, ref m_handle); //连接网络 } else if (btn.Name == "LinkCom") { iret = SMC6X.SMCOpenCom(1, ref m_handle); //连接网络 } if (0 != iret) { MessageBox.Show("连接失败"); return; } timer2.Start(); }
/// <summary> /// 点击运行按钮触发,将程序下载到RAM并运行 /// </summary> private void Run_btn_Click(object sender, EventArgs e) { if (m_handle == (IntPtr)(0)) { MessageBox.Show("未连接控制器!"); return; } Byte errorMassage = 0; int iresult = 1; iresult = SMC6X.SMCCheckProgramSyntax(gcode_richtbx.Text, ref errorMassage); if (iresult != 0) { MessageBox.Show("存在语法错误", "检查信息"); return; } iresult = SMC6X.SMCDownMemProgramToRamAndRun(m_handle, gcode_richtbx.Text, gcode_richtbx.TextLength); if (iresult != 0) { MessageBox.Show("下载运行失败", "运行信息"); } isruning = true; }
private void CloseConnect_Click(object sender, EventArgs e) { SMC6X.SMCClose(m_handle); m_handle = (IntPtr)(0); }
private void Stop_Click(object sender, EventArgs e) { SMC6X.SMCDecelStop(m_handle, 0); }
/// <summary> /// 运动控制相关按钮,分别实现回零、设零点、定位、修改坐标、停止运动功能 /// </summary> private void MoveControl_Click(object sender, EventArgs e) { if (m_handle == (IntPtr)(0)) { MessageBox.Show("未连接控制器!"); return; } Button btn = (Button)sender; switch (btn.Name) { case "backZero_btn": SMC6X.SMCHomeMove(m_handle, 2); SMC6X.SMCHomeMove(m_handle, 0); SMC6X.SMCHomeMove(m_handle, 1); break; case "setZero_btn": for (byte i = 0; i < 3; i++) { SMC6X.SMCSetPosition(m_handle, i, 0.0); } break; case "gotoCoor_btn": double[] gotocoor = new double[4]; try { gotocoor[0] = Convert.ToDouble(xGotoCoor_tbx.Text); gotocoor[1] = Convert.ToDouble(yGotoCoor_tbx.Text); gotocoor[2] = Convert.ToDouble(zGotoCoor_tbx.Text); gotocoor[3] = Convert.ToDouble(uGotoCoor_tbx.Text); } catch { MessageBox.Show("无效数字"); return; } for (byte i = 0; i < 3; i++) { SMC6X.SMCPMove(m_handle, i, gotocoor[i], 1); } break; case "setCoor_btn": double[] setcoor = new double[4]; try { setcoor[0] = Convert.ToDouble(xSetCoor_tbx.Text); setcoor[1] = Convert.ToDouble(ySetCoor_tbx.Text); setcoor[2] = Convert.ToDouble(zSetCoor_tbx.Text); setcoor[3] = Convert.ToDouble(uSetCoor_tbx.Text); } catch { MessageBox.Show("无效数字"); return; } for (byte i = 0; i < 3; i++) { SMC6X.SMCSetPosition(m_handle, i, setcoor[i]); } break; case "stop_btn": SMC6X.SMCEmgStop(m_handle); isruning = false; //SMCDecelStop 减速停止 //SMCImdStop 立即停止 //SMCEmgStop 紧急停止 break; default: break; } }