On-line: Haz, гостей 3. Всего: 4 [подробнее..]
АвторСообщение





Пост N: 206
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 21.05.19 19:06. Заголовок: функция для вычисления LRC


Есть функция для вычисления LRC или подскажите алгоритм как реализовать ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]


постоянный участник




Пост N: 6292
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.05.19 20:03. Заголовок: MIKHAIL пишет: Есть..


MIKHAIL пишет:

 цитата:
Есть функция для вычисления LRC



Что за функция такая ?
Первый раз слышу про неё.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 207
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 21.05.19 20:18. Заголовок: Andrey пишет: Что з..


Andrey пишет:

 цитата:
Что за функция такая ?


Это контрольная сумма строки, что то наподобие CRC

Контрольная сумма LRC.
Метод LRC проверяет содержание сообщения исключая начальный символ ":" и пару CRLF.
LRC это 1 байт. LRC вычисляется передающим устройством и добавляется в конец сообщения. Принимающее устройство вычисляет LRC в процессе приема сообщения и сравнивает его с принятым от главного. Если есть несовпадение, то имеет место ошибка.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1524
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.05.19 20:36. Заголовок: https://en.wikipedia..

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 208
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 21.05.19 21:28. Заголовок: PSP Set LRC = 0 For..


PSP

 цитата:
Set LRC = 0
For each byte b in the buffer
do
Set LRC = (LRC + b) AND 0xFF
end do
Set LRC = (((LRC XOR 0xFF) + 1) AND 0xFF)



Правильно я понимаю что каждый символ в строке необходимо перевести в восьмеричный код и затем использовать вместо XOR - hb_BitXor( x, y ) , а вместо AND - hb_BitAnd( x, y )

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7039
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.19 21:52. Заголовок: MIKHAIL MD5 не пока..


MIKHAIL
MD5 не покатит для этой цели ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 209
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 21.05.19 22:02. Заголовок: Dima пишет: MD5 не ..


Dima пишет:

 цитата:
MD5 не покатит для этой цели ?



Правила прописывают разработчики оборудования, я их поменять не могу...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3837
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 22.05.19 08:04. Заголовок: #include "hbapi...


#include "hbapi.h" 

HB_FUNC( HB_LRC )
{
HB_ULONG ulLRC = 0;
if( HB_ISCHAR(1) )
{
char * sBuf = hb_parc( 1 );
HB_SIZE ulLen = hb_parclen( 1 ), i;
for( i = 0; i < ulLen; i ++, sBuf ++)
{
ulLRC = ( ulLRC + *sBuf ) && 0xFF;
}
ulLRC = (((ulLRC ^ 0xFF) + 1) && 0xFF);
}
hb_retnl( ulLRC );
}


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 357
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 22.05.19 10:07. Заголовок: MIKHAIL пишет: не м..


MIKHAIL пишет:

 цитата:
не могу...


function LRC( cText )

local nCheckSum := 0
local n

for n = 1 to Len( cText )
nCheckSum = nXor( nCheckSum, Asc( SubStr( cText, n, 1 ) ) )
next

return nCheckSum

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 210
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 22.05.19 10:08. Заголовок: Pasha это нужно вст..


Pasha
это нужно вставить через Pragma ?
А вызов HB_LRC(str) ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 211
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 22.05.19 10:13. Заголовок: ММК пишет: for n =..


ММК пишет:

 цитата:

for n = 1 to Len( cText )
nCheckSum = nXor( nCheckSum, Asc( SubStr( cText, n, 1 ) ) )
next



так наверное покороче

 цитата:
for each n in cText
nCheckSum = nXor( nCheckSum, Asc( n ) )
next



Спасибо, протестирую

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3838
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 22.05.19 11:03. Заголовок: MIKHAIL пишет: это ..


MIKHAIL пишет:

 цитата:
это нужно вставить через Pragma ?
А вызов HB_LRC(str) ?



Ну да, или в конце модуля prg вставить через #pragma, или собрать как отдельный c-модуль
Вызов да, HB_LRC(str)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 391
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет