Через СOM порт с датчика считываю данные данные каждые 200мс:
time = DateTime.Now;//считывание времени
var culture = new CultureInfo("ru-RU");//установка формата времени согласно региону
TimeStr = time.ToString(culture);//перевод времени в строку
temp = serialPort1.ReadLine();
textBox4.Text = temp;
sx = serialPort1.ReadLine();//считывание показаний с датчика(X
sy = serialPort1.ReadLine();//считывание показаний с датчика(Y
sz = serialPort1.ReadLine();//считывание показаний с датчика(Z
sx = sx.Replace('.', ',').Replace('\r', ' ');//перевод показаний(X
sy = sy.Replace('.', ',').Replace('\r', ' ');//перевод показаний(Y
sz = sz.Replace('.', ',').Replace('\r', ' ');//перевод показаний(Z
temp = temp.Replace('.', ',').Replace('\r', ' ');//перевод показаний(Z
x = Math.Round(Convert.ToDouble(sx), 1);//округление показаний до 1 знака после запятой(X
y = Math.Round(Convert.ToDouble(sy), 1);//округление показаний до 1 знака после запятой(Y
z = Math.Round(Convert.ToDouble(sz), 1);//округление показаний до 1 знака после запятой(Z
t = Math.Round(Convert.ToDouble(temp), 1);
cx = Math.Round(x0 - x, 1);//создание переменных с колибровкой(X
cy = Math.Round(y0 - y, 1);//создание переменных с колибровкой(Y
cz = Math.Round(z0 - z, 1);//создание переменных с колибровкой(Z
textBox1.Text = cx.ToString();//вывод показаний на форму(X
textBox2.Text = cy.ToString();//вывод показаний на форму(Y
textBox3.Text = cz.ToString();//вывод показаний на форму(Z
dravaxel(pictureBox1, cx, label_X, job);//вызов функции отрисовки осей в круге(X
dravaxel(pictureBox2, cy, label_Y, job);//вызов функции отрисовки осей в круге(Y
dravaxel(pictureBox3, cz, label_Z, job);//вызов функции отрисовки осей в круге(Z
и после методом dravaxel отрисовываю в pictureBox, но программа начинает фризить очень сильно
static void dravaxel(PictureBox picbx, double angl, Label lbl, bool j)
{
Bitmap btmBack = new Bitmap(200, 200);//создание поля для отрисовки
Graphics g = Graphics.FromImage(btmBack);//привязка поля к графической переменной
Pen pen = new Pen(Brushes.Black, 1);//описание пера
g.DrawEllipse(pen, 10, 10, 179, 179);//отрисовка круга
g.DrawLine(pen, 0, 100, 200, 100);//открисовка оси
g.DrawLine(pen, 100, 0, 100, 200);//открисовка оси
double andl_ = (Math.PI / 180) * (angl - 90);//вычисление угла в радианах
int X = 100 + (int)Math.Round(Math.Cos(andl_) * 100);//Вычисление координат
int Y = 100 + (int)Math.Round(Math.Sin(andl_) * 100);
pen = new Pen(Brushes.Red, 3);
g.DrawLine(pen, X, Y, 100, 100);//отрисовка вектора
X = (int)Math.Round(Math.Cos(andl_) * 110);//Вычисление координат
Y = (int)Math.Round(Math.Sin(andl_) * 110);
lbl.Top = picbx.Top + Y + 100;//расчитываем координаты для лейблов
lbl.Left = picbx.Left + X + 100;
if (j)
lbl.Text = angl.ToString();//вывод угла в лейблах
picbx.Image = btmBack;//вывод картинки на поле
}
Из за чего это может быть?