Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 28 из 28
  1. #21
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Прием в порт по прерыванию

    Я вместо деления значения аналогового сигнала на 4 использую map(val, 0, 1023, 0, 254) и все. Аналогично подготавливаю значения для передачи значений в Ардуину.
    Последний раз редактировалось Mastar; 27.12.2011 в 16:57.
    Мои проекты - Катер для рыбалки

  2. #22
    Продвинутый
    Регистрация
    03.06.2008
    Возраст
    48
    Сообщений
    320
    Вес репутации
    326

    По умолчанию Re: Прием в порт по прерыванию

    А можно ещё и пример, до кучи ? )))

  3. #23
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    59
    Сообщений
    241
    Вес репутации
    213

    По умолчанию Re: Прием в порт по прерыванию

    В передающем пакете все данные подготавливаете в диапазоне 0-254, а первым посылаете дескриптор равный 255.
    В приемном устройстве отсчитываете количество данных + 1, проверяете наличие и соответствие дескриптора, а потом принимаете данные.

    Если не понятно, дайте свой полный пример и я на нем покажу.
    Последний раз редактировалось Mastar; 31.12.2011 в 17:41.
    Мои проекты - Катер для рыбалки

  4. #24
    Продвинутый
    Регистрация
    03.06.2008
    Возраст
    48
    Сообщений
    320
    Вес репутации
    326

    По умолчанию Re: Прием в порт по прерыванию

    Вот код:

    PHP код:
    #include <TVout.h>
    #include <fontALL.h>
    TVout TV;
    byte serialInArray[8]; 
    int watertemp 0
    int turbo 0;
    int volts 0;
    int pboost 0;
    int result 0;
    //byte i = 0;
    void setup() 
     {
      
    TV.begin(PAL,90,40);  // 1 ширина, 2 высота
      
    TV.select_font(font6x8); // 1 ширина, 2 высота
      
    Serial.begin(115200);
     }
     
    void loop()
     {
      if (
    Serial.available() > 7)
        { 
         for (
    byte i=08i++)
           {
            
    serialInArray[i] = Serial.read();    
           }  
        }  
            
    watertemp serialInArray[0]; //senstvaz
            
    turbo serialInArray[1]; //kpa
            
    pboost serialInArray[2]; //pboost
            
    volts serialInArray[3]; //volts
            
    result serialInArray[7];
            
    result = (result << 24) | serialInArray[6]; 
            
    result = (result << 16) | serialInArray[5];  
            
    result = (result << 8) | serialInArray[4]; 
            
    //Serial.flush();
            //serialInArray[i] = 0;
         
    delay(50);
         
      
    TV.clear_screen(); 
      
    TV.set_cursor(0,6);
      
    TV.print("TMP ");
      
    TV.print(watertemp);
      
    TV.set_cursor(40,6);
      
    TV.println(volts);
      
    TV.set_cursor(0,14);
      
    TV.print("TURBO ");
      
    TV.println(turbo);
      
    TV.set_cursor(0,22);
      
    TV.print(freeRam());
     
    // TV.println(pboost);
      
    TV.set_cursor(0,30);
      
    TV.print("RPM ");
      
    TV.println(result); 
         
     } 
    Тут ещё одна непонятная для меня вещь возникла....

    Массив обьявлен как:
    byte serialInArray[8];

    Вот он принимается:
    if (Serial.available() > 7)
    {
    for (byte i=0; i < 8; i++)
    {
    serialInArray[i] = Serial.read();
    }

    Вот в этой строчке - for (byte i=0; i < 8; i++) , должно быть i < 8 или i < 9 ?
    Работает в обоих случаях, а как правильно будет?

    И ВСЕХ С НОВЫМ ГОДОМ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))))))))) ))))))))))))))))))))))))))))
    Последний раз редактировалось mebitek; 01.01.2012 в 00:31.

  5. #25
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,378
    Вес репутации
    10

    По умолчанию Re: Прием в порт по прерыванию

    Вот в этой строчке - for (byte i=0; i < 8; i++) , должно быть i < 8 или i < 9 ?
    Работает в обоих случаях, а как правильно будет?
    должно быть i < 8, потому что массив имеет размерность 8 значений

  6. #26
    Продвинутый
    Регистрация
    03.06.2008
    Возраст
    48
    Сообщений
    320
    Вес репутации
    326

    По умолчанию Re: Прием в порт по прерыванию

    Спасибо Эдуард!

  7. #27
    Продвинутый
    Регистрация
    03.06.2008
    Возраст
    48
    Сообщений
    320
    Вес репутации
    326

    По умолчанию Re: Прием в порт по прерыванию

    Можно перед началом данных посылать дескриптор размером 2 байта например 170, 204 или что то в этом роде
    Эдуард , ты два раздельных байта имел в виду или как массив?
    Щас вот так сделал, но боюсь что это не совсем мне подходит.

    PHP код:
    void loop()
     {
      if (
    Serial.available() > 8)
       {   
        if(
    Serial.read() == 255
        { 
         for (
    byte i=08i++)
           {
            
    serialInArray[i] = Serial.read();    
           }  
        } 
        
       } 
    Если они раздельные, то как должен выглядеть приём, подскажи пожалуйста?

  8. #28
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,378
    Вес репутации
    10

    По умолчанию Re: Прием в порт по прерыванию

    Правильно

Страница 3 из 3 ПерваяПервая 123

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

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

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

Ваши права

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