所以我有這個C#應用程序,它通過Arduino的串行通信獲取值。我根據某些引腳(數字引腳)的值爲某些圓圈着色。當我運行這個應用程序時,我有一點點延遲,就像我認爲太多的一秒鐘。我將波特率從9600改爲112500(仍然是一樣的)。在C#應用程序中,「讀取」是通過調用定時器中的某些函數來完成的。我將計時器間隔從100毫秒改爲20,仍然是相同的延遲。該怎麼辦 ?此外,應用程序運行速度有點慢,例如,如果將光標懸停在最小化按鈕上方,該按鈕不會立即突出顯示。如何從Arduino「幾乎」在C#中實時獲取多個值?
-1
A
回答
1
我想我找到了問題(或者至少有一個問題)。
在你的Tick事件你寫
私人無效
tempreader_Tick(object sender, EventArgs e)
{
red_light1 = Convert.ToInt32(comport.message(4, 8, 32));
red_light2 = Convert.ToInt32(comport.message(4, 8, 33));
yellow_light1 = Convert.ToInt32(comport.message(4, 8, 34));
yellow_light2 = Convert.ToInt32(comport.message(4, 8, 35));
green_light1 = Convert.ToInt32(comport.message(4, 8, 36));
green_light2 = Convert.ToInt32(comport.message(4, 8, 37));
[other actions]
你comport.message
是
public string message(byte paramone, byte paramtwo, byte paramthree)
{
try
{
byte[] buffer = new byte[3];
buffer[0] = Convert.ToByte(paramone);
buffer[1] = Convert.ToByte(paramtwo);
buffer[2] = Convert.ToByte(paramthree);
currentPort.Open();
currentPort.Write(buffer, 0, 3);
int intReturnASCII = 0;
char charReturnValue = (Char)intReturnASCII;
Thread.Sleep(200);
int count = currentPort.BytesToRead;
string returnMessage = "";
while (count > 0)
{
intReturnASCII = currentPort.ReadByte();
returnMessage = returnMessage + Convert.ToChar(intReturnASCII);
count--;
}
currentPort.Close();
return returnMessage;
}
catch (Exception e)
{
return "Error";
}
}
其中包含Thread.Sleep(200)
。所以不管你多快打勾,主線程都會停留在這個功能上至少1.2秒。
必須減少此值,否則請使用類似於backgroundworker
的內容來執行該作業並更新其runcompleted
事件中的GUI。
+1
那麼所有'轉換'方法都有絕對的瘋狂,其中一半是*絕對的一點都沒有*。 –
相關問題
- 1. 從幾個UITextFields獲取值
- 2. 如何從表中獲取多個值
- 3. 如何從xml中獲取多個值?
- 4. 如何從Hibernate中的表中獲取多個實體值?
- 5. 如何從C#中的計時器獲取實際值
- 6. 如何從Oracle表中獲取幾乎匹配的字符串?
- 7. 如何從幾個C文件中獲取單個程序集?
- 8. 如何從C#生成的html輸入中獲取多個值
- 9. 如何在PHP中獲取多個值?
- 10. 如何從jQuery中獲取json對象的幾個值?
- 11. 如何從幾個列表中獲取重複值?
- 12. 如何從c#中的datalist獲取值?
- 13. 如何從c#中的keycode獲取值?
- 14. 如何從多索引中獲取值
- 15. 如何從XAML對象獲取C#中的幾何信息?
- 16. 如何在Django的POST後從多個表單中獲取值?
- 17. 從JSON獲取多個值
- 18. 如何從testmethod獲取c#中字符串的值在C#中
- 19. 在Arduino中獲取API的時間
- 20. 如何在C#中獲取Excel.Application實例?
- 21. 處理幾乎是在C++
- 22. 如何從多個輸入中獲取某個元素C++
- 23. 從兩個或多個表單中獲取值C#
- 24. 如何在Mysql字段中獲取單個值的多個值
- 25. 如何從一個sql列中獲取多個值
- 26. 如何從一個文本框中獲取多個值?
- 27. 如何從.property中的某個鍵獲取多個值
- 28. MSSQL:如何從另一個表中獲取多個值
- 29. 如何從C++中的tm對象獲取星期幾?
- 30. 如何從幾個C++字符串中獲取第一個單詞?
我想看一些代碼,但我認爲這種行爲的原因可能是因爲您編寫了一種永不停頓的閱讀線程,所以即使沒有必要,CPU使用率也始終保持在100%。 – frarugi87
我希望不是太多的代碼... https://www.dropbox.com/s/igk4l3gkp5mjmga/Desktop.rar – user3672802