Пример #1
0
        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;
            }
        }