ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1471538
IBAH (22.10.2024 18:42, просмотров: 2015)
У меня глюки, рятуйте граждане! Вот такой код. 

Когда ставлю ServerTCPSoket !=1 все работает так как надо, буфера-таймеры проверяются, выходим из цикла со значениями от 0 до (ServerTCPSoket-1)

Если ставлю 1, выходит из цикла, иногда, с значением SoketTx =1. Как???!!!

//
#define ServerTCPSoket              (1) //Количество сокетов 

void funk(void)
  {
  while(!0)
      {//проверяем буфера
      static unsigned char UkSoket;
      if(TxHead[UkSoket]==TxTail[UkSoket])
        {//Нет данных для передачи
        if(TxLink[UkSoket]!=0)
          {//передача была включена
          StartTimer(&tTx,TimoutTx);//таймаут повторной передачи пакета
          TxLink[UkSoket]=0;//передача закончена
          }
        }
      else
        {//Есть данные для передачи 
        if(Timer(&tTx)==0)
          {//Если не истек таймаут передачи
          return;
          }
        if(ConnectTCP[UkSoket]!=0)
          {//текущее подключение существует
          SoketTx=UkSoket;//текущее подключение
          UkSoket++; //Инкремент указателя сокета
          if(UkSoket >= ServerTCPSoket){UkSoket=0;}
          break;
          }
        }
      UkSoket++; //Инкремент указателя сокета
      if(UkSoket >= ServerTCPSoket) 
        {//все сокеты просмотрены
        UkSoket=0;
        return;
        }
      }
  
 // и работаем с переменной SoketTx
  }//