Как работать в 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()
  • Вопрос задан
  • 1180 просмотров
Решения вопроса 1
@aelfimov
Разбирался с той же проблемой.
data = port2:read(1) должно быть так data = port2:read(1, 1) вторая еденица - время ожидания данных. и обязательно сбрасывать порт после или до сессии port:flush()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
IGA Technologies Москва
До 70 000 ₽
Монополия Санкт-Петербург
от 87 000 до 87 000 ₽
18 апр. 2024, в 12:04
2000 руб./за проект
18 апр. 2024, в 12:01
15000 руб./за проект
18 апр. 2024, в 11:47
30000 руб./за проект