Еще раз - внимательно посмотрите справку к этой функции.
Вы ее вообще неправильно пишите - первым вам параметром идет err
Еще раз - внимательно посмотрите справку к этой функции.
Вы ее вообще неправильно пишите - первым вам параметром идет err
Спасибо.
Добрый день!
10 11 0D 4D 53 44 2D 32 30 30 20 56 31 2E 35 31 1E BE , где:
10 - адрес прибора
11 - функция
0D - количество байт данных
1E BE - CRC
4D 53 44 2D 32 30 30 20 56 31 2E 35 31 - MSD-200 V1.51
Создаю маску:
destmask={"byte"(адрес прибора),"byte"(функция),"byte"(кол-во байт данных),"string:4"(MSD-),"int16:3:10"(200),"string:2"(пробел V),"int16:10"(1),"string"(. (точка)),"int16:2:10"(51)};
Итоговый код:
function OnRead()
local send={};
local Addr=server.GetCurrentDeviceAddress( );
table.insert(send, Addr);
table.insert(send, 0x11);
local sendmask={"byte","byte"};
local dest={};
local destmask={"byte","byte","byte","string:4","int16:3 :10","string:2","int16:10","string","int16:2:10"} ;
dest=server.SendAndReceiveDataByMask(2,table.maxn( send),sendmask, send, destmask, 200);
server.Message(dest[4]); -- Читаю букву "М"
end
Получаю ошибку:
05-07-2019 10:53:24.483 Tag1:Node1.Device1.Tag1 >> (node)Node1device)Device1teg)Tag1OnRead)::[string "--[[(R)Node1.Device1.Tag1]]..."]:20: attempt to index local 'dest' (a number value)
stack traceback:
[C]: in function '__index'
[string "--[[(R)Node1.Device1.Tag1]]..."]:20: in function <[string "--[[(R)Node1.Device1.Tag1]]..."]:9>
Ответ был дан ранее
Спасибо.
з.ы. у вас в руках устройство с расширенными функциями Modbus, по крайней мере парсер Modbus говорит об этом. Это просто набор запрошенного количества байт, где вы сами определяете набор данных. и сами же этот набор потом раскатываете как вам укажет производитель железки.
Part of Data Package Description Value
10 Slave address 0x10 (16)
11 Function code 0x11 (17)
0D 4D 53 44 2D 32 30 30 20 56 31 2E 35 31 Data
1E BE CRC 0x1EBE (7870)
Точнее набор байт, типы переменных и т.д. должен предоставить производитель устройства...