Показано с 1 по 10 из 20

Тема: Контрольная сумма ТРМ201

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    это пакет в ascii виде с начальным и конечным маркерами: #GVHGRILNMOQK\xD
    после распаковки в двоичный вид получаем 0f 10 b2 57 68 a4, контрольная сумма - 68 a4, рассчитывается по следующему алгоритму:

    Код:
    unsigned short owenCRC16(unsigned char* packet, size_t length)
    {
    	size_t i, j;
    	unsigned short crc;
    
    	assert(packet);
    
    	crc = 0;
    	for (i = 0; i < length; ++i)
    	{
    		unsigned char b = packet[i];
    		for (j = 0; j < 8; ++j, b <<= 1)
    		{
    			if ((b ^ (crc >> 8)) & 0x80)
    			{
    				crc <<= 1;
    				crc ^= 0x8F57;
    			}
    			else
    				crc <<= 1;
    		}
    	}
    	return crc;
    }
    подробности в описании протокола ОВЕН.

  2. #2

    Thumbs up

    Спасибо большое.

    Теперь работает!

  3. #3
    незарегистрированный
    Гость

    По умолчанию

    Цитата Сообщение от Дмитрий Егоренков Посмотреть сообщение
    это пакет в ascii виде с начальным и конечным маркерами: #GVHGRILNMOQK\xD
    после распаковки в двоичный вид получаем 0f 10 b2 57 68 a4, контрольная сумма - 68 a4, рассчитывается по следующему алгоритму:

    Код:
    unsigned short owenCRC16(unsigned char* packet, size_t length)
    {
    	size_t i, j;
    	unsigned short crc;
    
    	assert(packet);
    
    	crc = 0;
    	for (i = 0; i < length; ++i)
    	{
    		unsigned char b = packet[i];
    		for (j = 0; j < 8; ++j, b <<= 1)
    		{
    			if ((b ^ (crc >> 8)) & 0x80)
    			{
    				crc <<= 1;
    				crc ^= 0x8F57;
    			}
    			else
    				crc <<= 1;
    		}
    	}
    	return crc;
    }
    подробности в описании протокола ОВЕН.
    Подобная проблема. Смотрел протокол но мало что понял.
    В СИ я полный дуб, пробую силы на Делфи. Помогите пожалуйста, приведите пример на Делфи, или словами опишите алгоритм. Спасибо.

  4. #4

    По умолчанию

    в дельфи я полный дуб, и вам на него время тратить не советую.

    но если вы настаиваете, замените операторы >>, <<, ^, & на shr, shl, xor, and соответственно.

  5. #5
    незарегистрированный
    Гость

    Smile

    Цитата Сообщение от Дмитрий Егоренков Посмотреть сообщение
    в дельфи я полный дуб, и вам на него время тратить не советую.

    но если вы настаиваете, замените операторы >>, <<, ^, & на shr, shl, xor, and соответственно.
    А говорите дуб... http://www.owen.ru/forum/images/icons/icon7.gif
    Smile
    Спасибо, попробую

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •