Ошибка stray 320 in program

Offline

Зарегистрирован: 12.12.2019

Все перепробовал — не нашел ни где лишний символ:

/*
  Тестировалось на Arduino IDE 1.8.0
  Дата тестирования 26.07.2017г.
*/

#include <ESP8266WiFi.h>                                

const char* ssid = "Название Вашей сети";              
const char* password = "Пароль от Вашей сети";         

#define ONE_WIRE_BUS 2                                 
int tempair = 0;
WiFiServer server(80);                                  

void setup()
{
  Serial.begin(115200);                                

  Serial.println("");                                   
  Serial.print("Connecting to ");                      
  Serial.println(ssid);                                

  WiFi.begin(ssid, password);                          

  while (WiFi.status() != WL_CONNECTED)                
  {
    delay(500);                                         
    Serial.print(".");                                  
  }
  Serial.println("");                            
  Serial.println("WiFi connected");                   
  server.begin();                                     
  Serial.println("Web server running.");              
  delay(10000);                                        
  Serial.println(WiFi.localIP());                      
}

void loop()
{
  WiFiClient client = server.available();               

  if (client) {
    Serial.println("New client");                       
    boolean blank_line = true;                            
    while (client.connected()) {                          
      if (client.available()) {                           
        char c = client.read();                            
        if (c == 'n' && blank_line) {                    
          client.println("HTTP/1.1 200 OK");              
          client.println("Content-Type: text/html");
          client.println("Connection: close");             
          client.println("Refresh: 10");                   
          client.println();
          client.println("<!DOCTYPE html>");
          client.println("<html>");
          client.println("<head>");
          client.println("<meta charset="utf - 8">");
          client.println("<title>Блокировка поля</title>");
          client.println("<script>");
          client.println("function agreeForm(f) {");
          client.println{"if (f.agree.checked){ f.submit.disabled = 1");
          client.println("f.submitone.disabled = 1");
          client.println("f.timemode.disabled = 0");
          client.println("f.datmode.disabled = 0}");
          client.println("else {f.submit.disabled = 0");
          client.println("f.submitone.disabled = 0");
          client.println("f.timemode.disabled = 1");
          client.println("f.datmode.disabled = 1}   }");
          client.println("</script>");
          client.println("</head>");
          client.println("<body>");
          client.println("<form>");
          client.println("<h2>Добро пожаловать хозяин</h2>");
          client.println("<p><textarea cols="50 % " rows="4 % " disabled>Добро пожаловать в систему управления реле по WiFi, как вручную, так и используюя возможность автоматического управления по времени, либо по показаниями датчиков(например: температура и влажность воздуха, датчик света, датчик влажности почвы.Устройство принимает данные от любого датчика, с цифровым выводом Если появились вопросы - звоните 89831555030) ");
          client.println("</textarea></p>");
          client.println("<h3>Temperature = ");
          client.println("*C</h3>");
          client.println("<p><input type="submit" name="submit" value="Включить реле"></p>");
          client.println("<p><input type="submit" name="submitone" value="Вsключить реле"></p>");
          client.println("<p><input type="checkbox" name="agree" onclick="agreeForm(this.form)">");
          client.println("Включить/Выключить автоматику</p>");
          client.println("<p><input type="checkbox" name="timemode" disabled>");
          client.println("Срабатывание по датчику температуры</p>");
          client.println("<p><input type="checkbox" name="datmode" disabled>");
          client.println("Срабатывание по датчику температуры</p>");
          client.println("</form>");
          client.println("</body>");
          client.println("</html>");
          break;                                         
          }
          if (c == 'n') {                                
          blank_line = true;                             
        }
        else if (c != 'r') {                          
          blank_line = false;                          
        }
      }
    }
    client.stop();                                      
      Serial.println("Client disconnected.");             
    }
  }

При попытке подключения .h файла выдает ошибка: stray ‘320’ in program. От чего это может быть? Пробовал скомпилировать без реализации в .сpp файле, по сути подключил .h файл в пустой .cpp файл, но она никуда не исчезла…

Вот так выглядит .h файл, работаю в QtCreator компилятор gcc под unix

#pragma once
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <fcntl.h>
#include <iostream>
#include "string.h"
#include <map>
#include <sys/epoll.h>
#include<vector>
#include "core.h"
#include "httpparser.h"
#include "htttpheader.h"
#include <sys/epoll.h>
class ConeThreadPool{
    public:
         ConeThreadPool(unsigned int numberОfThreads, int maxfd);
         ~ConeThreadPool();
         int getFreeThread(epoll_event events[]);
         void setFd(int thradFD, int fd);
    private:
        int threadManager;
        unsigned int numberОfThreads;
        std::vector<int> threadList;
        int getFD(int socket);
};

введите сюда описание изображения

JK_Action's user avatar

JK_Action

9239 серебряных знаков22 бронзовых знака

задан 25 мар 2020 в 9:35

Denver Toha's user avatar

Denver TohaDenver Toha

2,5201 золотой знак9 серебряных знаков25 бронзовых знаков

2

Видимо копировали код или писали не сами? Перепишите из одного файлика в другой, в смысле перепечатайте, судя по всему попался служебный символ.

ответ дан 25 мар 2020 в 9:52

sticker-named's user avatar

1

Первая прошивка


Итак, разобрались со средой разработки, теперь можно загрузить прошивку. Рекомендую загрузить пустую прошивку, чтобы убедиться, что все драйвера установились и плата вообще прошивается. Также лучше делать это с новой или заведомо рабочей платой.

1. Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:

  • Неисправен USB кабель.
  • Неисправен USB порт компьютера.
  • Неисправен USB порт Arduino.
  • Попробуйте другой компьютер, чтобы исключить часть проблем из списка.
  • Попробуйте другую плату, чтобы исключить часть проблем из списка.
  • На плате Arduino сгорел диод по питанию USB.
  • Плата Arduino сгорела полностью из-за неправильного подключения питания или короткого замыкания

2. Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Кабель должен быть data-кабелем, а не “зарядным”.
  • Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб.
  • Не установлены драйверы для Arduino.

3. В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, отличный от COM1. Если этого не произошло:

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер CH341.
  • Если список портов вообще неактивен – драйвер Arduino установлен некорректно, вернитесь к установке
  • Возникла системная ошибка, обратитесь к знакомому компьютерщику

4. Выбираем свою плату. Если это Arduino Nano, выбираем в ИнструментыПлатаArduino Nano. Если другая – выбираем другую. Нажимаем стрелочку в левом верхнем углу (загрузить прошивку). Да, загружаем пустую прошивку.

  • [Для Arduino Nano] В микроконтроллер китайских нанок зашит “старый” загрузчик, поэтому выбираем ИнструментыПроцессорATmega328p (Old Bootloader). Некоторые китайцы зашивают в свои платы новый загрузчик, поэтому если прошивка не загрузилась (загрузка идёт минуту и вылетает ошибка avrdude: stk500_getsync()) – попробуйте сменить пункт Процессор на ATmega328p.

Если появилась надпись “Загрузка завершена” – значит всё в порядке и можно прошивать другие скетчи. В любом случае на вашем пути встретятся другие два варианта событий, происходящих после нажатия на кнопку “Загрузка” – это ошибка компиляции и ошибка загрузки. Вот их давайте рассмотрим более подробно.

Ошибки компиляции


Возникает на этапе компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст ошибки и понять, куда копать.
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием название_файла.h no such file or directory. Это означает, что в скетче используется библиотека <название файла>, и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по название файла.
  • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
  • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.

Частые ошибки в коде, приводящие к ошибке компиляции


  • expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
  • stray ‘320’ in program – русские символы в коде
  • expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
  • … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
  • redefinition of … – повторное объявление функции или переменной
  • storage size of … isn’t known – массив задан без указания размера

Ошибки загрузки


Возникают на этапе, когда программа успешно скомпилирована и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за настроек программы и драйверов.

  • USB кабель, которым подключается Arduino, должен быть Data-кабелем, а не кабелем только для зарядки. Нужным нам кабелем подключаются к компьютеру плееры и смартфоны.
  • Причиной ошибки загрузки являются не установленные/криво установленные драйвера CH340, если у вас китайская NANO.
  • Также будет ошибка avrdude: ser_open(): can’t open device, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта выше, либо попробуй другой USB порт, или вообще другой компьютер.
  • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляем USB и по новой прошиваем.
  • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”. Также в свежих версиях IDE нужно выбирать ATmega328P (Old Bootloader) для китайских плат NANO.
  • Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
  • Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
  • Если в описании ошибки встречается bootloader is not responding и not in sync, а все предыдущие пункты этого списка проверены – с вероятностью 95% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.

Предупреждения


Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет критических ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

  • # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
  • Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.

FAQ


Завершая раздел Введение в Arduino поговорим о вопросах, которые очень часто возникают у новичков:

  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс Flash памяти. А он довольно большой.
  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов. Подробнее в этом уроке.
  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию. Подробнее в этом уроке.
    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу.
    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь.
    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

Видео


Полезные страницы


  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
  1. Здравствуйте! Что сделал не так? Помогите
    Эксперимент 2. Маячок с нарастающей яркостью
    exit status 1
    stray ‘320’ in program

  2. Код и схему в студию.
    Или вы хотите что-бы Вам написали, что не так в проекте Амперки.
    Видимо на строку ругается!

  3. // даём разумное имя для пина №9 со светодиодом
    // (англ. Light Emitting Diode или просто «LED»)
    // Так нам не нужно постоянно вспоминать куда он подключён
    #define LED_PIN 9

    void setup()
    {
    // настраиваем пин со светодиодом в режим выхода,
    // как и раньше
    pinMode(LED_PIN, OUTPUT);
    }

    void loop()
    {
    // выдаём неполное напряжение на светодиод
    // (он же ШИМ-сигнал, он же PWM-сигнал).
    // Микроконтроллер переводит число от 0 до 255 к напряжению
    // от 0 до 5 В. Например, 85 — это 1/3 от 255,
    // т.е. 1/3 от 5 В, т.е. 1,66 В.
    analogWrite(LED_PIN, 85);
    // держим такую яркость 250 миллисекунд
    delay(250);

    // выдаём 170, т.е. 2/3 от 255, или иными словами — 3,33 В.
    // Больше напряжение — выше яркость!
    analogWrite(LED_PIN, 170);
    delay(250);

    // все 5 В — полный накал!
    analogWrite(LED_PIN, 255);
    // ждём ещё немного перед тем, как начать всё заново
    delay(250);
    }

    а схема та которая у них на картинке ,да и скетч с сайта

    Последнее редактирование: 16 дек 2015

  4. Copy/Paste?
    Если, да, то похоже проблема с кодировкой.
    Попробуйте убрать все комментарии:

    #define LED_PIN 9

    void setup()
    {
    pinMode(LED_PIN, OUTPUT);
    }

    void loop()
    {
    analogWrite(LED_PIN, 85);
    delay(250);
    analogWrite(LED_PIN, 170);
    delay(250);
    analogWrite(LED_PIN, 255);
    delay(250);
    }

  5. Похоже, что где-то не на месте стоит русская буква «п».

  6. #define LED_PIN 9

    void setup()
    {
    pinMode(LED_PIN, OUTPUT);
    }

    void loop()
    {
    analogWrite(LED_PIN, 25);
    delay(250);
    analogWrite(LED_PIN, 170);
    delay(250);
    analogWrite(LED_PIN, 255);
    delay(250);
    }
    Загрузил,работает .
    Всем спасибо!!!

0 / 0 / 0

Регистрация: 16.10.2015

Сообщений: 13

1

Ошибки при компиляции

09.02.2017, 22:00. Показов 6957. Ответов 2


Студворк — интернет-сервис помощи студентам

Вот такие ошибки у меня выдает при компиляции:
error: stray ‘320’ in program

error: stray ‘260’ in program
Что это может быть?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.02.2017, 22:00

Ответы с готовыми решениями:

с2079 и с2228 ошибки при компиляции ниже участок кода, с которым праблема и скрины ошибки
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
bool game = true;

// КЛАССЫ
class Me;

class mob
{
public:
void…

Ошибка памяти при выполнении, при компиляции не выводит ошибки
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой…

Ошибки при компиляции
Создаю .cpp файл, программа компилируется, но стоит в новом .cpp файле банально подключить…

Ошибки при компиляции
Ошибки: строки 25, 25, 27, 32.

Условие задачи: Дан текст, состоящий из предложений, разделяемых…

2

Диссидент

Эксперт C

27513 / 17201 / 3786

Регистрация: 24.12.2010

Сообщений: 38,742

09.02.2017, 22:04

2

Лучший ответ Сообщение было отмечено Anton9volley как решение

Решение

Цитата
Сообщение от Anton9volley
Посмотреть сообщение

Что это может быть?

Все, что угодно.
Однако, вангую. Кириллические символы там, где их быть не должно.



1



3174 / 1933 / 312

Регистрация: 27.08.2010

Сообщений: 5,131

Записей в блоге: 1

09.02.2017, 23:20

3

Именно. Причем, в кириллической раскладке ‘320’ — это Р, а ‘260’ — символ градуса. Сдается, что там в UTF-8 :-)



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

09.02.2017, 23:20

Помогаю со студенческими работами здесь

Ошибки при компиляции
Добрый день, задача : Занести в массив значения функции
f (x, y) = x − y , 0 ≤ x…

Ошибки при компиляции
Помогите пожалуйста, исправьте код, не пойму почему ругается на глобальные объекты…
#include…

Ошибки при компиляции
Функция принимает текстовую функцию и значение переменной и решает ее.
long double func(string…

Ошибки при компиляции
Привет. Помогите с ошибками разобратся:
#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;
#include…

Ошибки при компиляции
Есть программа:
#include &lt;stdio.h&gt;
#include &lt;io.h&gt;
#include &lt;iostream.h&gt;

#define MEN 2…

Ошибки при компиляции
весь текст программы, и его компилятор перестал выполнять
#include &lt;iostream.h&gt;
int main ()
{…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

3

Понравилась статья? Поделить с друзьями:
  • Ошибка stray 253 in program
  • Ошибка stop 0x000000d1 что это
  • Ошибка strawberrybeard sea of thieves
  • Ошибка stop 0x000000d1 windows 7 как исправить
  • Ошибка str object does not support item assignment