Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Продвинутый
    Регистрация
    03.06.2008
    Возраст
    49
    Сообщений
    320
    Вес репутации
    332

    По умолчанию Принять массив

    Можно ли функцией Serial.read(); принять массив байт в Ардуину?
    Или как правильно принимать массив?
    И можно ли Serial.read(); принять строковое значение, а не цифровое?

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

    По умолчанию Re: Принять массив

    Можно ли функцией Serial.read(); принять массив байт в Ардуину?
    Принимай по байтно , складывай эти значения в массив
    PHP код:
    char Str[9] = {'c','a''r''d''u''i''n''o''\0'};
    void setup() 
    {
      
    Serial.begin(115200);
    }

    void loop() 
    {
      if (
    Serial.available() > 8
     { 
     for (
    int i=09i++) Str[i] = Serial.read();
     }
      
    Serial.println(Str);
      
    delay(1000);

    Строка это тоже массив , из строки можно также как из массива вытаскивать по одному элементу
    Примеры объявления
    char Str[9] = {'c','a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
    char Str[ ] = "carduino";
    char Str[9] = "carduino";
    Последний раз редактировалось Chip; 17.12.2011 в 15:08.

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

    По умолчанию Re: Принять массив

    Спасибо!

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

    По умолчанию Re: Принять массив

    Вот что у меня получается:



    Зашиваю скетч (на картинке), открываю сериал монитор, он ничего не отображает но ползунок прокрутки движется, то есть приходят пустые символы.
    После того как отправляю в порт девять единиц (111111111 SEND), начинают валиться эти единицы, а в конце какие-то символы.
    Я хотел спросить, что это за символы ?

  5. #5
    Продвинутый
    Регистрация
    15.12.2008
    Возраст
    38
    Сообщений
    229
    Вес репутации
    399

    По умолчанию Re: Принять массив

    приходят пустые символы
    в функции println /r/n идут. следующая строка

    что это за символы ?
    напиши char Str[10];
    должно быть место для окончания строки. тогда не будет лишних символов
    Последний раз редактировалось manu_245; 17.12.2011 в 23:03.

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

    По умолчанию Re: Принять массив

    Спасибо, так лучше!!!!!)))))))))))))

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

    По умолчанию Re: Принять массив

    Скажите пожалуйста, а вот так принимать массив в ардуину, будет правильно?

    PHP код:
     if (Serial.available() > 0//priem ot kompa
       
    {  
        
    inByte Serial.read();
        
    serialInArray[serialCount] = inByte;
        
    serialCount++; 
        if (
    serialCount ==3
         {
            
    watertemp serialInArray[0]; //senstvaz
        //  volts = serialInArray[0]; //volts
            
    turbo serialInArray[1]; //kpa
          
    pboost serialInArray[2]; //pboost
         
          
    serialCount 0;
          
    inByte 0;
         
    Serial.flush();
         }
       
       } 
    Или лучше как-то по другому?

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

    По умолчанию Re: Принять массив

    Я бы указал длину принимаемого массива
    if (Serial.available() > длинна-1)

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

    По умолчанию Re: Принять массив

    Вот так?

    PHP код:
      if (Serial.available() > 7
       {  
        
    inByte Serial.read();
        
    serialInArray[serialCount] = inByte;
        
    serialCount++; 
        if (
    serialCount ==8
    ..............Всё работает!
    Спасибо!!!
    Последний раз редактировалось mebitek; 22.12.2011 в 23:28.

  10. #10
    Новичок
    Регистрация
    07.02.2012
    Возраст
    43
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: Принять массив

    У меня такая же задача.
    Проблема в том, что данные в массив почему-то записываются не побайтно, а посимвольно, что ли.
    Т.е. если отправляю в Serial число 236, прога записывает в три ячейки массива числа 2, 3 и 6.
    Что делаю не так?

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Ваши права

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