Hier ist mein Code, es wird in einem Timer alle 5ms gesendet. habe es auch schon mit 100ms usw. probiert, gleiches problem.

Code:
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Sensors;
   
namespace G_Sensor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        bool Freigabe = false;
        IGSensor mySensor = GSensorFactory.CreateGSensor();

        private void myTimer_Tick(object sender, EventArgs e)
        {
            GVector myVector = mySensor.GetGVector();
            bool DeadZone = true; 
            string Fahrtrichtung = "", Lenkrichtung = "", RichtungKetteLinks = "", RichtungKetteRechts = "";
            Int16 GeschwindigkeitKetteLinks = 0, GeschwindigkeitKetteRechts = 0;
            double VerteilungKetteLinks = 0, VerteilungKetteRechts = 0;
            double X = Math.Abs(myVector.X * 10000);
            double Y = Math.Abs(myVector.Y * 10000);
            double XMax = 80000;
            double YMax = 50000;

            if (X > XMax) X = XMax;
            if (Y > YMax) Y = YMax;

            if (myVector.X < 1 && myVector.X > -1 && myVector.Y < 1 && myVector.Y > -1)DeadZone = true;else DeadZone = false;
                            
            if (myVector.X >= 1) Fahrtrichtung = "Vor";
            if (myVector.X <= -1) Fahrtrichtung = "Zurück";
            if (myVector.Y >= 1) Lenkrichtung = "Rechts";
            if (myVector.Y <= -1) Lenkrichtung = "Links";
            if (myVector.X < 1 && myVector.X > -1) Fahrtrichtung = "Drehen";

            VerteilungKetteLinks = X;
            VerteilungKetteRechts = X;

            if (Fahrtrichtung == "Vor")
            {
                RichtungKetteLinks = "Vor";
                RichtungKetteRechts = "Vor";
            }

            if (Fahrtrichtung == "Zurück")
            {
                RichtungKetteLinks = "Zurück";
                RichtungKetteRechts = "Zurück";
            }
            
            if (Lenkrichtung == "Links")
            {
                VerteilungKetteLinks = Y / 2;
                VerteilungKetteRechts = Y / 2;
                if((XMax-X)<VerteilungKetteRechts)
                {
                    VerteilungKetteRechts = VerteilungKetteRechts - (XMax - X);
                    VerteilungKetteLinks = Y - VerteilungKetteRechts;
                }
                VerteilungKetteLinks = X - VerteilungKetteLinks;
                VerteilungKetteRechts = X + VerteilungKetteRechts;
                if (VerteilungKetteLinks < 0) VerteilungKetteLinks = 0;
            }

            if (Lenkrichtung == "Rechts")
            {
                VerteilungKetteLinks = Y / 2;
                VerteilungKetteRechts = Y / 2;
                if ((XMax - X) < VerteilungKetteLinks)
                {
                    VerteilungKetteLinks = VerteilungKetteLinks - (XMax - X);
                    VerteilungKetteRechts = Y - VerteilungKetteLinks;
                }
                VerteilungKetteRechts = X - VerteilungKetteRechts;
                VerteilungKetteLinks = X + VerteilungKetteLinks;
                if (VerteilungKetteRechts < 0) VerteilungKetteRechts = 0;
            }

            Int16 PWM_Min=115, PWM_Max=255;
            double Steigung, Y_Achsenabschnitt;
            Steigung = (XMax - 10000) / (PWM_Max - PWM_Min);
            Y_Achsenabschnitt = XMax - (Steigung * PWM_Max);

            GeschwindigkeitKetteLinks = (Int16)((Math.Abs(VerteilungKetteLinks) - Y_Achsenabschnitt) / Steigung);
            GeschwindigkeitKetteRechts = (Int16)((Math.Abs(VerteilungKetteRechts) - Y_Achsenabschnitt) / Steigung);

            if (DeadZone == true)
            {
                GeschwindigkeitKetteLinks = 0;
                GeschwindigkeitKetteRechts = 0;
            }

            if (Freigabe == true)
            {
                string a="", b="", c="", d="";
                if (VerteilungKetteLinks < 0 && Fahrtrichtung =="Drehen") RichtungKetteLinks = "Zurück";
                if (VerteilungKetteRechts < 0 && Fahrtrichtung == "Drehen") RichtungKetteRechts = "Zurück";
                if (VerteilungKetteLinks > 0 && Fahrtrichtung == "Drehen") RichtungKetteLinks = "Vor";
                if (VerteilungKetteRechts > 0 && Fahrtrichtung == "Drehen") RichtungKetteRechts = "Vor";

                if (RichtungKetteRechts == "Vor") a = "1";
                if (RichtungKetteLinks == "Vor") c = "1";
                if (RichtungKetteRechts == "Zurück") a = "0";
                if (RichtungKetteLinks == "Zurück") c = "0";
                b = GeschwindigkeitKetteRechts.ToString("000");
                d = GeschwindigkeitKetteLinks.ToString("000");  
                serialPort1.Write(a + b + c + d + "\r");
            }
        }

        private void menuItem1_Click_1(object sender, EventArgs e)
        {
            serialPort1.Close();  
            mySensor.Dispose();
            mySensor = null; 
            Close(); 
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == System.Windows.Forms.Keys.Up))
            {
                // Up
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Down))
            {
                // Down
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Left))
            {
                // Left
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Right))
            {
                // Right
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Enter))
            {
                // Enter
            }

        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            Freigabe = true;
            pictureBox1.BackColor = Color.LimeGreen;   
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            Freigabe = false;
            serialPort1.Write("10001000\r");
            pictureBox1.BackColor = Color.White;
        }

        private void Form1_Load(object sender, EventArgs e)
        {            
            serialPort1.PortName = "COM2";
            serialPort1.Open();
            serialPort1.Write("10001000\r");
        }
    }
}