Не отправляются данные по UART.

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Вова_1988
Родился
Сообщения: 14
Зарегистрирован: Вт мар 15, 2016 10:54:25

Не отправляются данные по UART.

Сообщение Вова_1988 »

Не могу понять разницу.

Вот такая структура работает, если строковые переменные (символьные массивы) четко прописаны в коде.

Код: Выделить всё

  unsigned char COM_send_type[] = "AT+CIPSEND=8";                                  // Команда - отправить тип устройства
  unsigned char DATA_send_type[] = "HARDWARE";                                     // Команда - тип устройства
...

  printf("%s\r\n", COM_send_type);
  delay_ms(100);
  printf("%s\r\n", DATA_send_type);
  delay_ms(500);


А если я формирую массив из приходящих байтов по UART (в прерывании interrupt [USART_RXC] void usart_rx_isr(void)) и пробую потом аналогичным образом их оправить - не работает.

Код: Выделить всё

//=====================
// Получение команды CONNECT
if (data == 'C')
  {
    x = 0;
    memset(com_connect, '', sizeof(com_connect));
    MARKER_first_simbol_connect = 1;
    MARKER_received_OK = 0;
  }
 
if ((MARKER_first_simbol_connect == 1)&&(data != 13)&&(x < 8))
  {
    com_connect[x] = data;
    x++;
  } 

if ((MARKER_first_simbol_connect == 1)&&(data != 13)&&(x >= 8))
  {
    x = 0;
    memset(com_connect, '', sizeof(com_connect));
    MARKER_first_simbol_connect = 0;
  }

if ((MARKER_first_simbol_connect == 1)&&(data == 13)&&(x < 8))
  {
    if (strncmp (com_connect, "CONNECT", 7) == 0)
      {
        MARKER_received_OK = 1;
      }
    else
      {
        MARKER_received_OK = 0; 
      }
       
    x = 0;
    MARKER_first_simbol_connect = 0;
  } 


//=====================
Ответить

Вернуться в «Практика»