01.02.2019, 08:24
Your example already does what I've suggested. The only slight improvement is to use a table to buffer data.
Code:
-- Check if port is open, open serial port if not
if not port then
require('serial')
port = serial.open('/dev/ttyUSB0', { baudrate = 2400 })
port:flush()
buffer = {}
end
-- Read on byte, or time out after 1 sec
char = port:read(1, 1)
if char then
buffer[ #buffer + 1 ] = char
elseif #buffer > 0 then
data = table.concat(buffer)
-- parse(data)
loghex(data)
buffer = {}
end