Это руководство знакомит вас

Это руководство знакомит вас с концепциями и функциями веб-фреймворка Bottle и охватывает как базовые, так и расширенные темы. Вы можете прочитать его от начала до конца или использовать в качестве справочника позже. Автоматически сгенерированная ссылка на API может быть вам интересна. Он охватывает больше деталей, но объясняет меньше, чем это руководство. Решения для наиболее распространенных вопросов можно найти в нашей коллекции рецептов или на странице часто задаваемых вопросов . Если вам нужна помощь, присоединяйтесь к нашему списку рассылки или посетите наш канал IRC .

Installation

Бутылка не зависит от каких-либо внешних библиотек. Вы можете просто скачать bottle.py в каталог вашего проекта и начать кодирование:

$ wget http://bottlepy.org/bottle.py

Это даст вам последний снимок состояния разработки, включающий все новые функции. Если вы предпочитаете более стабильную среду, вам следует придерживаться стабильных выпусков. Они доступны в PyPI и могут быть установлены через pip (рекомендуется), easy_install или ваш менеджер пакетов:

$ sudo pip install bottle              
$ sudo easy_install bottle             
$ sudo apt-get install python-bottle   

В любом случае вам понадобится Python 2.5 или новее (включая 3.x) для запуска бутылочных приложений. Если у вас нет разрешений на установку пакетов для всей системы или вы просто не хотите этого делать, сначала создайте виртуальную среду :

$ virtualenv develop              
$ source develop/bin/activate     
(develop)$ pip install -U bottle  

Или,если virtualenv не установлен в вашей системе:

$ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
$ python virtualenv.py develop    
$ source develop/bin/activate     
(develop)$ pip install -U bottle  

Быстрый старт:»Hello World»

В этом руководстве предполагается, что у вас уже установлен Bottle или скопирован в каталог вашего проекта. Давайте начнем с очень простого примера «Hello World»:

from bottle import route, run

@route('/hello')
def hello():
    return "Hello World!"

run(host='localhost', port=8080, debug=True)

Это оно. Запустите этот скрипт, посетите http://localhost:8080/hello , и вы увидите «Hello World!» в вашем браузере. Вот как это работает:

route() декоратор связывает кусок кода в URL пути. В этом случае мы связываем путь /hello с функцией hello() . Это называется route (отсюда и название декоратора) и является наиболее важной концепцией этой структуры. Вы можете определить столько маршрутов, сколько хотите. Всякий раз, когда браузер запрашивает URL-адрес, вызывается связанная функция, и возвращаемое значение отправляется обратно в браузер. Это так просто.

run() вызов в последней строке начинает встроенный сервер разработки. Он работает на localhost порте 8080 и обслуживает запросы, пока вы не нажмете Control-c . Вы можете переключить серверную часть позже, но пока сервер разработки — это все, что нам нужно. Он вообще не требует настройки и представляет собой невероятно безболезненный способ запустить ваше приложение для локальных тестов.

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

Конечно,это очень простой пример,но он показывает основную концепцию того,как создаются приложения с помощью Bottle.Продолжайте читать,и вы увидите,что еще возможно.

Приложение по умолчанию

Для простоты в большинстве примеров в этом руководстве для определения маршрутов используется декоратор route() на уровне модуля . Это добавляет маршруты к глобальному «приложению по умолчанию», экземпляру Bottle , который автоматически создается при первом вызове route() . Несколько других декораторов и функций уровня модуля относятся к этому приложению по умолчанию, но если вы предпочитаете более объектно-ориентированный подход и не возражаете против дополнительного ввода, вы можете создать отдельный объект приложения и использовать его вместо глобального:

from bottle import Bottle, run

app = Bottle()

@app.route('/hello')
def hello():
    return "Hello World!"

run(app, host='localhost', port=8080)

Объектно-ориентированный подход более подробно описан в разделе «Приложение по умолчанию» . Просто имейте в виду, что у вас есть выбор.

Request Routing

В прошлой главе мы построили очень простое веб-приложение с единственным маршрутом.Здесь снова представлена часть маршрутизации примера «Hello World»:

@route('/hello')
def hello():
    return "Hello World!"

Декоратор route() связывает путь URL с функцией обратного вызова и добавляет новый маршрут в приложение по умолчанию . Однако приложение с одним маршрутом довольно скучно. Добавим еще:

@route('/')
@route('/hello/<name>')
def greet(name='Stranger'):
    return template('Hello {{name}}, how are you?', name=name)

Этот пример демонстрирует две вещи:Вы можете привязать несколько маршрутов к одному обратному вызову,а также можете добавить подстановочные знаки к URL и получить к ним доступ с помощью аргументов ключевых слов.

Dynamic Routes

Маршруты, содержащие подстановочные знаки, называются dynamic routes (в отличие от static routes ) и соответствуют нескольким URL-адресам одновременно. Простой подстановочный знак состоит из имени, заключенного в угловые скобки (например, <name> ), и принимает один или несколько символов до следующей косой черты ( / ). Например, маршрут /hello/<name> принимает запросы для /hello/alice , а также /hello/bob , но не для /hello , /hello/ или /hello/mr/smith .

Каждый подстановочный знак передает закрытую часть URL в качестве аргумента ключевого слова в обратный вызов запроса.Вы можете использовать их прямо сейчас и с легкостью реализовать RESTful,красивые и осмысленные URL.Вот несколько других примеров вместе с URL,которым они соответствуют:

@route('/wiki/<pagename>')            # matches /wiki/Learning_Python
def show_wiki_page(pagename):
    ...

@route('/<action>/<user>')            # matches /follow/defnull
def user_api(action, user):
    ...

Новинка в версии 0.10.

Фильтры используются для определения более конкретных подстановочных знаков и / или преобразования закрытой части URL-адреса перед его передачей в обратный вызов. Отфильтрованный подстановочный знак объявляется как <name:filter> или <name:filter:config> . Синтаксис для необязательной части конфигурации зависит от используемого фильтра.

Следующие фильтры реализованы по умолчанию и могут быть добавлены еще:

  • : int соответствует только цифрам (со знаком) и преобразует значение в целое число.
  • : float аналогично: int, но для десятичных чисел.
  • : путь соответствует всем символам, включая символ косой черты, не жадным образом и может использоваться для соответствия более чем одному сегменту пути.
  • : re позволяет вам указать пользовательское регулярное выражение в поле конфигурации. Соответствующее значение не изменяется.

Давайте рассмотрим несколько практических примеров:

@route('/object/<id:int>')
def callback(id):
    assert isinstance(id, int)

@route('/show/<name:re:[a-z]+>')
def callback(name):
    assert name.isalpha()

@route('/static/<path:path>')
def callback(path):
    return static_file(path, ...)

Вы также можете добавить свои собственные фильтры. См. Routing для деталей.

Изменено в версии 0.10.

Новый синтаксис правил был введен в Bottle 0.10 для упрощения некоторых распространенных случаев использования, но старый синтаксис все еще работает, и вы можете найти множество примеров кода, по-прежнему использующих его. Различия лучше всего описаны на примере:

Old Syntax New Syntax
:name <name>
:name#regexp# <name:re:regexp>
:#regexp# <:re:regexp>
:## <:re>

Постарайтесь избегать старого синтаксиса в будущих проектах,если это возможно.В настоящее время он не устарел,но в конце концов будет устаревшим.

методы HTTP-запроса

Протокол HTTP определяет несколько методов запроса (иногда называемых «глаголами») для разных задач. GET используется по умолчанию для всех маршрутов без указания другого метода. Эти маршруты будут соответствовать только запросам GET. Для обработки других методов, таких как POST, PUT или DELETE, добавьте аргумент ключевого слова method route() или используйте один из четырех альтернативных декораторов: get() , post() , put() или delete() .

Метод POST обычно используется для отправки HTML-форм.Этот пример показывает,как работать с формами входа с помощью POST:

from bottle import get, post, request 

@get('/login') 
def login():
    return '''
        <form action="/login" method="post">
            Username: <input name="username" type="text" />
            Password: <input name="password" type="password" />
            <input value="Login" type="submit" />
        </form>
    '''

@post('/login') 
def do_login():
    username = request.forms.get('username')
    password = request.forms.get('password')
    if check_login(username, password):
        return "<p>Your login information was correct.</p>"
    else:
        return "<p>Login failed.</p>"

В этом примере URL-адрес /login связан с двумя разными обратными вызовами: один для запросов GET, а другой — для запросов POST. Первый отображает HTML-форму для пользователя. Второй обратный вызов вызывается при отправке формы и проверяет учетные данные для входа, которые пользователь ввел в форму. Использование Request.forms более подробно описано в разделе «Запрос данных» .

Специальные методы:ГОЛОВАЯ и ЛЮБОВАЯ

Метод HEAD используется для запроса ответа,идентичного тому,который соответствует запросу GET,но без тела ответа.Это полезно для получения мета-информации о ресурсе без необходимости загружать весь документ.Bottle обрабатывает такие запросы автоматически,возвращаясь к соответствующему GET-маршруту и отрезая тело запроса,если оно присутствует.Вам не нужно самостоятельно указывать маршруты HEAD.

Кроме того, нестандартный метод ANY работает как запасной вариант с низким приоритетом: маршруты, которые слушают ANY, будут соответствовать запросам независимо от их метода HTTP, но только если не определен другой более конкретный маршрут. Это полезно для прокси-маршрутов, которые перенаправляют запросы в более конкретные подпрограммы.

Подведем итоги:HEAD запросы возвращаются к GET маршрутам,а все запросы возвращаются к ЛЮБЫМ маршрутам,но только если нет подходящего маршрута для исходного метода запроса.Это так просто.


© 2009–2017 Marcel Hellkamp
Licensed under the MIT License.
https://bottlepy.org/docs/0.12/tutorial.html


Bottle

0.12

  • Request Routing

  • SimpleTemplate Engine

  • Routing Static Files

  • Cookies

Управление брендом – это процесс создания, развития и контроля над продвижением бренда. Это руководство знакомит вас с различными категориями брендов, их архитектурой, расширениями и рекламными акциями. Он также представляет капитал бренда, совместный брендинг, эффективность бренда и оценку. Этот учебник научит вас основным терминам брендинга и предоставит идеи о том, как управлять брендом с момента создания до его оценки.

Аудитория

Этот учебник предназначен для всех тех читателей, которые хотели бы понять основы управления брендом. Это будет очень полезно для студентов-менеджеров, которые хотят сделать карьеру в области маркетинга.

Предпосылки

Мы предполагаем, что читатель имеет базовые знания в области бизнес-администрирования и маркетинговых концепций. Креативность, аналитическое мышление, стратегическое мышление и хорошие коммуникативные навыки являются плюсом.

PlatformIO IDE – это интегрированная среда разработки нового поколения для Интернета вещей.

  • Кросс-платформенная система сборки без внешних зависимостей от ПО ОС:

    • 800+ плат
    • Более 35 платформ разработки
    • 20+ платформ
  • Отладка

  • Удаленная разработка

  • Модульное тестирование

  • Интеллектуальное автозавершение кода C/C ++

  • C/C ++ Smart Code Linter для быстрого профессионального развития

  • Менеджер библиотек для сотен популярных библиотек

  • Многопроектный рабочий процесс с несколькими панелями

  • Темы поддерживают темные и светлые цвета

  • Монитор последовательного порта

  • Встроенный терминал с PlatformIO Core (CLI) и инструментом CLI ( pio , platformio)

  • Встроенная домашняя страница PlatformIO.


Visual Studio Code – это легкий, но мощный редактор исходного кода, который работает на вашем рабочем столе и доступен для Windows, macOS и Linux. Он поставляется со встроенной поддержкой JavaScript, TypeScript и Node.js и имеет богатую экосистему расширений для других языков (таких как C ++, C #, Python, PHP, Go) и среды выполнения (например, .NET и Unity)

Содержание

  • Установка
  • Быстрый старт
    • Настройка проекта
  • Панель инструментов PlatformIO
  • PlatformIO Core (CLI)
  • Задачи проекта
    • Обозреватель задач
    • Средство выполнения задач
    • Пользовательский Задачи
  • Многопроектные рабочие области
  • Монитор последовательного порта
  • Отладка
    • Формат переменных
    • Точки наблюдения
  • Установка команд оболочки
  • Поддержка прокси-сервера
  • Привязки клавиш
  • Настройки
    • platformio-ide.activateOnlyOnPlatformIOProject
    • platformio-ide.autoCloseSerialMonitor
    • platformio-ide.autoRebuildAutocompleteIndex
    • платформа formio-ide.buildTask
    • platformio-ide.autoPreloadEnvTasks
    • platformio-ide. customPATH
    • platformio-ide.disableToolbar
    • platformio-ide.forceUploadAndMonitor
    • platformio-ide.reopenSerialMonitorDelay
    • platformio-ide.useBuiltinPython
    • platformio-ide.useBuiltinPIOCore
    • platformio-ide.useDevelopmentPIOCore
    • platformio-ide.disablePIOHomeStartup
    • platformio-ide. pioHomeServerHttpPort
  • Известные проблемы
    • PackageManager не может установить инструмент
  • Журнал изменений

Быстрый старт¶

Это руководство знакомит вас с основами PlatformIO IDE и демонстрирует процесс создания простого примера «Blink». По окончании вы получите общее представление о том, как работать с проектами в среде IDE.

Настройка проекта¶

  1. Нажмите кнопку «Главная страница PlatformIO» на нижней панели инструментов PlatformIO

  1. Нажмите «Новый проект», выберите доску и создайте новый проект PlatformIO.

  1. Откройте файл main.cpp из папки src и замените его содержимое следующим:

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

Приведенный ниже код работает только в паре с платами на базе Arduino. Пожалуйста, следуйте за репозиторием примеров проектов PlatformIO для других предварительно настроенных проектов.

/** * Мигает * * Включает светодиод для одного  второй, * затем отключается на одну секунду, несколько раз.  */# include "Arduino.h"//Установите LED_BUILTIN, если он не определен платформой Arduino//#define LED_BUILTIN 13void setup () {//инициализируем цифровой вывод светодиода как выход.  pinMode (LED_BUILTIN, OUTPUT);} void loop () {//включаем светодиод (HIGH - уровень напряжения) digitalWrite (LED_BUILTIN, HIGH); //ждем второй задержки (1000); //выключаем светодиод, установив напряжение LOW digitalWrite (LED_BUILTIN, LOW); //ждем второй задержки (1000);} 

  1. Создайте свой проект с помощью горячей клавиши ctrl + alt + b (см. все привязки клавиш в разделе «Руководство пользователя» ниже) или с помощью кнопки «Сборка» на панели инструментов PlatformIO


Дополнительно для чтения:

  • Руководства и примеры (пошаговые руководства с отладкой и модульным тестированием)
  • Подробнее о панели инструментов PlatformIO и других командах (Загрузить, Очистить, Монитор последовательного порта) ниже.

Удачного кодирования с PlatformIO!

PlatformIO Панель инструментов¶

Панель инструментов PlatformIO IDE расположена в строке состояния VSCode (левый угол) и содержит кнопки быстрого доступа к популярным командам. Каждая кнопка содержит подсказку (задержка мыши на ней).

  1. Домашняя страница PlatformIO
  2. PlatformIO: Build
  3. PlatformIO: загрузить
  4. PlatformIO: Clean
  5. Serial Port Monitor
  6. PlatformIO Core (CLI)
  7. Переключатель среды проекта (если доступно более одной среды). См. раздел [env] в «platformio.ini» (файл конфигурации проекта).

Ядро PlatformIO (CLI) ¶

Есть два способа получить доступ к ядру PlatformIO (CLI):

  1. «Терминал» значок на панели инструментов PlatformIO.
  2. Левая панель действий> PlatformIO (значок муравья)> Быстрый доступ> Разное> Интерфейс командной строки PlatformIO Core

Задачи проекта¶

Обозреватель задач¶

PlatformIO предоставляет доступ к «Задаче проекта», где вы можете управлять процессом сборки сред, объявленных в «platformio.ini» (файл конфигурации проекта). Обозреватель задач проекта расположен на панели действий VSCode под значком brandedPlatformIO. Вы также можете получить к нему доступ через «Меню VSCode> Открыть представление…> PlatformIO».

Подсказка

Обратите внимание, что вы можете перетаскивать/перемещать « Project Task »в другое представление в VSCode, такое как« Explorer ».

Средство выполнения задач¶

PlatformIO IDE предоставляет встроенные задачи через меню Терминал> Выполнить задачу ... (Сборка, Загрузка, очистка, мониторинг и т. Д.) И пользовательские задачи в среде «platformio.ini» (файл конфигурации проекта) ( [env: ***] ). По умолчанию для презентации используются панели терминала, одна панель предназначена для каждой уникальной задачи.

IDE PlatformIO предоставляет свой собственный инструмент поиска проблем с именем $ platformio . вы можете использовать его позже, если решите изменить параметры базовой задачи.

Вы можете переопределить существующие задачи с помощью собственных параметров представления. Например, давайте настроим средство запуска задач PlatformIO для использования НОВОЙ панели терминала для каждой команды «Сборка»:

  1. Пункт меню Терминал> Выполнить задачу ... открывает список задач VSCodetasks для PlatformIO. В строке PlatformIO: Build нажмите значок шестеренки в дальнем правом углу списка. Это создает или открывает файл .vscode/tasks.json с некоторым кодом шаблона.
  2. Заменить шаблон в tasks.json с этим кодом
 {"version": "2.0. 0 "," tasks ": [{" type ":" PlatformIO "," task ":" Monitor "," problemMatcher ": [" $ platformio "]," presentation ": {" panel ":" new "}}  ]} 

Дополнительные параметры см. в официальной документации VSCode.

Пользовательские задачи¶

Пользовательские задачи могут быть добавлены в файл tasks.json , расположенный в папке .vscode в корень проекта. Пожалуйста, прочтите официальную документацию Задачи в VSCode.

Этот простой пример демонстрирует настраиваемую задачу монитора, которая локально повторяет ввод. Есть много других команд, пожалуйста, прочтите больше о PlatformIO Core (CLI) и его команды (Руководство по CLI).

 {"версия": "2.0.0", "задачи": [{"тип":  «shell», «command»: «platformio», «args»: [«device», «monitor», «--echo»], «problemMatcher»: [«$ platformio»], «label»: «PlatformIO:  Монитор (локальное эхо) "}]} 

Если исполняемый файл platformio не находится в вашей системной среде« PATH » , вы можете указать полный путь к двоичной папке, используя поле options для задачи. Например, если двоичный файл platformio находится в домашней папке «~/.platformio/penv/bin»:

 {"версия": "2.0.0", "задачи": [{"тип": "оболочка", "команда": "платформаио", "аргументы": ["устройство", "монитор", "-  -echo "]," problemMatcher ": [" $ platformio "]," label ":" PlatformIO: Monitor (локальное эхо) "," options ": {" env ": {" PATH ":" $ {env: HOME  }/. platformio/penv/bin "}}}]} 

Многопроектные рабочие области¶

Вы можете работать с несколькими папками проекта в Visual Studio Code с несколькими корневыми рабочими пространствами. Это может быть очень полезно, когда вы работаете над несколькими связанными проектами одновременно. Подробнее читайте в документации. Многокорневые рабочие области.

Serial Port Monitor¶

Вы можете настроить Serial Port Monitor, используя параметры монитора в разделе « platformio.ini »(файл конфигурации проекта):

  • monitor_port
  • monitor_speed
  • monitor_rts
  • monitor_dtr
  • monitor_flags

Пример:

 [  env: esp32dev] платформа = espressif32framework = arduinoboard = esp32dev;  Пользовательский монитор последовательного порта portmonitor_port =/dev/ttyUSB1;  Настраиваемая скорость последовательного монитора (скорость передачи) monitor_speed = 115200 

Отладка¶

Отладка в VSCode работает в сочетании с отладкой. У вас должна быть учетная запись PlatformIO для работы с ней.

VSCode имеет отдельное представление активности под названием «Отладка» (доступ к которому осуществляется значком ошибки на левой панели инструментов). Отладка расширяет его за счет более совершенных инструментов и функций отладки:

  • Обозреватель локальных, глобальных и статических переменных
  • Условные точки останова
  • Выражения и точки наблюдения
  • Общие регистры
  • Периферийные регистры
  • Средство просмотра памяти
  • Дизассемблирование
  • Поддержка многопоточности
  • Горячий перезапуск активного сеанса отладки.

Есть два предварительно настроенных отладки конфигурации:

Отладка PIO:

Конфигурация по умолчанию . PlatformIO запускает задачу Pre-Debug и создает проект, используя конфигурацию отладки. Также он проверяет наличие изменений в проекте.

Отладка PIO (пропустить предварительную отладку):

PlatformIO пропускает этап Pre-Debug и НЕ создает и НЕ проверяет проект на наличие изменений. изменения в исходных файлах проекта, они не будут отражены в сеансах отладки до тех пор, пока вы не переключитесь обратно на конфигурацию «Отладка PIO» или вручную не запустите задачу «Предварительная отладка».

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

Примечание

Обратите внимание, что отладка будет использовать первую объявленную среду сборки в «platformio.ini» (файл конфигурации проекта), если параметр default_envsoption не указан.

Формат переменной¶

В настоящее время VSCode не предоставляет пользовательский интерфейс или API для изменения формата переменной. См. Связанную с ним проблему VSCode №28025.

Временное решение – установить числовую базу по умолчанию, в которой отладчик отображает числовые выходные данные в консоли отладки. (Консоль DebugConsole видна во время активных сеансов отладки). Например, чтобы отобразить переменные в шестнадцатеричном формате, скопируйте приведенный ниже код и вставьте его в «Консоль отладки»:

Возможные значения, перечисленные в десятичном формате: 8, 10, 16.

Контрольные точки¶

Прочтите GDB: Установка точек наблюдения в первую очередь.

В настоящее время VSCode не предоставляет API для изменения формата значений точек наблюдения. Вы можете вручную преобразовывать выражения точки наблюдения, чтобы отображать значение как определенные типы указателей:

  • $ pc , десятичный целочисленный формат по умолчанию
  • * 0x10012000 , адрес, десятичный целочисленный формат по умолчанию
  • (void *) $ pc , регистр $ pc, шестнадцатеричный формат
  • * (void **) 0x10012000 , адрес в шестнадцатеричном формате

Команды установки оболочки¶

Пожалуйста, обратитесь к разделу Команды установки ядра PlatformIO.

Поддержка прокси-сервера¶

Есть два варианта настройки прокси-сервера:

  1. Объявите системные переменные среды HTTP_PROXY и HTTPS_PROXY (например, HTTP_PROXY = http://user: pass @ 10.10.1.10:3128/ и т. Д.)
  2. Откройте настройки VSCode и найдите «Прокси». Установите «Http: Proxy» и отключите «Http: Proxy Strict SSL».

Привязки клавиш¶

  • ctrl + alt + b / cmd-shift-b / ctrl-shift-b Проект сборки
  • cmd-shift-d / ctrl-shift-d Отладка проекта
  • ctrl + alt + u Загрузить прошивку
  • ctrl + alt + s Открыть монитор последовательного порта

Вы можете переопределить существующие привязки клавиш или добавить новые в VSCode. См. Официальную документацию по привязке клавиш для кода Visual Studio.

Settings¶

Как настроить параметры VSCode?

platformio-ide.activateOnlyOnPlatformIOProject

Если true, активировать только расширение platformio ide когда в рабочей области открыт проект на основе PlatformIO (имеющий «platformio.ini» (файл конфигурации проекта)). Значение по умолчанию – false.

platformio-ide.autoCloseSerialMonitor

Если true, автоматически закрывать монитор устройства pio перед загрузкой/тестированием. Значение по умолчанию – true.

platformio-ide.autoRebuildAutocompleteIndex

Если true, автоматически пересобирает индекс проекта C/C ++, когда «platformio.ini» (файл конфигурации проекта) изменены или при установке новых библиотек. Значение по умолчанию – true.

platformio-ide.buildTask

Задача сборки (метка), которая запускается кнопкой «Сборка» на панели инструментов PlatformIO и привязках клавиш. По умолчанию используется PlatformIO: Build .

Вы можете создавать собственные пользовательские задачи и назначать одну из них для platformio-ide.buildTask .

platformio-ide.autoPreloadEnvTasks

Автоматически предварительно загружать ВСЕ задачи среды проекта . Значение по умолчанию – false.

platformio-ide.customPATH

Пользовательский ПУТЬ для команды platformio . Вставьте сюда результат команды echo $ PATH (Unix)/ echo% PATH% (Windows), набрав в системном терминале, если вы предпочитаете использовать настраиваемый версия PlatformIO Core (CLI). Значение по умолчанию – null , что означает, что PlatformIO ищет команду platformio в системном пути.

platformio-ide.disableToolbar

Отключить панель инструментов PlatformIO. Значение по умолчанию – false.

platformio-ide. forceUploadAndMonitor

Если true, команда Загрузить ( platformio-ide.upload ) заменяется на задачу «Загрузить и отслеживать». Значение по умолчанию – false.

platformio-ide.reopenSerialMonitorDelay

Настройте время в миллисекундах перед повторным открытием монитора последовательного порта. Значение по умолчанию – 0 , что означает немедленное повторное открытие.

platformio-ide.useBuiltinPython

Используйте переносимый интерпретатор Python 3, если он доступен. Значение по умолчанию – true.

platformio-ide.useBuiltinPIOCore

Если true, используйте встроенный PlatformIO Core (CLI). Значение по умолчанию – true.

platformio-ide.useDevelopmentPIOCore

Если true, используйте разрабатываемую версию PlatformIO Core (CLI). Значение по умолчанию – false.

platformio-ide.disablePIOHomeStartup

Отключить отображение главного экрана PlatformIO при запуске. Значение по умолчанию – false.

platformio-ide.pioHomeServerHttpPort

Порт HTTP домашнего сервера PlatformIO. Значение по умолчанию 0 автоматически назначает свободный порт в диапазоне [8010..8100]).

Известные проблемы¶

PackageManager не может установить инструмент¶

Это известная ошибка в VSCode Terminalissue # 61.

Временным решением является установка пакетов с помощью системного терминала (не терминала VSCode). Используйте «Решение 3: Запуск из терминала» в FAQ> Диспетчер пакетов> [Ошибка 5] Доступ запрещен. После этого вернитесь к использованию терминал VSCode.

Журнал изменений¶

Посетите страницу выпусков.



Начало работы с VS Code и PlatformIO IDE для ESP32 и ESP8266 (Windows, Mac OS X, Linux Ubuntu)

Узнайте, как программировать платы ESP32 и ESP8266 NodeMCU с помощью VS Code (Microsoft Visual Studio Code) с расширением PlatformIO IDE. Мы расскажем, как установить программное обеспечение в операционных системах Windows, Mac OS X или Ubuntu.

IDE Arduino отлично подходит для небольших приложений. Однако для сложных проектов с более чем 200 строк кода, несколькими файлами и другими расширенными функциями, такими как автоматическое завершение и проверка ошибок, VS Code с расширением PlatformIO IDE является лучшей альтернативой..

В этом руководстве мы рассмотрим следующие темы:

  • Установка VS Code (Visual Studio Code):
    • A) Windows
    • B) Mac OS X
    • C) Linux Ubuntu
  • Установка расширения IDE PlatformIO на VS Code
  • Краткий обзор интерфейса Visual Studio
  • Обзор IDE PlatformIO
  • Загрузка кода с помощью IDE PlatformIO: ESP32 /ESP8266
  • Изменение скорости передачи данных монитора последовательного порта – IDE PlatformIO
  • Установка библиотек в IDE PlatformIO

A) Установка Код VS в Windows (код Visual Studio)

Перейдите на https://code.visualstudio.com/и загрузите стабильную сборку для своей операционной системы (Windows).

Щелкните мастер установки, чтобы начать установку, и выполните все шаги для завершения. установка. Примите соглашение и нажмите кнопку Далее .

Выберите следующие параметры и нажмите Далее .

Нажмите кнопку Установить .

Наконец, нажмите Готово , чтобы завершить установку.

Откройте код VS, и вас встретит вкладка приветствия с выпущенными примечаниями к новейшая версия.

Вот и все. Код Visual Studio был успешно установлен.

Установка Python в Windows

Чтобы программировать платы ESP32 и ESP8266 с помощью PlatformIO IDE, на вашем компьютере должен быть установлен Python 3.5 или выше. Мы используем Python 3.8.5.

Перейдите на python.org/download и загрузите Python 3.8.5 или последнюю версию.

Откройте загруженный файл, чтобы запустите мастер установки Python.

Появится следующее окно.

ВАЖНО: Убедитесь, что вы отметили опцию Добавить Python 3.8 в PATH. Затем вы можете нажать кнопку Установить сейчас .

После успешной установки вы получите следующее сообщение.

Вы можете нажать кнопку Закрыть .

Теперь перейдите в этот раздел, чтобы установить расширение PlatformIO IDE.


B) Установка VS Code в Mac OS X (Visual Studio Code)

Перейдите на https://code.visualstudio.com/и загрузите стабильную сборку для своей операционной системы (Mac OS X).

После загрузки файла приложения Visual Studio Code вам будет предложено следующее сообщение. Нажмите кнопку « Открыть ».

Или откройте папку” Загрузки “и откройте код Visual Studio.

После этого вас встретит вкладка приветствия с выпущенными примечаниями последней версии.

Вот и все. Код Visual Studio был успешно установлен.

Установка Python в Mac OS X

Для программирования плат ESP32 и ESP8266 с PlatformIO IDE на вашем компьютере должен быть установлен Python 3.5 или выше. Мы используем Python 3.8.5.

установить Python. Я буду использовать Homebrew. Если у вас нет команды brew, введите следующую команду:

  $/bin/bash -c "$ (curl  -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Затем запустите команду brew для установки Python 3.X:

  $ brew install python3  

Теперь перейдите в этот раздел, чтобы установить расширение PlatformIO IDE.


C) Установка VS Code в Linux Ubuntu (код Visual Studio)

Перейдите на https://code.visualstudio.com/и загрузите стабильную сборку для своей операционной системы (Linux Ubuntu).

Сохраните установочный файл:

Чтобы установить его, откройте окна терминала, перейдите в папку «Загрузки» и выполните следующую команду для установки VS Код.

  $ cd Downloads ~/Downloads $ sudo apt install ./code_1.49.1-1600299189_amd64.deb

Когда установка завершена, VS Code должен быть доступен в меню ваших приложений.

Откройте VS Code, и вас встретит вкладка приветствия с выпущенными примечаниями последней версии.

Это Это. Код Visual Studio был успешно установлен.

Установка Python в Linux Ubuntu

Чтобы программировать платы ESP32 и ESP8266 с помощью PlatformIO IDE, на вашем компьютере должен быть установлен Python 3.5 или выше. . Мы используем Python 3.8.

Откройте окно терминала и убедитесь, что у вас уже установлен Python 3.

  $ python3 --versionpython 3.8  .2  

Как вы можете см. на предыдущем рисунке, Python 3.8.2 уже установлен.

Если у вас не установлен Python 3.8.X, выполните следующую команду, чтобы установить его:

  $ sudo apt install python3  

Независимо от того, установлен ли у вас Python или нет, вам необходимо выполнить следующую команду для установки утилит Python.

  $ sudo apt install  python3-distutils  

Теперь перейдите в этот раздел, чтобы установить расширение PlatformIO IDE.


Установка расширения PlatformIO IDE на VS Code

Платы ESP32 и ESP8266 можно программировать с помощью VS Code с расширением PlatformIO IDE. Выполните следующие шаги, чтобы установить расширение PlatformIO IDE.

Откройте VS Code:

  1. Щелкните значок Расширения или нажмите Ctrl + Shift + X , чтобы открыть вкладку Расширения .
  2. Найдите « PlatformIO IDE »
  3. Выберите первый вариант.
  4. Наконец, нажмите кнопку Установить (Примечание: установка может занять несколько минут)

После установки убедитесь, что расширение PlatformIO IDE включен, как показано ниже.

После этого Значок PlatformIO должен появиться на t левая боковая панель, а также значок Home , который перенаправляет вас на главную страницу PlatformIO.

Вот и все, расширение IDE PlatformIO было успешно добавлено в VS Code.

Если вы не видите PIO и быстрые инструменты внизу, вам может потребоваться перезапустить код VS, чтобы изменения вступили в силу.

В любом случае мы рекомендуем перезапустить код VS, прежде чем продолжить.

Обзор быстрого интерфейса VS Code

Откройте VS Code. На следующем экране печати показано значение каждого значка на левой боковой панели и его ярлыков:

  • Проводник по файлам
  • Поиск по файлам
  • Управление исходным кодом (с использованием сущности)
  • Запускайте и отлаживайте свой код.
  • Управление расширениями

Кроме того, вы можете нажать Ctrl + Shift + P или перейдите к View > Палитра команд… , чтобы показать все доступные команды. Если вы ищете команду и не знаете, где она находится или ее ярлык, вам просто нужно перейти на палитру команд и найти ее.

Внизу есть значок синяя полоса с командами PlatformIO.

Вот что Значок делает слева направо:

  • Домашняя страница PlatformIO
  • Сборка/компиляция
  • Загрузить
  • Очистить
  • Монитор последовательного порта
  • Новый терминал

Если вы наведете указатель мыши на значки, он покажет, что делает каждый значок.

Кроме того, вы также можете щелкнуть значок PIO, чтобы увидеть все задачи PlatformIO.

Если задачи не отображаются на ваша IDE, когда вы щелкаете значок, вам может потребоваться щелкнуть значок с тремя точками вверху и включить задачи PlatformIO, как показано ниже.

Обзор IDE PlatformIO

Чтобы вы могли получить представление о том, как PlatformIO работает с кодом VS, мы покажем вам, как создать, сохранить и загрузить эскиз «Мигающий светодиод» на вашу плату ESP32 или ESP8266.

Создать новый проект

В VS Code щелкните значок PlartfomIO Home . Нажмите + New Project , чтобы начать новый проект.

Дайте вашему проекту имя (например, Blink_LED ) и выберите доску, которую вы используете. В нашем случае мы используем DOIT ESP32 DEVKIT V1 . Чтобы использовать ядро ​​Arduino, структура должна быть « Arduino ».

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

Местоположение по умолчанию находится в этом пути Документы > PlatformIO > Проекты . Для этого теста вы можете использовать местоположение по умолчанию. Наконец, нажмите «Готово».

Для этого Например, мы будем использовать плату DOIT ESP32 DEVKIT. Если вы используете плату ESP8266 NodeMCU, процесс очень похож, вам просто нужно выбрать плату ESP8266:

Проект Blink_LED должен быть доступен из вкладки Explorer.

VS Code и PlatformIO имеют структуру папок, отличную от стандартного проекта .ino . Если вы нажмете на вкладку Explorer, вы увидите все файлы, созданные в папке вашего проекта. Может показаться, что нужно работать с большим количеством файлов. Но не волнуйтесь, обычно вам просто нужно иметь дело с одним или двумя из этих файлов.

Предупреждение: вы не должны удалять, изменять или переместите папки и файл platformio.ini . В противном случае вы больше не сможете компилировать свой проект с помощью PlatformIO.

файл platformio.ini

platformio.ini – это файл конфигурации PlatformIO для вашего проекта. Он показывает платформу, доску и фреймворк для вашего проекта. Вы также можете добавить другие конфигурации, такие как библиотеки, которые должны быть включены, параметры загрузки, изменение скорости передачи данных Serial Monitor и другие конфигурации.

  • платформа : что соответствует SoC, используемому платой.
  • board : используемая вами плата разработки.
  • framework : программная среда, в которой будет выполняться код проекта.

Для ESP32 и ESP8266, если вы хотите использовать скорость передачи 115200 бод в вашем последовательном мониторе, вам просто нужно добавить следующую строку в вашу платформу .ini файл.

  monitor_speed = 115200  

После этого убедитесь, что вы сохранили изменения, внесенные в файл, нажав Ctrl + S .

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

src folder

Папка src – это ваша рабочая папка. В папке src находится файл main.cpp . Здесь вы пишете свой код. Щелкните этот файл. Структура программы на Arduino должна открываться функциями setup () и loop ().

В PlatformIO все ваши скетчи Arduino должны начинаться с #include .

Код загрузки с использованием PlatformIO IDE: ESP32/ESP8266

Скопируйте следующий код в свой файл main.cpp .

 /********* Руи Сантос Подробные сведения о проекте см. на https://RandomNerdTutorials.com/vs-code-platformio-ide-esp32-esp8266-  arduino/*********/# include  #define LED 2void setup () {//поместите сюда свой установочный код для однократного запуска: Serial.begin (115200);  pinMode (LED, OUTPUT);} void loop () {//поместите сюда ваш основной код для повторного запуска: digitalWrite (LED, HIGH);  Serial.println («светодиод горит»);  задержка (1000);  digitalWrite (светодиод, LOW);  Serial.println («светодиод не горит»);  delay (1000);}  

Просмотреть исходный код

Этот код мигает встроенным светодиодом каждую секунду. Он работает с платами ESP32 и ESP8266 (оба имеют встроенный светодиод, подключенный к GPIO 2).

Мы рекомендуем вам скопировать этот код вручную, чтобы вы увидели автозаполнение и другие интересные функции IDE в действии. Кроме того, если у вас есть синтаксическая ошибка где-то в вашей программе, она подчеркнет ее красным еще до компиляции.

После этого нажмите Ctrl + S или перейдите в Файл > Сохранить , чтобы сохранить файл.

Теперь вы можете нажать на значке Загрузить, чтобы скомпилировать и загрузить код. Кроме того, вы можете перейти в меню задач проекта PIO и выбрать Загрузить .

Если код успешно загружен, вы должны получить следующее сообщение.

После загрузки кода ESP32 или ESP8266 должны мигать своим встроенным светодиодом каждую секунду.

Теперь щелкните значок Serial Monitor, и вы должны увидеть, как он отображает текущее состояние светодиода.

Примечание: если вы не видите окно терминала, перейдите в меню «Терминал»> «Новый терминал».

Определить COM-порт

PlatformIO автоматически определит порт вашей платы. связан с. Чтобы проверить подключенные устройства, перейдите в PIO Home и щелкните значок Устройства .

Устранение неполадок

Если при попытке загрузить код вы получаете следующую ошибку: « F не удалось подключиться к ESP32: Тайм-аут ожидания заголовка пакета »обычно означает, что ваша плата не находится в режиме мигания, когда вы загружаете код.

В этом случае вам нужно нажать кнопку BOOT на плате ESP32, когда вы начнете видеть много точек в окне отладки.

Если вы этого не сделаете. хотите нажимать кнопку BOOT каждый раз при загрузке нового кода, вы можете следовать этому руководству: [решено] Не удалось подключиться к ESP32: время ожидания заголовка пакета истекло.

Изменение последовательного монитора Скорость передачи – PlatformIO IDE

Скорость передачи данных по умолчанию, используемая PlatformIO, равна 9600. Однако можно установить другое значение, как упоминалось ранее. В проводнике в папке проекта откройте файл platformio.ini и добавьте следующую строку:

  monitor_speed = baud_rate  

Например:

  monitor_speed = 115200  

После этого сохраните этот файл.

Установка библиотек ESP32/ESP8266 в PlatformIO IDE

Выполните следующую процедуру, если вам нужно установить библиотеки в IDE PlatformIO.

Щелкните значок Home , чтобы перейти на главную страницу PlatformIO . Щелкните значок Библиотеки на левой боковой панели.

Найдите библиотеку, которую хотите установить. Например, Adafruit_BME280 .

Щелкните по библиотеке, которую вы хотите включить в свой проект. Затем нажмите Добавить в проект .

Выберите проект, в котором вы хотите использовать библиотеку.

Это добавит идентификатор библиотеки с помощью директивы lid_deps в файл platformio.ini . Если вы откроете файл platformio.ini вашего проекта, он должен выглядеть, как показано на следующем изображении.

В качестве альтернативы, в окне библиотеки, если вы выберете вкладку Установка и немного прокрутите, вы см. идентификатор библиотеки. Вы можете выбрать любой из этих идентификаторов в зависимости от того, какие параметры вы хотите использовать. Идентификаторы библиотеки выделены красным.

Затем перейдите в файл platformio.ini вашего проекта и вставьте идентификатор библиотеки в этот файл, например:

  lib_deps = adafruit/ Adafruit BME280 [адрес электронной почты защищен] ^ 2.1. 0  

Если вам нужно несколько библиотек, вы можете разделить их имена запятой или поместить их в разные строки. Например:

  lib_deps = arduino-libraries/Arduino_JSON @ 0.1.0 adafruit/Adafruit BME280 Library @ ^ 2.1.0 adafruit/Adafruit Unified Sensor @ ^ 1.1.4  

PlatformIO имеет встроенный мощный диспетчер библиотек, который позволяет вам указывать пользовательские зависимости для каждого проекта в файле конфигурации проекта platformio.ini с помощью lib_deps. Это укажет PlatformIO на автоматическую загрузку библиотеки и всех ее зависимостей при сохранении файла конфигурации или при компиляции проекта.

Открыть папку проекта

Чтобы открыть существующую папку проекта на PlatformIO, откройте VS Code, перейдите на главную страницу PlatformIO и нажмите Открыть проект . Просмотрите файлы и выберите папку проекта.

PlatformIO откроет все файлы в папке проекта.

Цветовые темы VS Code

VS Code позволяет выбирать между различными цветовыми темами. Перейдите к значку Управление и выберите Цветовая тема . Затем вы можете выбрать одну из нескольких светлых и темных тем.

Список ярлыков

Чтобы увидеть полный список ярлыков VS Code для Windows, Mac OS X или Linux, перейдите по следующей ссылке:

  • Справочник по сочетаниям клавиш в VS Code.

Заключение

В этом руководстве вы узнали, как установить и подготовить код Visual Studio для работы с Платы ESP32 и ESP8266. VS Code с расширением PlatformIO IDE – отличная альтернатива классической Arduino IDE, особенно когда вы работаете над более сложными эскизами для более крупных приложений.

Вот некоторые из преимуществ использования VS Code с PlatformIO IDE поверх Arduino IDE:

  • Он автоматически определяет COM-порт, к которому ваша плата подключена;
  • VS Code IntelliSense: автозаполнение. Автозавершение кода IntelliSense пытается угадать, что вы хотите написать, отображая различные возможности и предоставляя представление о параметрах, которые может ожидать функция;
  • Выделение ошибок: VS Code + PIO подчеркивает ошибки в вашем коде перед компиляция;
  • Несколько открытых вкладок: вы можете открыть несколько вкладок кода одновременно;
  • Вы можете скрыть определенные части кода;
  • Расширенная навигация по коду;
  • И многое другое …

Если вы ищете более продвинутую IDE для написания ваших приложений для ESP32 и Платы ESP8266, VS Code с расширением PlatformIO IDE – отличный вариант.

Мы надеемся, что вы нашли это руководство полезным. Если вам нравятся ESP32 и ESP8266, просмотрите следующие ресурсы:

  • Изучите ESP32 с Arduino IDE (электронная книга + курс)
  • Домашняя автоматизация с использованием ESP8266 ( электронная книга)
  • Другие проекты и учебники ESP32…
  • Другие проекты и учебники ESP8266…

Как насчет asm?

Ответ


Можете ли вы отладить код в Microsoft Visual Studio Code?

Ответить


Помимо ссылки, упомянутой Сарой вот еще несколько ссылок:

Хорошее видео от Андреаса Списа, демонстрирующее аппаратную отладку в platformio:
youtube.com/watch?v=psMqilqlrRQ

Еще одна хорошая ссылка и видео:
hackster.io/brian-lough/use-the-platformio-debugger-on-the-esp32-using-an-esp-prog-f633b6

Большинство руководств показывают только установку Windows. Чтобы интерфейс JTAG работал в Linux, вам необходимо установить 99-platformio-udev.rules, чтобы интерфейс USB распознавал устройство, как описано в:
docs.platformio.org/en/latest/plus/debug -tools/esp-prog.html
Для MacOS вам, очевидно, нужно удалить драйверы FTDI по умолчанию (та же ссылка выше).

Я рекомендую ESP-PROG, созданный Espressif. Помимо обычных китайских поставщиков, его можно приобрести у основных дистрибьюторов в США по цене 12-13 долларов без доставки.

Ответ


Отличное руководство! У вас также есть руководство по использованию esp idf в Platformio?

Ответ


Есть ли какой-нибудь опыт, какова разница в скорости выполнения программы/размере кода VS-кодирования и C закодирован? Можно ли обрабатывать прерывания в VS?

Ответ


довольно сложно настроить microsoft visual studio и platformIO
В чем большое преимущество использования VS Code и PlatformIO IDE поверх Arduino-IDE, что стоило бы хлопот этого процесса настройки?

Ответ


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

Ответ


Стефан:

Мне было интересно, то же самое! В чем преимущество использования VS Code и PlatformIO! Я знаю, что с платформой Arduino время от времени возникает проблема. Я научился с этим справляться. У меня нет ни одного проекта, в котором бы платформа Arduino не работала.

Ответ


Спасибо за рекомендацию. Я хотел бы запустить его немедленно

Ответить


Отличное руководство для начала!

Не могу дождаться книги с несколькими полными проектами, чтобы полностью понять это может быть многоплатформенный и несколько руководств по отладке?

Ответ


Спасибо за отличную запись! Было приятно иметь инструкции для Windows, MacOS и Linux.

Я всегда думал, что редактирование кода и управление VSCode намного лучше, чем Arduino. Я раньше использовал старую (не VSCode) Platformio для ESP и STM, но, как упоминает Стефан, это куча накладных расходов. Как вы упомянули, для более крупных проектов VSCode лучше.

Лучшая причина для использования platformio – получить интерактивную аппаратную отладку внутри VSCode. Это меняет правила игры. Было бы здорово добавить еще один учебник в серию о том, как использовать аппаратную отладку в Windows/Mac/Linux. У меня есть EDP-Prog ( Ответ


Я имею в виду не ESP-Prog

Ответ


Спасибо, что представили здесь этот новый инструмент!
Он показал себя очень полезным, когда я использовал его для создания проекта с использованием ESP32 FreeRTOS (ESP-IDF).
Я уже использовал VS Code, когда изучал FreeRTOS здесь, но без использования ресурсов PlatformIO. Теперь его гораздо лучше использовать!

Ответ


Привет, Сара,
прекрасное руководство до учебника Blink_LED. Все работает нормально, и я очень благодарен вам за терпение и точность.
У меня простой вопрос: могу ли я скопировать все проекты Arduino ESP32, которые теперь работают с компиляцией Arduino в PlatformIO, без каких-либо изменений (я имею в виду инструкции и определение декларации и т. д.) и загрузка его с помощью PLatformIO на плате ESP32? Или это долгий путь преобразования и тестирования?
С уважением и еще раз спасибо.

Ответ


Привет, Сара, мне кажется, что это очень близко к платформе ESPhome, используемой для дома Помощь. Я ошибся? Еще раз спасибо.

Ответ


Привет,

Требуется ли нажимать переключатель загрузки esp32 во время загрузки?

Я спрашиваю, так как я получил:
«*** [upload] Error 1
===================== ====================== [FAILED] Заняло 3,74 секунды ====================== =====================
Терминальный процесс «platformio ‘run’, ‘–target’, ‘upload’» завершается кодом выхода: 1 . ”

Или мне что-то не хватает?

Zvika

Ответ


Я очень ждал этого урока! БЛАГОДАРЯ! надеюсь узнать больше о программировании с помощью VS Code.

Ответить


Я в основном любитель/мастер. Я немного поигрался с VSCode/Platformio вместе с Arduino IDE.

Я считаю, что VSCode/Platformio чрезвычайно удобен для тех, кто пишет сложный код, который включает (например, ) написание новых библиотек вместе с фактическим кодом Arduino или ESP или работа с файлами разных типов рядом друг с другом (как в обзоре статьи). Также полезны инструменты подчеркивания и завершения синтаксической ошибки.

Но я подозреваю, что VSCode/Platformio – это излишек для тех, кто знаком с IDE Arduino, пишет простой код для Arduino или ESP и умеет в основном следуя онлайн-рецептам с использованием предварительно запеченных библиотек.

VSCode/Platformio требует обучения с точки зрения определения того, как организованы папки, где находится ваш код, что делают окна, как правильно обновляйте библиотеки и файлы конфигурации платы и т. д. Любители могут посчитать, что не стоит подниматься по этой кривой обучения.

Вкратце, VSCode/Platformio больше ориентирован на программистов, в то время как Arduino IDE больше ориентирована на любителей.

Я сам переключаюсь между ними – довольно часто переключаюсь обратно на IDE Arduino, когда меня расстраивает основная проблема (часто совместимость с платой), которую я не знаю, как исправить в VSCode/Platformio.

Ответ


Пробовали один из Ваших проектов из книги, заказанной у Вас. Хорошо работает в Windows, но
в Linux у меня проблема, не имеющая прямого отношения к вашему уроку, но с Arduino IDE проблема с последовательным интерфейсом. Я не говорю о подключении платы к USB-порту компьютера, это нормально. Скорее, вызываете ли вы «Serial.print» в коде или нет, при компиляции он дает ошибку: нет модуля с именем «серийный». Я понимаю, что ESP32 нужен python для работы с IDE
(или, я полагаю, поправьте меня, если я ошибаюсь). ESP8266 работает нормально. У меня установлен Python 3, а также установлен pyserial (с pip3 comm.) Но независимо от того, что я пробовал, он снова выдает ошибку.

Ответ


Спасибо за это информативное руководство!
Еще одно ОГРОМНОЕ преимущество использования PIO – это переносимость!
При использовании Arduino IDE копирование проекта на другой компьютер включает добавление новых плат или библиотек с помощью диспетчера плат и библиотек (часто довольно сложно удовлетворить все зависимости) .
Используя оператор lib_deps в платформеio.ini, PIO просто загружает недостающие библиотеки!

Ответ


Привет Сара,

Спасибо для предоставления подробностей и шагов для этого.

Я разработчик ESP8266 и ESP32, и у меня в общей сложности от 2 до 2,5 лет опыта в этой области. До сих пор мы использовали ESP32 IDF за нашим собственным SDK и разработали от 10 до 12 продуктов.

Я просто хочу знать, что VS будет поддерживать ESP32 IDF или только для Arduino?

Ответить


Привет, Сара
Спасибо за этот урок !!
после некоторых ошибок он работает !!

Ответить


Я только начал использовать VS Studio с PlatformIO. Как мне «обновить» внешние библиотеки, указанные в «lib_deps», до последней версии?

В среде Arduino IDE я просто нажимаю «Управление библиотеками», и он обновляет все указанные мной внешние библиотеки.

Ответ


Я уже без проблем следовал примеру в Windiws 10. Только есть вопрос: почему требуется загружать фитон?

REgards

Ответ


Можем ли мы сделать сборку arduino на VScode?

Ответить


«Следуйте следующей процедуре, если вам нужно установить библиотеки в IDE PlatformIO».
Нужно ли это делать, если у вас уже есть много установленных библиотек в среде Arduino IDE ?

Ответить


Хорошо, да. Накопленные мной библиотеки находятся в файловой структуре Arduino, а не в структуре PIO.
Я не думаю, что хочу импортировать многие из моих проектов Arduino в PIO. Преобразование файлов .ino и возврат их библиотек – это небольшая боль. В будущем в новых проектах я начну использовать PIO вместо Arduino IDE, и я попробую. Но пример LED_blink очень помогает, и вы, ребята, упростили реализацию PIO.

Ответ


Запишите меня как преобразователя PlatformIO. Intellisense, переменные и подсказки кода по большей части очень помогают. «Присоединение» доски к проекту (путем вставки двух или трех строк форматированного текста в файл проекта platform.ini) – лучший способ управления доской, равно как и присоединение библиотек, которые могут меняться со временем.

Вы можете импортировать старые наброски в PIO, вам просто нужно внести несколько изменений, например добавить arduino include и изменить файл .ino на .cpp.

Ответить


Я получил эту ошибку после того, как установил библиотеку BME280 в соответствии с руководством, а затем загрузил:
«В файле, включенном из .pio libdeps esp32dev Adafruit BME280 Library Adafruit_BME280.cpp: 31: 0:
.pio libdeps esp32dev Adafruit BME280 Library Adafruit_BME280.h: 27: 17: фатальная ошибка: SPI.h: нет такого файла или каталога »

Что отсутствует?

Ответить


У вас есть #include в самом верху скетча?

Ответ


Да, это первая строка скетча main.cpp.

Ответить


У меня такая же проблема с этой библиотекой.

Ответить


После покупки «бу» ilding Webservers », я установил расширение платформы io в VSCODE, которое я устанавливал некоторое время. Вроде сработало, но у меня не было времени поиграть с этим. Сегодня я открыл vscode, получил и обновил, и домашняя страница PlatformIO не отображается, как и кнопки в строке состояния. Я не могу нажать на «Новый проект», потому что его нет и нет кнопки «Домой» в строке состояния. Я удалил PIO и переустановил, я удалил VScode и переустановил, похоже, ничего не работает. Я бы хотел пройти этот курс, но сейчас я мертв в воде.
Есть предложения ??

Ответ


Привет, Джон, я не знаю ‘ Не знаю точно, что там произошло, но проверяли ли вы, включен ли плагин PlatformIO?

Перейдите в меню Extensions и проверьте, включено ли расширение platformio. Иногда он устанавливается, но отключается.

Что ж, у меня нет более точных подсказок для этого.

Ответ


Есть activateOnlyOnPlatformIOProject параметр, который отключает PlatformIO в проектах, отличных от PlatformIO. Я не знаю, является ли это вашей проблемой, но я использую эту функцию, поэтому все вещи, связанные с платформой, не включаются в мои проекты на Python и т. Д. Он был выключен, когда я установил изначально, но, возможно, значение по умолчанию изменилось.

Вы можете проверить свои настройки (шестеренка в правом нижнем углу), Extensions-> Platformio, чтобы увидеть, установлен ли activateOnlyOnPlatformIOProject. >

https://dokk.org/documentation/platformio/v3.6.1/ide/vscode/#platformio-ide-activateonlyonplatformioproject

Теперь я не помню, как создать новый проект, если пользовательский интерфейс не активирован, но, возможно, ему нужна пустая (или пустая строка) platformio.ini. Если у вас есть platformio.ini в каталоге вашей рабочей области, тогда расширение PIO должно активироваться.

Ответ


Спасибо, да, я проверил все настройки, даже включил это один раз безрезультатно. Но спасибо за ответ.

Ответ


Здравствуйте,

У вас есть какие-либо ключи или предложения, которые помогут импортировать файлы Arduino в Platformio? Я пробовал, но есть некоторые вещи, которые мне не понятны при импорте Platformio?
Спасибо.

DB

Ответ


Здравствуйте, Сара!

Я вручную ввожу сообщение «Создание веб-сервера ESP8266 – код и схема (NodeMCU)» в VS Code и PlatformIO, но у меня проблема.

Я ввожу:

const char * ssid = «XXXXXXXXXXXX»;
const char * password = «HHHHHHHH»;

и в момент сохранения он становится следующим:

const char * ssid = «XXXXXXXXXXXX»;
const char * password = «HHHHHHHHH»;

Есть ли способ решить эту проблему? Если нет, вам придется делать все с помощью Arduino IDE

Спасибо за ваше время,

Карлес

Ответ


В редакторе VSCode есть функция форматирования для переформатирования кода в последовательную нотацию, «красивее», и кажется, что она включена. Google «Как отключить красивее в VSCode». Нажмите на значок шестеренки в нижнем левом углу, и вы получите настройки, а затем найдите prett и format. (ИЛИ просто посмотрите на настройки текстового редактора.) Вы также можете отключить расширение.

Существует настройка форматирования при сохранении, которая, похоже, происходит с вами.

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

Ответ


Привет, Карл,

Я удалил все расширения, кроме C/C ++ и PlatformIO. Продолжайте менять звездочку.

Я использую его в MacOS Mojave 10.14.6, испанская версия. Есть ли у кого-нибудь такая же конфигурация, и это не происходит по-другому?

Спасибо

Ответ


Спасибо за четкое описание.
Я заметил, что многие спрашивают, почему VSCode лучше arduino….
Как старый седобородый я чувствую себя обязанным отметить, что одной из действительно замечательных особенностей VSCode является интеграция с git. Наличие встроенной системы управления версиями – настоящее благословение. осведомленность об управлении исходным кодом и его использование – это одна из вещей, которые отделяют профессиональных разработчиков от программистов-любителей.
Для тех, кто не знаком с git или системой управления версиями, git является основным средством управления исходным кодом по мере его развития; и это может спасти ваш бекон и избавить от страха сломать вашу программу, когда вы хотите поэкспериментировать или просто изучаете новую платформу. Это действительно волшебство. Я призываю всех изучить это, использовать, жить этим. Это сделает вашу жизнь разработки намного проще. Третий значок внизу (ответвление) – это шлюз.
Happy Trails ..

Ответить

Ведение разработки БД. Шаблоны создания/изменения объектов MSSQL

image

При постоянной работе с MSSQL необходимо создавать различные объекты БД: таблицы, представления, триггеры и т.д.

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

Кроме этого, опишу о том, как я веду репозиторий БД в системе контроля версий.

Основные требования реализации SQL скриптов

  1. скрипт должен выполняться многократно не выдавая ошибок
  2. в скрипте должны быть предусмотрены операторы PRINT для удобства отладки
  3. выполнение скриптов должно логироваться в один общий файл
  4. скрипты должны выполняться через командную строку используя стандартный набор утилит (sqlcmd, bcp)
  5. создание и изменение каждого объекта БД хранится отдельным SQL файлом
  6. SQL скрипты (файлы) запускаются BAT файлом при каждом обновлении БД

Далее приводятся примеры SQL файлов и BAT файл для запуска этих SQL запросов.

Шаблоны T-SQL

Ведение репозитория

1) Репозиторий состоит из папок, разделенных по типу объектов (например: Tables, Views, Triggers и т.д.)
2) Каждый объект БД хранится в отдельном SQL файле для удобства просмотра истории изменений в системе контроля версий.
3) Если изменения касаются данных, то такие изменения ведутся в отдельном файле «CommonChanges (version 000).sql», который создается на каждое обновление БД
4) Для автоматизации применения изменений на нескольких серверах запросы выполняются с помощью BAT файла.

Достоинства

1) Удобно отслеживать историю изменения каждого объекта БД
2) Не требуется разрабатывать собственные приложения для выполнения SQL файлов
3) Работает на всех версиях MSSQL и Windows
4) Настройки соединения с БД, имена БД и др. переменные хранятся в одном файле «Settings.bat», которые легко изменить

Недостатки

1) Не предусмотрен общий откат изменений, если какой-то скрипт выполнится с ошибкой
2) Если репозиторий состоит из большого количества объектов БД, то чтобы не передавать заказчику весь репозиторий, нужно копировать файлы (входящие в обновление) в отдельный каталог

Выгрузка структуры БД

В качестве автоматизации выгрузки структуры БД, в формате один объект = один файл, на данный момент использую SSMS, но в скором времени подобный функционал будет в моей программе ImportExportDataSql, которую рекомендую всем разработчикам БД.

Немного о ImportExportDataSql

Приложение ImportExportDataSql бесплатное, без рекламы, оповещает о новых версиях, наличие командной строки и Вы можете скачать его и использовать в своих проектах.

С помощью ImportExportDataSql Вы сможете:

  • быстро загружать CSV файлы большого объема (более 1Гб) в SQL Server
  • загружать Excel файлы и CSV с возможностью настройки полей, а также с ограничением количества обрабатываемых строк (удобно при отладке)
  • выгружать выборочные данные из БД, в SQL формате и затем выполнять этот скрипт на другой БД (т.е. использовать как средство синхронизации данных)
  • копировать джобы с одной машины на другую

Главной особенностью ImportExportDataSql, является то, что можно объединять несколько SELECT запросов, выгружая результат в виде SQL в один файл.

Добавляйтесь в группу VK, пишите свои пожелания, буду рад доработать приложение под Ваши нужды.

Заключение

Рад был поделиться результатом своего опыта. Данный способ ведения репозитория меня вполне устраивает. Надеюсь, эта статья поможет нам навести порядок в базах данных.

Использование шаблонов в SQL Server Management Studio

Это руководство знакомит вас с готовыми шаблонами Transact-SQL (T-SQL), доступными в среде SQL Server Management Studio (SSMS). Вы узнаете, как выполнять следующие задачи:

предварительные требования

Для работы с этим руководством требуется среда SQL Server Management Studio и доступ к SQL Server.

Использование обозревателя шаблонов

В этом разделе вы научитесь находить и использовать обозреватель шаблонов.

Откройте среду SQL Server Management Studio.

В меню Вид выберите пункт Обозреватель шаблонов (CTRL+ALT+T):

Открытие обозревателя шаблонов

В нижней части обозревателя шаблонов находятся недавно использовавшиеся шаблоны.

Разверните интересующий вас узел. Щелкните шаблон правой кнопкой мыши и выберите Открыть:

Открытие шаблона

Вы также можете открыть шаблон, дважды щелкнув его имя.

Откроется новое окно запроса. Скрипт T-SQL будет уже заполнен.

Измените шаблон в соответствии с вашими требованиями и выберите Выполнить, чтобы запустить запрос:

Создание шаблона базы данных

Изменение существующего шаблона

Обозреватель шаблонов также позволяет вам редактировать уже существующие шаблоны.

Для этого перейдите к нужному вам шаблону в обозревателе.

Щелкните шаблон правой кнопкой мыши и выберите Изменить:

Изменение шаблона

В открывшемся окне запроса внесите нужные изменения.

Чтобы сохранить шаблон, выберите Файл > Сохранить (CTRL+S).

Закройте окно запроса.

Повторно откройте шаблон. В нем должны появиться ваши изменения.

Поиск шаблонов на диске

Когда у вас открыт шаблон, вы можете просматривать шаблоны, находящиеся на диске.

В обозревателе шаблонов выберите шаблон и нажмите Изменить.

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

Шаблоны на диске

Создание шаблона

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

Откройте обозреватель шаблонов.

Щелкните правой кнопкой мыши узел Шаблоны SQL Server и выберите пункты Создать > Папка.

Назовите папку Пользовательские шаблоны.

Создание папки для настраиваемых шаблонов

Щелкните правой кнопкой мыши созданную папку «Настраиваемые шаблоны» и выберите пункты Создать > Шаблон. Введите имя шаблона:

Создание настраиваемого шаблона

Щелкните правой кнопкой мыши созданный шаблон и выберите Изменить. Откроется новое окно запроса.

Введите текст T-SQL, который вы хотите сохранить.

В меню Файл выберите пункт Сохранить.

Закройте окно запроса и откройте свой новый настраиваемый шаблон.

Дальнейшие действия

Лучший способ познакомиться с SSMS — это поработать в среде самостоятельно. Эти руководства и статьи помогут вам ознакомиться с различными функциями SSMS. С их помощью вы научитесь работать с компонентами SSMS и легко находить регулярно используемые функции.

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Structured Query Language (SQL) — язык структурированных запросов, с помощью него пишутся специальные запросы (SQL инструкции) к базе данных с целью получения этих данных из базы и для манипулирования этими данными.

С точки зрения реализации язык SQL представляет собой набор операторов, которые делятся на определенные группы и у каждой группы есть свое назначение. В сокращенном виде эти группы называются DDL, DML, DCL и TCL.

DDL – Data Definition Language

Data Definition Language (DDL) – это группа операторов определения данных. Другими словами, с помощью операторов, входящих в эту группы, мы определяем структуру базы данных и работаем с объектами этой базы, т.е. создаем, изменяем и удаляем их.

В эту группу входят следующие операторы:

  • CREATE – используется для создания объектов базы данных;
  • ALTER – используется для изменения объектов базы данных;
  • DROP – используется для удаления объектов базы данных.

DML – Data Manipulation Language

Data Manipulation Language (DML) – это группа операторов для манипуляции данными. С помощью этих операторов мы можем добавлять, изменять, удалять и выгружать данные из базы, т.е. манипулировать ими.

В эту группу входят самые распространённые операторы языка SQL:

  • SELECT – осуществляет выборку данных;
  • INSERT – добавляет новые данные;
  • UPDATE – изменяет существующие данные;
  • DELETE – удаляет данные.

DCL – Data Control Language

Data Control Language (DCL) – группа операторов определения доступа к данным. Иными словами, это операторы для управления разрешениями, с помощью них мы можем разрешать или запрещать выполнение определенных операций над объектами базы данных.

TCL – Transaction Control Language

Transaction Control Language (TCL) – группа операторов для управления транзакциями. Транзакция – это команда или блок команд (инструкций), которые успешно завершаются как единое целое, при этом в базе данных все внесенные изменения фиксируются на постоянной основе или отменяются, т.е. все изменения, внесенные любой командой, входящей в транзакцию, будут отменены.

Базовый синтаксис SQL команды SELECT

Одна из основных функций SQL — получение данных из СУБД. Для построения всевозможных запросов к базе данных используется оператор SELECT. Он позволяет выполнять сложные проверки и обработку данных.

Общая структура запроса

В описанной структуре запроса необязательные параметры указаны в квадратных скобках.

  • DISTINCT используется для исключения повторяющихся строк из результата
  • ALL (по умолчанию) используется для получения всех данных, в том числе и повторений
  • FROM перечисляет используемые в запросе таблицы из базы данных
  • WHERE — это условный оператор, который используется для ограничения строк по какому-либо условию
  • GROUP BY используется для группировки строк
  • HAVING применяется после группировки строк для фильтрации по значениям агрегатных функций
  • ORDER BY используется для сортировки. У него есть два параметра:
  • ASC (по умолчанию) используется для сортировки по возрастанию
  • DESC — по убыванию
  • LIMIT используется для ограничения количества строк для вывода

Псевдонимы используются для представления столбцов или таблиц с именем отличным от оригинального. Это может быть полезно для улучшения читабельности имён и создания более короткого наименования столбца или таблицы.

Например, если в вашей таблице есть столбец good_type_id, вы можете переименовать его просто в id, для того, чтобы сделать его более коротким и удобным в использовании в будущем.

Для создания псевдонимов используется оператор AS:

Вы можете выводить любые строки и числа вместо столбцов:

Для того, чтобы вывести все данные из таблицы Company, вы можете использовать символ «*», который буквально означает «все столбцы»:

Вы можете вывести любой столбец, определённый в таблице, например, town_to из таблицы Trip:

Также вы можете вывести несколько столбцов. Для этого их нужно перечислить через запятую:

Иногда возникают ситуации, в которых нужно получить только уникальные записи. Для этого вы можете использовать DISTINCT. Например, выведем список городов без повторений, в которые летали самолеты:

Эта конструкция используется для формирования словарей, примеры рассмотрим в главе про команду INSERT

Условный оператор WHERE

Ситуация, когда требуется сделать выборку по определенному условию, встречается очень часто. Для этого в операторе SELECT существует параметр WHERE, после которого следует условие для ограничения строк. Если запись удовлетворяет этому условию, то попадает в результат, иначе отбрасывается.

Общая структура запроса с оператором WHERE

В описанной структуре запроса необязательные параметры указаны в квадратных скобках.

В условном операторе применяются операторы сравнения, специальные и логические операторы.

Операторы сравнения служат для сравнения 2 выражений, их результатом может являться ИСТИНА (1), ЛОЖЬ (0) и NULL.

Результат сравнения с NULL является NULL. Исключением является оператор эквивалентности.

Оператор Описание
= Оператор равенство
<=> Оператор эквивалентность
Аналогичный оператору равенства, с одним лишь исключением: в отличие от него, оператор эквивалентности вернет ИСТИНУ при сравнении NULL <=> NULL
<>
или
!=
Оператор неравенство
< Оператор меньше
<= Оператор меньше или равно
> Оператор больше
>= Оператор больше или равно

IS [NOT] NULL — позволяет узнать равно ли проверяемое значение NULL.

Для примера выведем всех членов семьи, у которых статус в семье не равен NULL:

[NOT] BETWEEN min AND max — позволяет узнать расположено ли проверяемое значение столбца в интервале между min и max.

Выведем все данные о покупках с ценой от 100 до 500 рублей из таблицы Payments:

[NOT] IN — позволяет узнать входит ли проверяемое значение столбца в список определённых значений.

Выведем имена членов семьи, чей статус равен «father» или «mother»:

[NOT] LIKE шаблон [ESCAPE символ] — позволяет узнать соответствует ли строка определённому шаблону.

Например, выведем всех людей с фамилией «Quincey»:

В шаблоне разрешается использовать два трафаретных символа:

  • символ подчеркивания (_), который можно применять вместо любого единичного символа в проверяемом значении
  • символ процента (%) заменяет последовательность любых символов (число символов в последовательности может быть от 0 и более) в проверяемом значении.

ESCAPE-символ используется для экранирования трафаретных символов. В случае если вам нужно найти строки, содержащие проценты (а процент — это зарезервированный символ), вы можете использовать ESCAPE-символ.

Например, вы хотите получить идентификаторы задач, прогресс которых равен 3%:

Если бы мы не экранировали трафаретный символ, то в выборку попало бы всё, что начинается на 3.

Логические операторы необходимы для связывания нескольких условий ограничения строк.

  • Оператор NOT — меняет значение специального оператора на противоположный
  • Оператор OR — общее значение выражения истинно, если хотя бы одно из них истинно
  • Оператор AND — общее значение выражения истинно, если они оба истинны
  • Оператор XOR — общее значение выражения истинно, если один и только один аргумент является истинным

Выведем все полёты, которые были совершены на самолёте «Boeing», но, при этом, вылет был не из Лондона:

Выборка сводных данных (из двух и более таблиц)

При формировании сводной выборки данные беруться из нескольких таблиц. В операторе FROM исходные таблицы перечисляются через запятую. Также им могут быть присвоены алиасы. Синтаксис запроса выглядит следующийм образом:

При выборке сводных таблиц нужно учитывать, что исходные таблицы перемножаются. Т.е. если на входе у нас были таблицы:

id Name
1 Иванов
2 Петров
id Name Phone
1 Иванов 322223
2 Петров 111111

То при простом запросе без условий

Получим примерно следующее:

id Name id2 Name2 Phone
1 Иванов 1 Иванов 322223
1 Иванов 2 Петров 111111
2 Петров 1 Иванов 322223
2 Петров 2 Петров 111111

Чтобы выбрать уникальные значения, нам нужно использовать оператор WHERE для связи этих таблиц

id Name Phone
1 Иванов 322223
2 Петров 111111

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

Вложенные SQL запросы

Вложенный запрос — это запрос на выборку, который используется внутри инструкции SELECT, INSERT, UPDATE или DELETE или внутри другого вложенного запроса. Подзапрос может быть использован везде, где разрешены выражения.

Пример структуры вложенного запроса

Здесь, SELECT поля_таблиц FROM список_таблиц WHERE конкретное_поле IN (. ) — внешний запрос, а SELECT поле_таблицы FROM таблица — вложенный (внутренний) запрос.

Каждый вложенный запрос, в свою очередь, может содержать один или несколько вложенных запросов. Количество вложенных запросов в инструкции не ограничено.

Подзапрос может содержать все стандартные инструкции, разрешённые для использования в обычном SQL-запросе: DISTINCT, GROUP BY, LIMIT, ORDER BY, объединения таблиц, запросов и т.д.

Подзапрос может возвращать скаляр (одно значение), одну строку, один столбец или таблицу (одну или несколько строк из одного или нескольких столбцов). Они называются скалярными, столбцовыми, строковыми и табличными подзапросами.

Подзапрос как скалярный операнд

Скалярный подзапрос — запрос, возвращающий единственное скалярное значение (строку, число и т.д.).

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

Таким же образом можно использовать скалярные подзапросы для фильтрации строк с помощью WHERE, используя операторы сравнения.

С помощью данного запроса возможно получить самого младшего члена семьи. Здесь используется подзапрос для получения максимальной даты рождения, которая затем используется для фильтрации строк.

Подзапросы с ANY, IN, ALL

ANY — ключевое слово, которое должно следовать за операцией сравнения (>, <, <>, = и т.д.), возвращающее TRUE, если хотя бы одно из значений столбца подзапроса удовлетворяет обозначенному условию.

ALL — ключевое слово, которое должно следовать за операцией сравнения, возвращающее TRUE, если все значения столбца подзапроса удовлетворяет обозначенному условию.

IN — ключевое слово, являющееся псевдонимом ключевому слову ANY с оператором сравнения = (эквивалентность), либо <> ALL для NOT IN. Например, следующие запросы равнозначны:

Строковый подзапрос — это подзапрос, возвращающий единственную строку с более чем одной колонкой. Например, следующий запрос получает в подзапросе единственную строку, после чего по порядку попарно сравнивает полученные значения со значениями во внешнем запросе.

Данную конструкцию удобно использовать для замены логических операторов. Так, следующие два запроса полностью эквивалентны:

Связанным подзапросом является подзапрос, который содержит ссылку на таблицу, которая была объявлена во внешнем запросе. Здесь вложенный запрос ссылается на внешюю таблицу «таблица_1»:

Подзапросы как производные таблицы

Производная таблица — выражение, которое генерирует временную таблицу в предложении FROM, которая работает так же, как и обычные таблицы, которые вы указываете через запятую. Так выглядит общий синтаксис запроса с использованием производных таблиц:

Обратите внимание на то, что для производной таблицы обязательно должен указываться её псевдоним, для того, чтобы имелась возможность обратиться к ней в других частях запроса.

Обработка вложенных запросов

Вложенные подзапросы обрабатываются «снизу вверх». То есть сначала обрабатывается вложенный запрос самого нижнего уровня. Далее значения, полученные по результату его выполнения, передаются и используются при реализации подзапроса более высокого уровня и т.д.

Добавление данных, оператор INSERT

Для добавления новых записей в таблицу предназначен оператор INSERT.

Общая структура запроса с оператором INSERT

В описанной структуре запроса необязательные параметры указаны в квадратных скобках. Вертикальной чертой обозначен альтернативный синтаксис.

Значения можно вставлять перечислением с помощью слова values, перечислив их в круглых скобках через запятую или c помощью оператора select. Таким образом, добавить новые записей можно следующими способами:

Первичный ключ при добавлении новой записи

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

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

В SQL введен механизм его автоматической генерации. Для этого достаточно снабдить первичный ключ good_id атрибутом AUTO_INCREMENT. Тогда при создании новой записи в качестве значения good_id достаточно передать NULL или 0 — поле автоматически получит значение, равное максимальному значению столбца good_id, плюс единица.

Теперь, зная синткасис команд INSERT и SELECT, можем разобраться как создать из исходного набора данных словари и загрузить данные в БД с учетом внешних ключей

Допустим есть список агентов (данные полученные от заказчика в виде CSV-файла), у которых есть поля название, тип и т.д. (далее по тексту я её называю таблица импорта)

В структуре БД поле «тип агента» создано как внешний ключ на таблицу типов

Для добавления «типов агентов» в таблицу AgentType мы будем использовать альтернативный синтаксис INSERT . SELECT

Пишем инструкцию SELECT, которая выбирает уникальные записи из таблицы импорта:

  1. Ключевое слово DISTINCT относится только к топу полю, перед которым написано. В нашем случае выбирает уникальные названия типов агентов.
  2. Откуда брать поле Image в предметной области не написано и в исходных данных его нет. Но т.к. в целевой таблице это поле не обязательное, то можно его пропустить

Этот запрос можно выполнить отдельно, чтобы проверить что получится

После отладки запроса SELECT перед ним допишем запрос INSERT:

  1. Поле ID можно пропустить, оно автоинкрементное и создастся само (по крайней мере в MsSQL)
  2. Количество вставляемых полей (Title) должно быть равным количеству выбираемых полей (Тип_агента)

Если в таблице есть обязательные поля, а нем неоткуда взять для них данные, то мы можем в SELECT вставить фиксированные значения (в примере пустая строка):

Заполнение основной таблицы

Тоже сначала пишем SELECT запрос, чтобы проверить те ли данные получаются

напоминаю, что порядок и количество выбираемых и вставляемых полей должны быть одинаковыми

в поле AgentTypeID мы должны вставить ID соответсвующей записи из таблицы AgentType, поэтому выборка у нас из двух таблиц и чтобы не писать перед каждым полем полные названия таблиц мы присваиваем им алиасы

Т.е. мы выбираем перечисленные поля из таблицы agents_import и добавляем к ним ID агента у которого совпадает название.

При выборке из нескольких таблиц исходные данные перемножаются. Т.е. если мы не заполним перед этой выборкой словарь, то 100 * 0 = пустая выборка .

Если же мы не укажем условие WHERE, то выберутся, к примеру, 100 * 10 = 1000 записей (каждый агент будет в каждой категории). Поэтому важно, чтобы условие WHERE выбирало уникальные значения.

Естественно, количество внешних ключей в таблице может быть больше одного, в таком случае в секции FROM перечисляем все используемые словари и в секции WHERE перечисляем условия для всех таблиц объединив их логическим выражением AND

где алиасы b, c, d — словарные таблицы, а алиас «а» — таблица импорта

Написав и проверив работу выборки (она должна возвращать чтолько же записей, сколько в таблице импорта) дописываем команду вставки данных:

В каталоге data этого репозитория находится структура БД ( ms.sql ) и файлы для импорта: products_k_import.csv , materials_short_k_import.txt , productmaterial_k_import.xlsx .

Необходимо во-первых, восстановить структуру БД из скрипта, во-вторых, импортировать исходные данные в Excel, в-третьих исправить данные (смотрите на структуру таблиц в БД, где-то надо явно указать тип данных, где-то вырезать лишние данные. ) и в-четвёртых загрузить исправленные данные в БД (сначала просто импорт во временные таблицы, потом разнести SQL-запросами по нужным таблицам)

This guide equips you with a strategy to ease adoption of a new technology within your organization.

Assume that I want to keep this noun (adoption). Is the article «the» missing here? Should it be This guide equips you with a strategy to ease the adoption of a new technology within your organization?

asked Apr 8, 2014 at 22:56

David Oberman's user avatar

3

No, it is not missing. This particular «the» is optional and the sentence could be written as either of these:

This guide equips you with a strategy to ease adoption of a new technology within your organization.

This guide equips you with a strategy to ease the adoption of a new technology within your organization.

Community's user avatar

answered Apr 21, 2014 at 19:55

MrHen's user avatar

MrHenMrHen

35.4k31 gold badges121 silver badges260 bronze badges

This guide equips you with a strategy to ease adoption of a new technology within your organization. Indicates a technology that is not specifically named, nor invented.

This guide equips you with a strategy to ease the adoption of the new technology within your organization. Indicates a known technology.

This guide equips you with a strategy to ease the adoption of a new technology within your organization The guide indicates that it informs on protocol on any existing or future technology implementation.

answered Apr 13, 2014 at 21:34

Third News's user avatar

Third NewsThird News

7,43816 silver badges28 bronze badges

Понравилась статья? Поделить с друзьями:
  • Siemens s7 1200 руководство по программированию
  • Как продать квартиру с чего начать пошаговая инструкция
  • New adblue 8 in 1 инструкция
  • Инструкция по эксплуатации форд эскейп 2017 года
  • Эфирное масло чайного дерева применение инструкция по применению