我正在用MaxSonar EZ1 ultrasonic range sensor和Arduino Diecimila做一个小项目。在
使用MaxSonar playground code,我让Arduino每隔0.5秒编写一次序列号的英寸数,以及一个分隔符。监视串行数据时,输出类似于:
5.13.15.12.123.39.345...
在Python方面,我有一个基本的Flask应用程序,它有一个/distance路由,它返回一个JSON对象,该对象具有序列值:
^{pr2}$以及索引.html是一个基本的网站,有一些JS,每半秒就有一个新的阅读内容进行投票。有了这个值,我应该能够构建一个有趣的UI,它根据我离声纳的距离而改变。在
$(document).ready(function() {
window.GO = function() {
this.frequency = 500; // .5 seconds
this.init = function() {
window.setInterval(this.update_distance, 500);
}
this.update_distance = function() {
$.get('/distance', function(response) {
var d = response.distance;
$('#container').animate({"width": d + "%"});
}, 'json')
}
}
go = new GO();
go.init();
});
问题
我遇到的问题是,不能保证当python从serial读取时,会有一个值。通常情况下,当它进行轮询时,我要么得到一个空值,要么得到一个部分值,而其他时候它是精确的。在
如何改变我的技术,使我能够一致地轮询串行数据,并从Arduino串行输出接收最后一个良好的读数?在
你想把你的连读设置为在后台进行,而不是按需进行。您可以使用threading和Queue。一旦确定有一个有效的值,就可以将串行值添加到队列中,然后套接字调用就会从队列中拉出。会是这样的:
您需要添加一个方法来连接线程以获得一个优雅的退出,但这应该能让您继续
相关问题 更多 >
编程相关推荐