ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
25 декабря
1032906 Топик полностью
Aleksey_75 (02.09.2020 00:06, просмотров: 680) ответил fk0 на У тебя тупо баг где-то с незакрытием портов. Метод постучаться в каждый -- в целом ок.
)) к примеру в системе 2 порта , т.е обращение к каждому будет каждые 600мс, какой терминал и какой человек прочувствует свободный порт 

for (uint8_t com_cnt = 0; com_cnt < NO_COM; com_cnt++)

{

// в круговую перебираем порты

if (++comport_num >= NO_COM)

{

comport_num = START_COM_NUM;

}

close_comport();

// пробуем открыть порт

comport_sts = OpenComConfig (comport_num, "", CDC_BAUDRATE, 0, 8, 1, 32768, 32768); //921600 1843200

if (comport_sts > ERROR_COMPORT)

{

FlushInQ (comport_num);

FlushOutQ (comport_num);

comport_sts = comport_num;

// Активируем прерывание по получению данных по VCP

InstallComCallback (comport_num, (LWRS_RECEIVE | LWRS_TXEMPTY | LWRS_ERR), 5, 0, com_irq, 0); //

//char text[15] = { 0 };

//Fmt (text, "CONNECT COM %i", (uint8_t)comport_num );

//SetCtrlVal (main_panel, PANEL_CONNECT_MSG, text);

set_device_info_panel(NULL, (char *)&"NO CONNECT");

com_cnt = NO_COM;

}

}


дальше идет запрос "ты кто ?" если ответ получен следующий такой же запрос будет через 2 сек