首先讀取數據,請參見下面的代碼塊:不斷地從一個串行端口while循環運行
while(1) {
lt = time(NULL);
ptr = localtime(<);
int n = read (fd, buf, sizeof(buf));
strftime(str, 100, "%c", ptr);
int temp = sprintf(tempCommand, "UPDATE roomtemp SET Temperature='%s' WHERE Date='Today'", buf);
temp = sprintf(dateCommand, "UPDATE roomtemp SET Date='%s' WHERE Type='DisplayTemp'", str);
printf("%s", buf);
mysql_query(conn, tempCommand);
mysql_query(conn, dateCommand);
}
讀功能實際上是讀取數據從一個串口來英寸它工作的很好,但我遇到的問題(我認爲)是執行循環所需的時間。我有數據每秒發送到串行端口。假設數據是每秒「22」。此循環所做的是在「2222」或有時「222222」中讀取。我認爲正在發生的事情是該循環花費太長的時間來迭代,並導致數據在串行緩衝區中累積。 read語句讀入緩衝區中的所有內容,因此給我重複的值。
有什麼辦法可以解決這個問題嗎?也許在循環結束時,我可以刷新緩衝區。但我不確定我知道如何做到這一點。或者也許有一些方法可以減少循環中的代碼,以便減少每次迭代花費的總時間。我的猜測是,MySQL查詢無論如何都需要最多的時間。