Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Вы не вошли.

 Поиск | Регистрация | Вход 

Вчера 13:10:06
#26

Участник
Здесь с 27.09.2023
Сообщений: 43

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

серийники крейтов
новый 6T777689
старый 6T769623

Вчера 14:51:29
#27

Участник
Здесь с 27.09.2023
Сообщений: 43

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

ситуация следующая, если использовать только старые библиотеки то ltr43 работает, ltr11 при конфигурации выдает ошибку, но дальше работает (подозреваю что с дефолтной конфигурацией).
если заменить только ltr11api.dll то приложение падает молча, если подкинуть еще ltrapi.dll падает с Abnormal program termination

так что от вас требуется починить либо ltr11api.dll для нового ltr11, либо в новых библиотеках починить ltr43api.dll

Вчера 19:01:12
#28

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,408

Re: LTR-EU-2 LTR43 + LTR11 новая проблема с новыми LTR

Кажется я понял в чем дело. Судя по всему проблема возникала из-за того, что в коде

short CRC = CalculateModbusCRC(&mDataToSend[0], 6);
mDataToSend[6] = CRC>>8;			 // Старший байт контрольной суммы
mDataToSend[7] = CRC&0x00FF;		 // Младший байт контрольной суммы

если в CRC старший бит будет 1, то при сдвиге CRC >> 8 старшая часть дополнится тоже 1 (это может зависеть от компилятора, но в Borland как и во многих сделано, что при сдвиге знакового числа старшие биты дополняются знаковым (старшим)).
В новой библиотеке действительно, если старшие незначащие биты в словах на передачу были не 0, то это могло привести к ошибкам формирования слов на передачу.
Этим и объясняется, что зависит от адреса, т.к. от адреса меняется CRC (точно проверить не могу соответствие старшего бита CRC и адреса регистра, т.к. не знаю какой у Вас DEVICE_ADDRESS)
Поправил, чтобы от старших битов корректность передачи не зависела - обновил ltrdll ( https://lcard.ru/download/ltrdll.exe - должна быть версии 1.32.45). Попробуйте взять оттуда.
Ну и если бы код был

mDataToSend[6] = (CRC>>8) & 0x00FF;	

то, по идее, должно работать и с текущей.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон: +7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Мы работаем с юридическими и физическими лицами, пожалуйста, прикладывайте реквизиты при оформлении заказа
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск