首先,请参考这段代码:
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 查询是最耗时的。