我有一个使用4个通道并使用DMA进行传输的ADC任务我还有一个流式客户端,它通过TCP套接字流式传输ADC数据,使得ADS任务的优先级低于流式客户端。
我发送一个整数,选择选择哪个ADC通道作为流媒体客户端的消息队列。
问题是我在发送adc通道整数时会出现队列溢出。
ADC TASK
$sql= 'SELECT * FROM '.$username.' ORDER BY data DESC';
?>
<!DOCTYPE html>
<html>
<head></head>
<body>
<br/><br/>
<div>
<table align="center" width='100%' border=0>
<tr bgcolor='#CCCCCC'>
<td>Data</td>
<td>Cantiere</td>
<td>Pranzo</td>
<td>Cena</td>
<td>Hotel</td>
<td>Macchina</td>
<td>Note</td>
<td>Edit/Delete</td>
</tr>
<?php
while($res = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>".$res['data']."</td>";
echo "<td>".$res['cantiere']."</td>";
echo "<td>".$res['pranzo']."</td>";
echo "<td>".$res['cena']."</td>";
echo "<td>".$res['hotel']."</td>";
echo "<td>".$res['macchina']."</td>";
echo "<td>".$res['note']."</td>";
echo "<td><a href=\"edit.php?id=$res[id]\">Edit</a> | <a
href=\"delete.php?id=$res[id]\" onClick=\"return confirm('Are you sure you
want to delete?')\">Delete</a></td>";
}
?>
</table>
</div>
</body>
</html>
流式客户端任务
if(bufferSelect != BUFFERS_NOT_READY)
{
if(xQueueSend(g_adcQueue, &bufferSelect, 0) != pdPASS)
{
throwError(ERROR_MESSAGE_QUEUE_FULL);
PRINTF("%s\r\n", getErrorMessage(ERROR_MESSAGE_QUEUE_FULL));
}
bufferSelect = BUFFERS_NOT_READY;
}
答案 0 :(得分:0)
您似乎将队列完全状态视为错误,通常不会 - 队列的目的之一是对生产者施加压力,这正是您应该在此处执行的操作:如果是流式传输任务无法消化你投掷的数据,你只是生产太多。
当消费者代码中没有非活动(等待I / O)期间时,消费者的优先级仅有助于将队列填充状态保持在合理的水平。只要您的消费者有这样的等待时间,仅凭优先权并不能减轻您接受队列可能已满的等待。