我有一個變量「值」,它包含從串口收到的最後一條消息。 我有一個多行文本框「txtOutput」,顯示從串行接收的所有消息。 我也有一個if語句,用於過濾特定的消息,以執行我放在txtOutput_TextChanged下的一些內容,以便每次有新消息時更新textBox6中的數字。從串口過濾雙消息
int turns = 0;
private void txtOutput_TextChanged(object sender, EventArgs e)
{
if (value == 1)
{
textBox6.text = turns.ToString();
turns ++;
}}
當微動開關被點擊時,我從連接到微處理器的串口接收到消息「1」。微動開關正在監測轉速非常緩慢的電機的旋轉。
我的目標是在使用它進一步實施RPM計數器之前使上述計數系統正確。 我現在遇到的問題是,微型開關經常長時間持續按下(50到100微秒),並且我從串口接收到幾條連續的消息(2或3),最後我計算了更多的轉數而不是實數。我在微控制器方面提供了一些延遲,但我不能發揮太多,否則以不同的速度出現問題。 有沒有一種方法可以考慮只有一個消息從串行接收時,如果他們連續來自同一類型,可以說,1秒的時間跨度?
我將不勝感激一些想法和示例片段。 謝謝
嗯.....我也沒有提出在本節中的問題,如果我認爲有在微處理器上的語言更多的功能來解決問題。我認爲C#有更多的權力和資源來管理特定的功能以避免所描述的問題。 – FeliceM 2013-04-27 18:08:40
電機的最高轉速爲每分鐘12轉,最小轉速爲每分鐘0.5轉。我正在考慮在存在新消息並將其存儲在數組中時觸發1秒計時器。然後在一秒鐘後取出陣列的最後一條消息並考慮加1圈,重置陣列並等待下一條消息。通過這種方式,我應該能夠過濾長時間關閉的連續消息。有更好的想法嗎? – FeliceM 2013-04-28 05:14:22
謝謝,我會嘗試圍繞你建議的代碼實現一些東西。看起來相當不錯,並且可以幫助我解決由於瞬態過程中的噪音而導致的虛假信息所導致的其他問題。 – FeliceM 2013-04-28 19:34:38