我正在使用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都不是。
答案 0 :(得分:0)
我假设(true != ok)
你的价值无效。可能存在问题,你应该保留这个值,而你应该丢弃它。
你做什么
bool ok;
double parsed = QString::fromLatin1(serialBuffer.left(serPos)).toDouble(&ok);
if (ok) {
previousValue = tempValue;
tempValue = parsed;
emit newData(parsed, previousValue);
}
在该示例中,将tempValue
重命名为currValue
可能相关。
答案 1 :(得分:0)
试试这个
<table align="center" border="1" cellspacing="0" cellpadding="0" width="700" id="table">
<thead>
<th>id</th>
<th>Subject</th>
<th>Name</th>
<th>Description</th>
<th>Hours</th>
<th>Action</th>
</thead>
<?php
$sql=mysql_query("SELECT * FROM home");
$i=1;
while($row=mysql_fetch_array($sql)){
echo "<tr>
<td>".$i."</td>
<td>".$row['subject_id']."</td>
<td>".$row['name']."</td>
<td>".$row['description']."</td>
<td>".$row['hours']."</td>
<td align='center'>
</td>
</tr>";
$i++;
}
?>