2014-07-16 60 views
1

我有幾個傳感器插入我的大型。他們通過串行和Serial2等訪問Arduino:有任何理由有電話Serial.end()?

我的電路板每X分鐘讀取一次傳感器,然後提交一個POST請求到我的服務器。 delay(X * 60 * 1000)用於輪詢等待時間。

這是我的getPH()方法如下所示:

void getPH() { 
    //<1> 
    char inchar; 
    while (Serial3.available()) { 
    inchar = (char)Serial3.read(); 
    if (inchar != '\r') { 
     phSensorString += inchar; 
    } 
    } 
    //<2> 
} 

現在從性能的角度來看是可取的,我在< 1插入Serial3.begin()>和Serial3.end()在< 2>?我在其他人的代碼中看到過這種模式。我的電路板上不會有什麼效果?

回答

1

調用end()的唯一原因是如果你有一些方法可以利用這些IO引腳來執行其他任務。所以如果在getPH()函數之外,您可以將這2個IO引腳用於其他目的,那麼您顯示的模式就是合理的。否則,一次又一次「分配」和「釋放」串口是沒有意義的......

雖然模式會起作用,但我會建議使用begin()和end()這種模式主要是不利的:

  • 你浪費執行時間開始()和end()
  • 廢物代碼大小,包括()結束在二進制 - 記連接器將只包括被調用的函數。

串行的好模式是在setup中調用begin()一次,永遠不會調用end()。

對於桌面環境,人們知道分配和釋放資源是好行爲。部分原因是因爲它允許與系統上的其他進程共享。 對於嵌入式系統,沒有其他進程需要共享 - 您的程序就是一切。強大的模式與桌面相反:分配啓動時使用的所有內容。

+0

感謝這就是我一直在尋找的細節水平! – disappearedng

相關問題