【发布时间】:2011-08-12 18:29:55
【问题描述】:
我正在尝试创建一个数据包以使用 ruby-serialport 通过串行发送。这似乎应该很简单,当我只写一个字符串时它就可以工作:
packet = "\xFF\x03\x10\x01\x01\xFE"
sp.write(packet)
=>hardware does what it's supposed to, opens the door represented by the 4th hex value
但我显然需要以编程方式执行此操作,而且我无法找出正确的方法。以下是我尝试过的一些事情:
door = 1
packet = "\xFF\x03\x10" + door.to_s(16) + "\x01\xFE"
sp.write(packet)
=> can't convert fixnum into string
和
door = 1
packet = "\xFF\x03\x10" + door.to_a.pack('H*') + "\x01\xFE"
sp.write(packet)
=> to_a will be obsolete
can't convert fixnum into string
和
door = 1
sp.write("\xFF\x03\x10")
sp.write(door)
sp.write("\x01\xFE")
=>no response from hardware
任何人都可以帮助我了解如何将数字正确转换为串行端口的正确十六进制表示法并加入其他十六进制字符串吗?提前致谢!
【问题讨论】:
标签: ruby hex serial-port