Нужна помощь в написания кода контрольная сумма CRC

Тема в разделе "Закажу проект", создана пользователем Levin150, 20 июл 2014.

  1. Levin150

    Levin150 Нуб

    Привет всем .
    Ардуино
    Нужно написать два скетча и подробно расписать для подсчёта контрольной суммы CRC за вознаграждения , кому интересно пишите на почту. evgenzheka@qip.ru
    Есть устройства которое читает данные с контрольной суммой.
    Нужен код когда я изменяю любое значения , контрольная сумма меняется автоматически.
    код
    расечатать?
    void setup() {


    Serial.begin(19200);
    }
    void loop() {
    Serial.write(62);

    Serial.write(1);
    Serial.write(7);
    Serial.write(19);
    Serial.write(83);
    Serial.write(0);
    Serial.write(252);
    Serial.write(20);
    Serial.write(183); // Контрольная сумма 100110001 P(x) = x8+ x5+ x4+ x0
    delay(1000);
    }
    А во втором коде я не знаю по какой CRC она рассчитывается
    код
    расечатать?
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
    Serial.println("S1B2F02 A010540.00 C0165010.000 E0012143.0 G077.0 H1200 I+050 J060 K02220.0 L02221.0 M02222.0 N02223.0 O02224.0 P01000000 Z6CFE");
    delay(1000);
    }
     
  2. Levin150

    Levin150 Нуб

    Привет всем .
    Ардуино
    Нужно написать два скетча и подробно расписать для подсчёта контрольной суммы CRC за вознаграждения , кому интересно пишите на почту. evgenzheka@qip.ru
    Есть устройства которое читает данные с контрольной суммой.
    Нужен код когда я изменяю любое значения , контрольная сумма меняется автоматически.
    код
    расечатать?
    void setup() {


    Serial.begin(19200);
    }
    void loop() {
    Serial.write(62);

    Serial.write(1);
    Serial.write(7);
    Serial.write(19);
    Serial.write(83);
    Serial.write(0);
    Serial.write(252);
    Serial.write(20);
    Serial.write(183); // Контрольная сумма 100110001 P(x) = x8+ x5+ x4+ x0
    delay(1000);
    }
    А во втором коде я не знаю по какой CRC она рассчитывается
    код
    расечатать?
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
    Serial.println("S1B2F02 A010540.00 C0165010.000 E0012143.0 G077.0 H1200 I+050 J060 K02220.0 L02221.0 M02222.0 N02223.0 O02224.0 P01000000 Z6CFE");
    delay(1000);
    }
     
  3. Levin150

    Levin150 Нуб

    Привет всем .
    Ардуино
    Нужно написать два скетча и подробно расписать для подсчёта контрольной суммы CRC за вознаграждения , кому интересно пишите на почту. evgenzheka@qip.ru
    Есть устройства которое читает данные с контрольной суммой.
    Нужен код когда я изменяю любое значения , контрольная сумма меняется автоматически.
    код
    расечатать?
    void setup() {


    Serial.begin(19200);
    }
    void loop() {
    Serial.write(62);

    Serial.write(1);
    Serial.write(7);
    Serial.write(19);
    Serial.write(83);
    Serial.write(0);
    Serial.write(252);
    Serial.write(20);
    Serial.write(183); // Контрольная сумма 100110001 P(x) = x8+ x5+ x4+ x0
    delay(1000);
    }
    А во втором коде я не знаю по какой CRC она рассчитывается
    код
    расечатать?
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
    Serial.println("S1B2F02 A010540.00 C0165010.000 E0012143.0 G077.0 H1200 I+050 J060 K02220.0 L02221.0 M02222.0 N02223.0 O02224.0 P01000000 Z6CFE");
    delay(1000);
    }
     
  4. Levin150

    Levin150 Нуб

    Привет всем .
    Ардуино
    Нужно написать два скетча и подробно расписать для подсчёта контрольной суммы CRC за вознаграждения , кому интересно пишите на почту. evgenzheka@qip.ru
    Есть устройства которое читает данные с контрольной суммой.
    Нужен код когда я изменяю любое значения , контрольная сумма меняется автоматически.
    код
    расечатать?
    void setup() {


    Serial.begin(19200);
    }
    void loop() {
    Serial.write(62);

    Serial.write(1);
    Serial.write(7);
    Serial.write(19);
    Serial.write(83);
    Serial.write(0);
    Serial.write(252);
    Serial.write(20);
    Serial.write(183); // Контрольная сумма 100110001 P(x) = x8+ x5+ x4+ x0
    delay(1000);
    }
    А во втором коде я не знаю по какой CRC она рассчитывается
    код
    расечатать?
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
    Serial.println("S1B2F02 A010540.00 C0165010.000 E0012143.0 G077.0 H1200 I+050 J060 K02220.0 L02221.0 M02222.0 N02223.0 O02224.0 P01000000 Z6CFE");
    delay(1000);
    }
     
  5. Unixon

    Unixon Оракул Модератор

    Алгоритм вычисления (тип) контрольной суммы какой выбрали?
     
  6. Levin150

    Levin150 Нуб

    в первом коде я знаю что CRC8 , а во втором не знаю, мне важно чтобы устройство читало те значения которые я посылаю, приведённые примеры в коде устройства читает но стоит мне поменять любое число и оно его не принимает поскольку контрольная сумма не совпадает
     
  7. Levin150

    Levin150 Нуб

    в первом коде я знаю что CRC8 , а во втором не знаю, мне важно чтобы устройство читало те значения которые я посылаю, приведённые примеры в коде устройства читает но стоит мне поменять любое число и оно его не принимает поскольку контрольная сумма не совпадает
     
  8. Unixon

    Unixon Оракул Модератор

    Сделайте функцию-обертку типа такой

    Код (Text):

    byte crc8(char *str)
    {
     if (!str) return 0;
     byte result = 0;
     int index = 0;
     while (str[index])
     {
      result ^= str[index++];
      for (byte i = 0; i < 8; i++)
      {
       result = result & 0x80 ? (result << 1) ^ 0x31 : result << 1;
      }
     }
     return result;
    }

    byte print(char *str)
    {
     Serial.print(str);
     return crc8(str);
    }
     
     
  9. Levin150

    Levin150 Нуб

     
  10. Levin150

    Levin150 Нуб



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