Я пишу программу C# для взаимодействия с Arduino через последовательный порт, и у меня есть функция updateRPMs(), которая замедляет работу программы настолько, что она непригодна для использования. Он вызывается каждые 1 секунду, когда он используется. В программе задействовано несколько вентиляторов PWM.C# program Замедление из-за функции
Вот функция:
private void updateRPMs()
{
TextBox[] RPMS = { Fan1RPM, Fan2RPM, Fan3RPM, Fan4RPM, Fan5RPM, Fan6RPM, Fan7RPM, Fan8RPM, Fan9RPM, Fan10RPM, Fan11RPM, Fan12RPM };
List<String> sepData = new List<String>();
if (CONNECTED)
{
String data = serialPort1.ReadLine();
// MessageBox.Show(data);
sepData = (data.Split(';').ToList());
if (sepData.Count == 12)
{
for (int i = 0; i < 12; i++)
{
RPMS[i].Text = sepData[i];
}
}
serialPort1.DiscardOutBuffer();
}
}
Это что-то Arduino бы отправить к программе:
a840.00;b885.00;c0;d0;e0;f0;g1635.00;h2070.00;i0;j0;k0;l0
Я знаю, что могу нажать это в другой теме, но я стараюсь, чтобы иметь он обновляется, как только срабатывает таймер.
Мне было интересно, есть ли что-нибудь, что я мог бы изменить, или если бы было что-то глупое. Я новичок в C#, и любая помощь будет оценена.
Вы должны использовать Секундомер в C#, чтобы проверить, какая часть кода вызывает проблемы. – niksofteng
Прежде всего, что вызывает эту функцию? Затем, как часто ардуино отправляет данные? Скорость передачи? И почему бы вам не использовать входящие данные из последовательного буфера? И почему вы используете функцию «DiscardOutBuffer»? – frarugi87
1. У меня есть таймер, срабатывающий каждые 1 секунду, вызывающий функцию. 2. каждые 500 мс. 3. 9600. 4. Не знаете, что вы имеете в виду? Я думал, это то, что сделал ReadLine. 5. Я предполагаю, что если я использую ReadLine(), мне не нужно. –