private void btndobotbewegung_Click(object sender, EventArgs e) { //speichern der Position, die zum Anfahr-Zeitpunkt aktuelle ist float xAkt = pose.x; float yAkt = pose.y; float zAkt = pose.z; foreach (Linie l in Arbeitskopie) { // anzahl der koordinaten innerhalb einer linie erfassen und aktuelle_position-count setzen int liniencount = l.Count; int akt_pos = 0; //abarbeiten aller linien und der beinhaltenden koordinaten foreach (Koordinate k in l) { //ist die Koordinate ein Anfangspunkt einer linie, soll "gesprungen" werden (motionstyle = 0); if (akt_pos == 0) { //angeben der koordinaten ( x,y,z,) die sich aus dem ausgangspunkt und der tatsächlichen koordinate zusammensetzt, z = const pdbCmd.playbackPoint.motionStyle = 0; //springt zum anfangspunkt pdbCmd.playbackPoint.x = xAkt + k.X; pdbCmd.playbackPoint.y = yAkt + k.Y; pdbCmd.playbackPoint.z = zAkt; pdbCmd.playbackPoint.pauseTime = 0; //übergeben des comand-obj (pdbCmd) an der Playbackbuffer, wird beim aufrufen des comand-timers erst wirklich ausgelöst DobotDll.SetPlaybackBufferCmd(ref pdbCmd); //0.5s warten, bis der roboter die bewegung ausgeführt hat, erst dann mit der schleifenabarbeitung fortsetzen Thread.Sleep(500); akt_pos++; } //Ist die Koordinate kein Anfangspunkt soll normal und liniar verfahren werden (motionstyle = 2) else { //angeben der koordinaten ( x,y,z,) die sich aus dem ausgangspunkt und der tatsächlichen koordinate zusammensetzt, z = const pdbCmd.playbackPoint.motionStyle = 2; pdbCmd.playbackPoint.x = xAkt + k.X; pdbCmd.playbackPoint.y = yAkt + k.Y; pdbCmd.playbackPoint.z = zAkt; //übergeben des comand-obj (pdbCmd) an der Playbackbuffer, wird beim aufrufen des comand-timers erst wirklich ausgelöst DobotDll.SetPlaybackBufferCmd(ref pdbCmd); //0.5s warten, bis der roboter die bewegung ausgeführt hat, erst dann mit der schleifenabarbeitung fortsetzen Thread.Sleep(500); akt_pos++; } } } //schließen der Form nach Abarbeiten aller Linien this.Close(); }
// event handle private void ProcessEvt(object sender, EventArgs e) { if (!isConnectted) { return; } Button obj = (Button)sender; String con = obj.Content.ToString(); switch (con) { case "SendPlaybackCmd": { PlaybackBufferCmd pdbCmd; float x, y, z, r, gripper, pTime; if (!float.TryParse(X.Text, out x) || !float.TryParse(Y.Text, out y) || !float.TryParse(Z.Text, out z) || !float.TryParse(rHead.Text, out r) || !float.TryParse(isGripper.Text, out gripper) || !float.TryParse(pauseTime.Text, out pTime)) { Msg("Please input float formate", MsgInfoType.Error); return; } Msg("", MsgInfoType.Info); pdbCmd.playbackPoint.isGrab = isGrab.IsChecked == true ? (byte)1 : (byte)0; pdbCmd.playbackPoint.motionStyle = (byte)modeStyle.SelectedIndex; pdbCmd.playbackPoint.x = x; pdbCmd.playbackPoint.y = y; pdbCmd.playbackPoint.z = z; pdbCmd.playbackPoint.rHead = r; pdbCmd.playbackPoint.gripper = gripper; pdbCmd.playbackPoint.pauseTime = pTime; DobotDll.SetPlaybackBufferCmd(ref pdbCmd); } break; default: break; } }