182
13.
'writebits',
14.
'writemultiplebits',
15.
'writeregisters',
16.
'writemultipleregisters',
17.
'reportslaveid',
18.
'getcoils',
19.
'getdiscreteinputs',
20.
'getinputregisters',
21.
'getregisters',
22.
'setcoils',
23.
'setdiscreteinputs',
24.
'setinputregisters',
25.
'setregisters',
26.
},
27.
-- new connecton init
28.
new =function()
29.
require('rpc')
30.
local mb =setmetatable({}, { __index = mbproxy })
31.
32.
mb.slaveid =0
33.
mb.rpc = rpc.client('127.0.0.1', 28002, 'mbproxy')
34.
35.
for _, fn in ipairs(mbproxy.functions)do
36.
mb[ fn ]=function(self, ...)
37.
return mb:request(fn, ...)
38.
end
39.
end
40.
41.
return mb
42.
end
43.
}
44.
45.
-- set local slave id
46.
function mbproxy:setslave(slaveid)
47.
self.slaveid = slaveid
48.
end
49.
50.
-- send rpc request for a spefic function
51.
function mbproxy:request(fn, ...)
52.
local res, err = self.rpc:request({
53.
fn = fn,
54.
params ={ ... },
55.
slaveid = self.slaveid or0,
56.
})
57.
58.
-- request error
59.
if err then
60.
return nil, err