0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 19
|
||||||
1 | ||||||
Контрольная сумма модбас07.01.2018, 21:12. Показов 2865. Ответов 7
Метки нет (Все метки)
Доброго времени суток всем
Прошу помощи. Не могу реализовать LCR. массив List<String> в нем (1B 03 03 26 00 12) Получатся A7.
Нужно правильно реализовать сложение так, чтобы перенос сбрасывался. может кто подскажет как сделать?
0
|
07.01.2018, 21:12 | |
Ответы с готовыми решениями:
7
Контрольная сумма(сумма цифр) Контрольная сумма QT Контрольная сумма Контрольная сумма |
Am I evil? Yes, I am!
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
|
||||||
07.01.2018, 21:53 | 2 | |||||
Приведи пример входных данных, приводящих к ошибке.
0
|
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 19
|
|
07.01.2018, 23:00 [ТС] | 3 |
Спасибо за ответ.
На не большом массиве все ОК а вот если побольше то нет. Вот последовательность, где не работает : 1B 03 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0
|
Am I evil? Yes, I am!
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
|
|
07.01.2018, 23:05 | 4 |
А ты проверь. Работает всё
0
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
08.01.2018, 02:21 | 5 |
0
|
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 19
|
|
08.01.2018, 10:54 [ТС] | 6 |
Доброго времени суток. Спасибо за ответы.
Да, там строка с нулями и перенос не нужно было обрабатывать Вот строка, на которой идет не правильный ответ. "1B 10 00 1C 00 04 08 00 09 06 1B 06 01 FF CF" Ответ должен быть “AE”, а по моей программе получается “AC”. Если вообще убрать сброс, который я сделал /* if (sum>0xFF) { sum=sum-0xFF;}*/ , то идет ошибка java.lang.NumberFormatException: For input string: "11111111111111111111111010101110" Нужно правильно реализовать сложение так, чтобы перенос сбрасывался. А по моему варианту сброс работает не правильно
0
|
Am I evil? Yes, I am!
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
|
||||||
08.01.2018, 11:51 | 7 | |||||
Сообщение было отмечено nicamx как решение
Решение
С какого рояля?
Добавлено через 1 минуту Зачем изгаляться с переводом в бинарную строку туда-сюда? Добавлено через 2 минуты Или у тебя при каждом переполнении FF, +1 должен быть чтоли? Добавлено через 3 минуты
1
|
0 / 0 / 0
Регистрация: 19.04.2017
Сообщений: 19
|
|
08.01.2018, 12:34 [ТС] | 8 |
Большущее спасибо!!! Все корректно теперь работает!!!
Это был алгоритм вычисления контрольной суммы ModBus ASCII протокола Longitudinal Redundancy Chek (LRC) Алгоритм генерации LRC: 1) Сложить все байты сообщения, складывая их так, чтобы перенос отбрасывался. 2) Отнять получившееся значение от числа FF(Hex) - это является первым дополнением. 3) Прибавить к получившемуся значению 1 - это второе дополнение.
0
|
08.01.2018, 12:34 | |
08.01.2018, 12:34 | |
Помогаю со студенческими работами здесь
8
Контрольная сумма Контрольная сумма CRC32 Контрольная сумма CRC16 Контрольная сумма программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |