2013-04-27 71 views
0

我有一個變量「值」,它包含從串口收到的最後一條消息。 我有一個多行文本框「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秒的時間跨度?

我將不勝感激一些想法和示例片段。 謝謝

回答

1

在微處理器中執行代碼只發送一次信號。微動開關的閉合時間與微動的速度相比,因此閉合狀態在打開之前將被讀取多次。此外,您必須處理微動開關觸點的反彈,即在穩定之前由於機械抖動可能會出現幾個短暫的關閉/打開狀態。

在我看來,上述是最好的解決方案,從源頭上處理問題。

如果你想在接收端處理這個問題,你必須知道信號將被實時接收的所有可能的頻率,否則你如何過濾接收到的信號?

編輯: 所以你的速度如下: 12rpm下,信號之間的最小時間:5秒 0.5rpm下,信號之間的最大時間120秒

所以,當接收的信號,你知道它在下一個GOOD信號出現之前至少需要5秒。

所以這個代碼可以過濾掉虛假的信號:

// code to filter out false signals 
    DateTime lastTimeSignalReceived = DateTime.Now; 
    double minimumTimeBetweenSignals = 4.9; // 12 rpm = 5 seconds between signals minimum 
    int turns = 0; 
    private void txtOutput_TextChanged(object sender, EventArgs e) 
    { 
     if (value == 1) 
     { 
      // the if statement is true only if at least 4.9 seconds has past since last signal 
      // which should filter out false signals 
      if ((DateTime.Now - lastTimeSignalReceived).TotalSeconds > minimumTimeBetweenSignals) 
      { 
       // at least 4.9 seconds since last signal 
       textBox6.text = turns.ToString(); 
       turns++; 

       // set lastTimeSignalReceived to new time 
       lastTimeSignalReceived = DateTime.Now; 
      } 
     } 
    } 
+0

嗯.....我也沒有提出在本節中的問題,如果我認爲有在微處理器上的語言更多的功能來解決問題。我認爲C#有更多的權力和資源來管理特定的功能以避免所描述的問題。 – FeliceM 2013-04-27 18:08:40

+0

電機的最高轉速爲每分鐘12轉,最小轉速爲每分鐘0.5轉。我正在考慮在存在新消息並將其存儲在數組中時觸發​​1秒計時器。然後在一秒鐘後取出陣列的最後一條消息並考慮加1圈,重置陣列並等待下一條消息。通過這種方式,我應該能夠過濾長時間關閉的連續消息。有更好的想法嗎? – FeliceM 2013-04-28 05:14:22

+0

謝謝,我會嘗試圍繞你建議的代碼實現一些東西。看起來相當不錯,並且可以幫助我解決由於瞬態過程中的噪音而導致的虛假信息所導致的其他問題。 – FeliceM 2013-04-28 19:34:38