Не отправляются данные по UART.
Добавлено: Пт мар 18, 2016 06:34:19
Не могу понять разницу.
Вот такая структура работает, если строковые переменные (символьные массивы) четко прописаны в коде.
А если я формирую массив из приходящих байтов по UART (в прерывании interrupt [USART_RXC] void usart_rx_isr(void)) и пробую потом аналогичным образом их оправить - не работает.
Вот такая структура работает, если строковые переменные (символьные массивы) четко прописаны в коде.
Код: Выделить всё
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;
}
//=====================