Показано с 1 по 7 из 7

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Передача данных между Arduino

    Я обычно перед началом пакета отправляю идентификатор из 3-х символов
    Например: "cm="
    Так как пакет может покалечится в силу разных причин и последовательность данных нарушится

    Выглядит примерно вот так:
    Код:
    void loop()    
    {   
     if (UART_ReadByte(inByte)) 
     { 
     if ( packid == 16 ) // контрольная сумма команды cm=
      {  
        packid=0;
        switch (inByte)  // Смотрим какая команда пришла  
        {           
            case 'U': // Серва поднимается  
              if(i > min_pos) myservo1.write(i -= step_servo);    
            break;
            
            case 'J': // Серва опускается  
              if(i < max_pos) myservo1.write(i += step_servo);  
            break;  
              
            case 'K': // Серва поворачивается вправо      
             if(i2 > min_pos) myservo2.write(i2 -= step_servo);  
            break;     
              
            case 'H': // Серва поворачивается влево  
             if(i2 < max_pos) myservo2.write(i2 += step_servo);   
            break;   
             
            case 'C': // Клаксон  
             horn();  
            break;  
            
            case ']': // запрос состояния аналоговых датчиков  
                byte2char(A6_Read,A7_Read);
            break;         
              
            case 'V': // Включить/Выключить фары  
             D9_Low; 
    break;
    } else packet_id(inByte); 
    //**************************************************
    
    void packet_id(uint8_t inbyte)  //проверяем идентификатор пакета "cm="
    {     
        switch (inbyte)  
        {
           case 'c':   
              packid=2;  
            break;
            
           case 'm':   
              packid*=2;  
              //packid=packid<<1;
            break; 
            
           case '=':   
               packid*=4; 
               //packid=packid<<2;
            break;   
            
            default:
               packid=0;  
        }
    } 
    Код взял здесь
    Работает безотказно, проверенно мной
    Последний раз редактировалось Chip; 02.12.2016 в 03:29.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •