ruby гем serialport, кто отвечает за проверку ошибок четности?

gems

serialport (1.0.4)
Авторы: Гийом Пьеронне, Алан Стерн, Дэниел Э. Шиптон, Тобин
Ричард, Гектор Парра, Райан С. Пейн
Домашняя страница: http://github.com/hparra/ruby-serialport/
Библиотека для использования последовательных портов RS-232.

Я использую этот драгоценный камень, и характеристики моего устройства следующие.

  • 9600 бит / с
  • 7 бит
  • 1 стоповый бит
  • ЧЕТНАЯ четность

Когда я получаю данные, как показано ниже, распакованные данные все еще имеют бит четности.

sp = SerialPort.new("/dev/serial-device", 9600, 7, 1, SerialPort::EVEN)
data = sp.gets
data.chars.each do |char|
  puts char.unpack("B*")
end

пр. если sp получает a , распакованные данные будут 11100001 вместо 01100001 , потому что это ЧЕТНАЯ четность.


Чтобы преобразовать байт обратно в то, чем он должен быть, мне нравится это

data = sp.gets #gets 11100001 for 'a' (even parity)
data.bytes.to_a.each do |byte|
  puts (byte & 127).chr
end

сейчас, для меня это низкоуровневый способ. Я ожидал, что гем последовательного порта должен выполнить эту проверку четности, но насколько я читал его документ, он ничего не говорит о проверке четности.

Мне не хватает метода, который уже реализован в геме, или моя работа, описанная выше, необходима, поскольку я обязан проверить четность и найти ошибку?

6
задан the Tin Man 26 April 2013 в 01:56
поделиться