Не компилируется после вставки кода из буфера

Тема в разделе "Флудилка", создана пользователем _ViT_, 18 июл 2016.

  1. _ViT_

    _ViT_ Нуб

    Всем доброго дня!
    Имею среду разработки Arduino 1.6.10.
    Копирую исходный код из учебника:

    int val ; int ledpin = 13 ; void setup () { Serial.begin (9600) ; ROBSTORE.RU pinMode (ledpin, OUTPUT) ; } void loop () { val = Serial.read () ; if (val == 'R') { digitalWrite (ledpin, HIGH) ; delay (500); digitalWrite (ledpin, LOW) ; delay (500); Serial.println ("Hello World!") ; } }

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


    ------------------------------------------------------------------------------------------------------------------
    Arduino: 1.6.10 Hourly Build 2016/07/01 03:33 (Windows 7), Плата:"Arduino/Genuino Uno"

    sketch_jul18a:1: error: expected initializer before '?' token

    int val ?

    ^

    C:\Users\ViT\AppData\Local\Temp\arduino_modified_sketch_351708\sketch_jul18a.ino: In function 'void loop()':

    sketch_jul18a:9: error: 'val' was not declared in this scope

    val = Serial.read () ?

    ^

    sketch_jul18a:10: error: expected primary-expression before 'if'

    if (val == 'R') {

    ^

    sketch_jul18a:10: error: expected ':' before 'if'

    sketch_jul18a:10: error: expected primary-expression before 'if'

    sketch_jul18a:10: error: expected ';' before 'if'

    exit status 1
    expected initializer before '?' token

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"
    --------------------------------------------------------------------------------------------------------------------------------
     

    Вложения:

  2. Securbond

    Securbond Гуру

    Может я не прав но как вы запихиваете переменной int строковое значение из UART?
    И что за скрытая, ненавязчивая реклама сайта в скетче ?
     
  3. Securbond

    Securbond Гуру

    Попробуй так.. И в сериал посылай 1.
    Код (C++):

    int val = 0 ;
    int ledpin = 13 ;
    void setup () {
    Serial.begin (9600) ;
    pinMode (ledpin, OUTPUT) ;
    Serial.println ("Start!") ;
    }
    void loop () {
    val = Serial.read () ;
    if (val == 1) {
    digitalWrite (ledpin, HIGH) ;
    delay (500);
    digitalWrite (ledpin, LOW) ;
    val=0;
    delay (500);
    } }
     
     
  4. ZAZ-965

    ZAZ-965 Гуру

    @_ViT_, сайт, откуда вы скопировали код, отдает неправильную кодировку символов (UTF8 вместо ASCII). Вставьте скопированный код в текстовый редактор, например Notepad++, и увидите что символ "точка с запятой" превратится в вопросительный знак (т.е. недопустимый символ для кодовой таблицы ASCII)
     
  5. _ViT_

    _ViT_ Нуб

    Securbond, ваш код так же не компилируется, если его скопировать в среду разработки через буфер обмена, а если напечатать в ручную то все в порядке и с вашим кодом и с моим.

    ZAZ-965, странная ситуация, вставил в Notepad++, вид кода идентичен.
    Далее, печатаю код в ручную в среде разработки (КОМПИЛИРУЕТСЯ УСПЕШНО), копирую в буфер обмена и вставляю во вновь созданную вкладку среды разработки, компиляция завершается неудачей, хотя визуально код в обоих вкладках идентичен.
    Данные операции пробовал на разных операционных системах (3-х компьютерах) Windows 10 Pro, Win 7 Ultimate x32, Win 7 Ultimate x64, результат одинаковый.


    Складывается впечатление что среда разработки не воспринимает адекватно буфер обмена операционной системы.

    Это особенность данной среды разработки?
    или дело в моих кривых руках?)))
    подскажите плз )))
     
  6. ZAZ-965

    ZAZ-965 Гуру

    @_ViT_, в Notepad++ переключите кодировку на ANSI (у меня она наверное по умолчанию)
    Вот этот код при просмотре в Far, точка с запятой закодирована двумя байтами CD BE (кодировка UTF8)
    UTF8.png
    В таблице ACSII код этого символа 3B
    Поменяйте в редакторе Arduino все точки с запятой и код будет успешно скомпилирован
    ACSII.png
    Картинка после замены символа "точка с запятой"
     
  7. Securbond

    Securbond Гуру

    Странное что то у человека с буфером обмена. Уж с амперки коды всегда без проблем в IDE копировались. Без всяких заморочек.
     
  8. ZAZ-965

    ZAZ-965 Гуру

    Редактор Arduino IDE поддерживает отображение UTF8, но AVR-GСС ожидает кодировку ASCII. У Амперки кодировка страницы тоже UTF8 (и это правильно), поэтому неверных символов не видно. Если переключить на Win1251, то получим рис1. На тот же символ ругнулась Arduino рис2
    кодировка.png кодировка_кода.png
    Так что буфер не при чем, что положено то и получено.
    А Амперка - хороший форум и люди здесь добрые :cool:
     
    _ViT_ нравится это.
  9. _ViT_

    _ViT_ Нуб

    ZAZ-965, да вы правы! Дело было только в точке с запятой.
    Огромное спасибо вам за помощь!!!