Автор |
Повідомлення |
Повідомлення створено: 01. 08. 2014 [08:00]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"IrmIngeneer" wrote:
Внимание! Приведенная в кач-ве примера библиотека работает некорректно в версии 0.8.11 (возвращает неверные значения) и корректно в версии 0.8.0.9.
Вероятно это связанно с функцией strDec4Bin(), системное отражение которой расширено указанием в качестве разделителя (по умолчанию сейчас отсутствует) не только пробела. В процессе адаптации к этому изменению пропустил использования в заголовках, т.е. в этой функции. Сейчас добавил туда третий аргумент разделителя со значением по умолчанию " ". Однако попадёт это в LTS со следующим обновлением.
Как вариант сейчас можно использовать универсальный объектный декодер SYS.strDecode().
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 01. 08. 2014 [08:35]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Зареєстрован(а) с: 16.09.2010
Повідомлення: 185
|
"roman" wrote:
Вероятно это связанно с функцией strDec4Bin(), системное отражение которой расширено указанием в качестве разделителя (по умолчанию сейчас отсутствует) не только пробела. В процессе адаптации к этому изменению пропустил использования в заголовках, т.е. в этой функции. Сейчас добавил туда третий аргумент разделителя со значением по умолчанию " ". Однако попадёт это в LTS со следующим обновлением.
Как вариант сейчас можно использовать универсальный объектный декодер SYS.strDecode().
После обновления для общения с OWEN снова начал использовать свою ф-ию ConvIEEE_F.
Роман, большое спасибо за пояснение, сэкономил много времени.
[Повідомлення редагувалось 1 раз(ів), останній раз 01.08.2014 в 08:37.]
|
Повідомлення створено: 07. 03. 2015 [17:22]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"IrmIngeneer" wrote:
OWEN.db
Рефакторил и влил в библиотеку пользовательских протоколов: http://wiki.oscada.org/HomePageEn/Using/APIFunctionLibs/LibUserPrtDevs
Проверять не на чем да и часть данных этого протокола там имеет только зачаточное состояние.
В любом случае протокольную часть унифицировал и внёс CRC и перекодировщики прямо туда, поскольку им там и место. И соответственно библиотека внешних функций не нужна.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 07. 03. 2015 [19:52]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Зареєстрован(а) с: 16.09.2010
Повідомлення: 185
|
"roman" wrote:
"IrmIngeneer" wrote:
OWEN.db
Рефакторил и влил в библиотеку пользовательских протоколов: http://wiki.oscada.org/HomePageEn/Using/APIFunctionLibs/LibUserPrtDevs
Проверять не на чем да и часть данных этого протокола там имеет только зачаточное состояние.
В любом случае протокольную часть унифицировал и внёс CRC и перекодировщики прямо туда, поскольку им там и место. И соответственно библиотека внешних функций не нужна.
Спасибо, на днях потестирую, отпишусь.
|
Повідомлення створено: 30. 11. 2015 [11:37]
|
andrelek
Андрей Полевой
Зареєстрован(а) с: 13.12.2008
Повідомлення: 210
|
Здравствуйте! Скачал вышеуказанную библиотеку http://wiki.oscada.org/Using/APIFunctionLibs/files?get=oscadalibs.db.gz, и проверил работу с прибором ТРМ138.
Все работает правильно, текст правильный за исключением опечатки в тексте:
----------------------------------------------------------------------------------------------------------------------------------
//Send the request and get respond
resp = tr.messIO(request);
while(resp[resp.length-1] != "\r" && (respTail=tr.messIO("")).length) resp += request;
----------------------------------------------------------------------------------------------------------------------------------
нужно заменить последнюю переменную на
----------------------------------------------------------------------------------------------------------------------------------
//Send the request and get respond
resp = tr.messIO(request);
while(resp[resp.length-1] != "\r" && (respTail=tr.messIO("")).length) resp += respTail; //request;
----------------------------------------------------------------------------------------------------------------------------------
|
Повідомлення створено: 30. 11. 2015 [12:38]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"andrelek" wrote:
Все работает правильно, текст правильный за исключением опечатки в тексте:
...
while(resp[resp.length-1] != "\r" && (respTail=tr.messIO("")).length) resp += respTail; //request;
----------------------------------------------------------------------------------------------------------------------------------
Да, или вообще в одну строку:
for(resp = tr.messIO(request); resp[resp.length-1] != "\r" && (respTail=tr.messIO("")).length; ) resp += respTail;
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 30. 11. 2015 [14:56]
|
andrelek
Андрей Полевой
Зареєстрован(а) с: 13.12.2008
Повідомлення: 210
|
Так даже изящней выходит, проверил.
|
Повідомлення створено: 29. 02. 2016 [08:16]
|
alecs
Александр Курачанский
Зареєстрован(а) с: 05.03.2013
Повідомлення: 28
|
Есть проблема, опрашиваю двух канальный трм. При опросе одного регистра все в порядке, а два одновременно плучаем кашу. Прошу откликнуться кто проверял пользовательский протокол овен на группе приборов.
|
Повідомлення створено: 29. 02. 2016 [10:48]
|
andrelek
Андрей Полевой
Зареєстрован(а) с: 13.12.2008
Повідомлення: 210
|
alecs wrote:
При опросе одного регистра все в порядке.....
Имееется ввиду одного из каналов одного и того же прибора, так?
Тестил протокол на ТРМ138 (8-ми канальный) на всех восьми каналах, работало корректно.
[Повідомлення редагувалось 1 раз(ів), останній раз 29.02.2016 в 10:52.]
|
Повідомлення створено: 29. 02. 2016 [11:02]
|
alecs
Александр Курачанский
Зареєстрован(а) с: 05.03.2013
Повідомлення: 28
|
Таки да. Прибор двух канальный. Один из каналов читается, два читаю, сыпятся ошибки. Если осталась наработка, поделитесь.
|