![]() |
![]() |
#21 |
Senior Member
|
![]()
Обновлён. Версия 0.1.5276.20347.
Убрал зависимость от jQuery. Пришлось переделать shell-скрипт, отвечающий за разбор параметров. Размер архива уменьшился почти в 4 раза. Теперь скрипт запроса должен выглядеть вот так: Код:
modbus.OnFailure = function( handle, error ) { document.getElementById( 'console' ).value += '\nОшибка: ' + error; } modbus.OnSuccess = function( handle ) { document.getElementById( 'console' ).value += '\nRegister( ' + handle + ', 0 ): ' + modbus.Register( handle, 0 ); } modbus.Serial = { Name: '/dev/ttyATH0', BaudRate: EnModbusBaudRate.mbBaudRate9600, DataBits: EnModbusDataBits.mbDataBits8Bits, Parity: EnModbusParity.mbParityNone, StopBits: EnModbusStopBits.mbStopBitsOne, Timeout: 100 }; // ReadHoldingRegisters( handle, slaveid, address, quantity, updaterate ) // Starting Address: 0x0000 to 0xFFFF. // Quantity of Inputs: 1 to 125 (0x7D). modbus.ReadHoldingRegisters( 1, 0, 0, 1, 1000 ); modbus.ReadHoldingRegisters( 2, 0, 1, 1, 950 ); modbus.ReadHoldingRegisters( 3, 0, 2, 1, 750 ); modbus.DelayBetweenPoll = 200; modbus.UpdateEnable(1); modbus.UpdateEnable(2); modbus.UpdateEnable(3); setTimeout( function() { modbus.UpdateDisable(1); modbus.UpdateDisable(2); modbus.UpdateDisable(3); }, 5000 ); Код:
ajax: function( request ) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if ( this.readyState == 4 && this.status == 200 ) { request.success( xhr.responseText ); } }; xhr.open( request.type, request.url, request.async ); xhr.send( JSON.stringify( request.data ) ); }, jQuery я убрал, но добавил json.cgi - это парсер JSON формата. Он позволяет делать разбор принимаемых данных, которые я передаю всегда в json-формате. Довольно удобно и места он занимает не много ~4 Кб. Сейчас я в коде везде использую синхронные запросы, т.к. пока не знаю как решить проблему параллельного запуска скриптов в случае асинхронных post запросов. Минусом является то, что страничка слегка "подтормаживает" при отображении принимаемых данных.
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#22 |
Senior Member
|
![]()
Admin, вот этот архив можно добавить в комплект для тестирования.
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#23 |
Junior Member
Регистрация: 16.05.2014
Адрес: Баку
Сообщений: 18
Вес репутации: 0 ![]() |
![]()
Вячеслав,все операции так же проводить через модуль?Или же уже можно запрашивать через браузер?
|
![]() |
![]() |
![]() |
#24 |
Senior Member
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#25 |
Senior Member
|
![]()
Я раньше не добавлял модули в CyberWrt. Единственный мой модуль добавил Admin, поэтому я не знаю как это делается. В архиве modbus.zip я добавил картинок, согласно описанию и последние версии скриптов.
Этот архив меньшего размера, чем предыдущие, так как я убрал зависимость от jQuery. Сам скрипт modbus.js теперь можно использовать и отдельно в своих разработках. Он самодостаточен.
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#26 |
Senior Member
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
ок. новую версию залил
|
![]() |
![]() |
![]() |
#27 |
Senior Member
|
![]()
На всякий случай поясняю, что func.txt содержит текст запроса в кодировке Base64. В роутере есть специальная команда для кодирования и декодирования таких строк: base64.
Не рекомендую декодировать и править этот файл вручную. Это связано с переносами строк. Кодирование позволяет сохранить оригинальную бинарную копию файла. Разные редакторы по-разному интерпретируют переносы. Из-за этого может нарушиться отображение скрипта в браузере. Я пока не нашел более удобного и безопасного в этом смысле способа работы с текстом.
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#28 |
Senior Member
|
![]()
Ой, а я и не понял, что модуль там находится
![]()
__________________
Россия навсегда! |
![]() |
![]() |
![]() |
#29 | |
Senior Member
|
![]() Цитата:
К примеру, чтобы сделать Конфигутатор какого-то устройства или HMI, нужно графическую часть написать на html, а всё взаимодействие будет идти через http-сервер, который работает в роутере. Страничка обращается с запросом к серверу, тот запускает локальный скрипт, этот скрипт обращается к последовательному порту и потом всё в обратном порядке. Так это работает.
__________________
Россия навсегда! |
|
![]() |
![]() |
![]() |
#30 |
Junior Member
Регистрация: 16.05.2014
Адрес: Баку
Сообщений: 18
Вес репутации: 0 ![]() |
![]()
Советую добавить еще одну кнопку "стоп" в модуль и сделать постоянный опрос регистров.А то всего 4 раза опрашивает.И также выдает ошибку -3 при записи регистра 0х05 write single coil.В нулевое состояние записывается без проблем
|
![]() |
![]() |
![]() |
Метки |
modbus, modbus-rtu, скрипт, модуль |
Здесь присутствуют: 7 (пользователей: 0 , гостей: 7) | |
|
|