我正在尝试实施Firmata协议,并且在解读用于编写数字引脚的规范方面有些困难:
我注意到了Firmata 2.3规范的以下部分
* type command channel first byte second byte
------------------------------------------------------------------------------
* digital I/O message 0x90 port LSB(bits 0-6) MSB(bits 7-13)
和
/* two byte digital data format, second nibble of byte 0 gives the port number (e.g. 0x92 is the third port, port 2)
* 0 digital data, 0x90-0x9F, (MIDI NoteOn, but different data format)
* 1 digital pins 0-6 bitmask
* 2 digital pin 7 bitmask
*/
我在解释规范时遇到了一些困难。我看过其他实现,但是还看不到规范和实现之间的关系。
假设我要打开Arduino LED(引脚13),我知道它将在第二个端口(端口1)上,因此第一个字节为#{91}
。
我对后两个字节的位掩码感到困惑。我知道位掩码是什么,所以我想为该引脚启用正确的位。
为什么数字引脚的位掩码这么大?我熟悉在PLC的数字输出上使用位掩码,这似乎有很大的不同(一个针,一个位)
我的想法是引脚13将是端口1上的第7引脚。由于我不在乎其他引脚,因此我将在第2个字节#{40}中标记该引脚,并且不需要为该引脚设置任何引脚。第三字节#{00}?
我认为我对位掩码的解释不正确,这可能是我的错误所在
我是否在正确的轨道上?这是将引脚设置为高电平或低电平的正确命令吗?
在strace
使用firmata测试应用程序进行了一些调试之后,我发现打开引脚13的简单命令是:
#{912000}
并关闭它:
#{910000}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句