【发布时间】:2014-01-02 09:28:56
【问题描述】:
这是一个使用 C++ 的嵌入式解决方案,我从手机屏幕读取亮度变化,从非常亮(白色)到暗(黑色)。
使用 JavaScript 和一个非常 simple script 我以 100 毫秒的间隔将网页的背景从白色更改为黑色,并在我的亮度传感器上读取结果,正如预期的那样,浏览器的时间不是很精确,有时确实如此100ms 有时更少,有时更多,有时会有很大的偏差。
var syncinterval = setInterval(function(){
bytes = "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101";
bit = bytes[i];
output_bit(bit);
i += 1;
if(i > bytes.length) {
clearInterval(syncinterval);
i = 0;
for (i=0; i < input.length; i++) {
tbits = input[i].charCodeAt(0).toString(2);
while (tbits.length < 8) tbits = '0' + tbits;
bytes += tbits;
}
console.log(bytes);
}
}, sync_speed);
我最初的想法是,在知道浏览器上的时间是如何使用异步串行通信之前,使用一些知道“单词”来同步数据流,就像 RS232 与他的起始位一样,但在 RS232 上,时钟非常精确。
我可以使用第二个传感器来读取屏幕的不同部分作为时钟,在这种情况下,即使显示器或浏览器“决定”更快或更慢,我的系统也只会在有时钟信号时读取(this is a similar application 是他们滑动传感器而不是根据我的需要使屏幕闪烁),但这需要更复杂的硬件系统,我不想在搜索软件解决方案之前让事情变得复杂。
我不需要高速,我尝试发送的数据大约只有 8 个字节。
【问题讨论】:
-
你能不能改变你的系统,这样你就可以在一半的屏幕上显示带有数据的分割背景,在另一半的屏幕上显示时钟?您需要两个传感器,但您可以让浏览器控制时钟,因此计时本来应该很容易做到......
标签: c++ serial-port protocols