我正在編寫一個C#程序,通過串口與Arduino進行接口,並且我有一個函數updateRPMs(),它會使程序變得太慢而無法使用。它在使用時每1秒被調用一次。該程序運行幾個PWM風扇。C#程序因功能而減速
下面是函數:
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
首先是什麼調用這個函數?那麼,arduino多長時間發送一次數據?波特率?爲什麼不使用來自串行緩衝區的輸入數據?你爲什麼使用'DiscardOutBuffer'函數? – frarugi87
1.我有一個定時器每1秒觸發一次調用函數。 2.每500ms。 3. 9600. 4.不確定你的意思?我認爲這是ReadLine所做的。 5.我猜如果我使用ReadLine()我不需要。 –