我使用QT讀取從連接到Arduino板一個光敏電阻值的情況下,我成功地讀出的值和發射它,如下面的:錯誤之前的值從阿爾杜伊諾
void Dialog::handleReadyRead(){
QString temp;
temp = serial.readAll();
serialBuffer.append(temp);
int serPos;
double tempValue;
double previousValue = tempValue;
while ((serPos = serialBuffer.indexOf('\n')) >= 0)
{
bool ok;
previousValue = tempValue;
tempValue = QString::fromLatin1(serialBuffer.left(serPos)).toDouble(&ok);
if (ok){
emit newData(tempValue, previousValue);
}
serialBuffer = serialBuffer.mid(serPos+1);
}
}
然而,出於某種原因,我需要獲得以前的值。當我做previousValue = tempValue
時,它會打印出一些奇怪的值(有時它確實是以前的值,但對於大多數時間它只打印出0或幾乎真的接近0)。我想知道這裏發生了什麼,我該如何解決?
樣品錯誤輸出可能是這樣的:
399
399
399
399
399
399
399
399
399
399
399
399
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1.49189e-154
1.49189e-154
0
0
0
399是正確的值,而所有的0都沒有。
你的變量tempValue從未發出一個值開始,然後嘗試分配PREVIOUSVALUE到tempValue。 – Zypps987
這仍然發生,當我用0初始化它,並且它沒有給mw一個正確的值,當我做double tempValue = QString :: fromLatin1(serialBuffer.left(serPos))。toDouble(); –
是否曾經有過所有0都不是正確輸出的情況? 當光敏電阻沒有檢測到什麼時會發生什麼? – Zypps987