55 lines
1 KiB
Lua
55 lines
1 KiB
Lua
local port_name = arg[1] or CONTROL_PORT or '\\\\.\\CNCB1'
|
|
|
|
local rs232 = require("rs232.core")
|
|
|
|
local ERRORS = {}
|
|
|
|
for k, v in pairs(rs232) do
|
|
if string.find(k, 'RS232_ERR_') then
|
|
ERRORS[v] = k
|
|
end
|
|
end
|
|
|
|
local function error_name(no)
|
|
return ERRORS[no] or tostring(no)
|
|
end
|
|
|
|
local function errf(no)
|
|
return string.format('error: %s', error_name(no))
|
|
end
|
|
|
|
local function gc()
|
|
for i = 1, 10 do
|
|
collectgarbage('collect')
|
|
end
|
|
end
|
|
|
|
do
|
|
local e, p1 = rs232.open(port_name)
|
|
assert(e == rs232.RS232_ERR_NOERROR, errf(e))
|
|
assert(p1 ~= nil, errf(e))
|
|
|
|
local e, p2 = rs232.open(port_name)
|
|
|
|
if p2 and e == rs232.RS232_ERR_NOERROR then
|
|
print('[SKIP] there no way to detect ether port is still opened')
|
|
return gc()
|
|
end
|
|
|
|
assert(p2 == nil, errf(e))
|
|
assert(e == rs232.RS232_ERR_OPEN, errf(e))
|
|
end
|
|
|
|
gc()
|
|
|
|
local e, p1 = rs232.open(port_name)
|
|
assert(e == rs232.RS232_ERR_NOERROR, errf(e))
|
|
assert(p1 ~= nil, errf(e))
|
|
|
|
p1:close()
|
|
|
|
local e, p1 = rs232.open(port_name)
|
|
assert(e == rs232.RS232_ERR_NOERROR, errf(e))
|
|
assert(p1 ~= nil, errf(e))
|
|
|
|
p1:close()
|