硬件流控制位不适用于 ruby-serialport gem
Hardware flow control bits not working for ruby-serialport gem
我正在尝试将 USB 串口适配器的控制位用作通用 I/O。这个简单的示例应该先将 DTR 线切换为高电平,然后再切换为低电平。
require 'serialport'
DataBits = 8
StopBits = 1
Parity = SerialPort::NONE
Baud = 38400
port = '/dev/tty.usbserial-A100KXWU'
serial = SerialPort.new(port, 'baud' => Baud, 'data_bits' => DataBits, 'stop_bits' => StopBits, 'parity' => Parity)
serial.flow_control = SerialPort::HARD
loop do
p serial.signals
sleep(1)
serial.dtr = (serial.dtr + 1) % 2
end
并且输出:
{"rts"=>1, "dtr"=>1, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
{"rts"=>1, "dtr"=>0, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
{"rts"=>1, "dtr"=>1, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
{"rts"=>1, "dtr"=>0, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
就Ruby而言,serial.dtr
在变化,但DTR脚的输出电压没有变化。它是恒定的 +7V。
此外,serial
实例无法读取 应用于来自其他硬件设备的 CTS、DSR 或 DCD 的任何更改。
运行 拥有 sudo
权限,因此这不是权限问题。这是 OS X 10.10 Yosemite.
根据http://www.rubydoc.info/gems/serialport/SerialPort:flow_control=
Note: SerialPort::HARD uses RTS/CTS handshaking. DSR/DTR is not supported.
我在回答我自己的问题。事实证明,Apple 提供的 FTDI 驱动程序有问题。他们不提供对控制信号的任何访问权限。
我安装了 the official FTDI VCP drivers(撰写本文时为 2.3 版),重新启动,现在我可以完全控制了。
我正在尝试将 USB 串口适配器的控制位用作通用 I/O。这个简单的示例应该先将 DTR 线切换为高电平,然后再切换为低电平。
require 'serialport'
DataBits = 8
StopBits = 1
Parity = SerialPort::NONE
Baud = 38400
port = '/dev/tty.usbserial-A100KXWU'
serial = SerialPort.new(port, 'baud' => Baud, 'data_bits' => DataBits, 'stop_bits' => StopBits, 'parity' => Parity)
serial.flow_control = SerialPort::HARD
loop do
p serial.signals
sleep(1)
serial.dtr = (serial.dtr + 1) % 2
end
并且输出:
{"rts"=>1, "dtr"=>1, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
{"rts"=>1, "dtr"=>0, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
{"rts"=>1, "dtr"=>1, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
{"rts"=>1, "dtr"=>0, "cts"=>1, "dsr"=>0, "dcd"=>0, "ri"=>0}
就Ruby而言,serial.dtr
在变化,但DTR脚的输出电压没有变化。它是恒定的 +7V。
此外,serial
实例无法读取 应用于来自其他硬件设备的 CTS、DSR 或 DCD 的任何更改。
运行 拥有 sudo
权限,因此这不是权限问题。这是 OS X 10.10 Yosemite.
根据http://www.rubydoc.info/gems/serialport/SerialPort:flow_control=
Note: SerialPort::HARD uses RTS/CTS handshaking. DSR/DTR is not supported.
我在回答我自己的问题。事实证明,Apple 提供的 FTDI 驱动程序有问题。他们不提供对控制信号的任何访问权限。
我安装了 the official FTDI VCP drivers(撰写本文时为 2.3 版),重新启动,现在我可以完全控制了。