用Ruby将字节数组写入串行

用Ruby将字节数组写入串行,ruby,serial-port,arduino,Ruby,Serial Port,Arduino,我不清楚如何用ruby编写简单的字节码数组,更重要的是,我完全不知道如何使用这个库,老实说,我的库工作得很好,但是我只成功地通过串行端口发送了ASCII码 例如,编写ASCII非常简单: @sp = SerialPort.new "/dev/tty.usbserial-A6004cNN", 19200 @sp.write "test" 它显然会将test写入串行设备。这很好,在本例中,我已经能够将所有预期结果发送到微控制器()。问题是我需要写入输出,串行设备将这样读取: {0x01,0x09,

我不清楚如何用ruby编写简单的字节码数组,更重要的是,我完全不知道如何使用这个库,老实说,我的库工作得很好,但是我只成功地通过串行端口发送了ASCII码

例如,编写ASCII非常简单:

@sp = SerialPort.new "/dev/tty.usbserial-A6004cNN", 19200
@sp.write "test"
它显然会将
test
写入串行设备。这很好,在本例中,我已经能够将所有预期结果发送到微控制器()。问题是我需要写入输出,串行设备将这样读取:

{0x01,0x09,0x04,0x00, 'f',0xff,0xcc,0x33}
我已经尝试使用,但仍然无法产生所需的十六进制值作为字节输出,如上所述

在Java中,使用其串行库非常简单:

byte[] cmd = { 0x01,0x09,0x04,0x00, 'f',(byte)0xff,(byte)0xcc,(byte)0x33 };
serialPort.write( cmd );
如何使用Ruby将正确的字节码输出到串行设备

@sp.write [32.chr, 7.chr, 8.chr, 65.chr].to_s
@sp.write ["\x01\x09\x04\x00", 'f', "\xff\xcc\x33"].to_s
但是我们可以有更多的乐趣(哈哈哈…)

那么:

>> [1,2,3,65,66,67].chr
=> ["\001", "\002", "\003", "A", "B", "C"]
>> [1,2,3,65,66,67].chr.to_s
=> "\001\002\003ABC"

哇!伟大的我没想到会这么简单。谢谢
>> [1,2,3,65,66,67].chr
=> ["\001", "\002", "\003", "A", "B", "C"]
>> [1,2,3,65,66,67].chr.to_s
=> "\001\002\003ABC"