Как работать в Lua c байтами в порту?

Есть два неких контроллера. У этих контроллеров есть порты(RS485, но не суть), которые соединены между собой. Еще туда же подключены несколько простых устройств на МК. Один контроллер может кидаться байтами, второй контроллер их может принимать. На контроллерах Linux(закрытый чуть более чем полностью) и LUA. Больше ничего нет.
Внимание, вопрос: Как мне в Lua отправить и принять не символ, не строку, а просто байт или несколько байтов в 16-ричном представлении? Т.е. я отправляю 0х15, и на другом контроллере получаю тоже 0x15.
Пока что я промучался час, и получаю все что угодно, но не 0x15. Так и не понял, то ли он при отправке конвертирует его во что-то, то ли при приеме.

Отправка:
require('serial')
port = serial.open('/dev/RS485-2', {
  baudrate = 115200,
  databits = 8,
  stopbits = 1,
  parity = 'none',
  duplex = 'half'
})
port:write(0x15)
port:close()


Прием:
require('serial')
port2 = serial.open('/dev/RS485-3', {
  baudrate = 115200,
  databits = 8,
  stopbits = 1,
  parity = 'none',
  duplex = 'half'
})
data = port2:read(1)
byte=string.byte(data)

log(string.format("%o, %x, %d", byte,byte,byte))
port2:close()
  • Вопрос задан
  • 908 просмотров
Решения вопроса 1
@aelfimov
Разбирался с той же проблемой.
data = port2:read(1) должно быть так data = port2:read(1, 1) вторая еденица - время ожидания данных. и обязательно сбрасывать порт после или до сессии port:flush()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы