1. C# / Говнокод #25711

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    void Obmen_RS1(void)
    {
      uint8_t txbuf[7], rxbuf[43], CheckSum;
      //если сформирован запрос на чтение по RS1 - SSPC data
      if (SoftFlag.RS_Flag3.bit.RS1_Read_Req)
      {
        txbuf[0] = 0x7B; //{
        txbuf[1] = SSPC_Addr_RS[RS1_Counter];
        txbuf[2] = 0x00; //d0, b00000000 - команда для формирования и отправки посылки данных от SSPC
        txbuf[3] = 0x00;
        txbuf[4] = 0x00;
        txbuf[5] = txbuf[1];//(txbuf[1] ^ txbuf[2] ^ txbuf[3] ^ txbuf[4]); //xor [1..4]
        txbuf[6] = 0x7D; //}
        HAL_UART_Transmit(&huart1, (uint8_t *)&txbuf, 7, 1);
        //HAL_Delay(1)
        if (HAL_UART_Receive(&huart1, (uint8_t *)&rxbuf, 43, 9) == HAL_OK)
        { //если пришел правильный пакет
          if ((rxbuf[0] == 0x5B) 
           && (rxbuf[40] == SSPC_Addr_RS[RS1_Counter])
           && (rxbuf[42] == 0x5D))
          { //считаем КС
            for (j = 1; j < 41; j++)
              CheckSum ^= rxbuf[j];
            if (CheckSum == rxbuf[41])  //Если КС совпадает
            {
              for (j = 1; j < 41; j++)  //Сохраняем пакет в двумерный буфер
                RS1_Paket[RS1_Counter][j] = rxbuf[j];
            }
            else 
            {
              for (j = 1; j < 41; j++)
                RS1_Paket[RS1_Counter][j] = 0;  //Иначе пишем нули
            }
          }
        }
        RS1_Counter++;
        if (RS1_Counter > 15) 
          RS1_Counter = 0;
        SoftFlag.RS_Flag3.bit.RS1_Read_Req = 0; //сбрасываем флаг запроса чтения данных и ждем следующего по таймеру (100мс)
      }
    }

    Процедура чтения данных от 16 модулей управления нагрузками по RS-485...
    для STM32F4x с использованием калокуба

    Запостил: ykypeHHbIu_nemyx, 10 Июля 2019

    Комментарии (4) RSS

    Добавить комментарий