background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Программирование МК STM32. Урок 85. LAN. ENC28J60. TCP Server. Передача данных"

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Оглавление
|

Оглавление

0:00
Введение
1:19
Запустим проект в Cube MX, сгенерируем, откроем и настроим проект в Keil
2:18
Запустим клиент Putty и изучим в анализаторе трафика пакет с отправленной строкой
6:06
Измерим длину данных и выведем информацию о полученном пакете вместе с размером данных
9:04
Создадим код условия, определяющего наличие данных в принимаемом пакете и отобразим их в терминальной программе
12:04
Если есть данные, то вызовем функцию передачи для отправки подтверждения на данный пакет и уже в вызванной функции, добавив необходимое условие, отправим пакет с подтверждением
17:44
При наличии определённой строки данных пошлём серверу также пакет с данными
20:31
Проведём определённую борьбу с подвисанием программы в момент разъединения
22:29
Обработаем приём пакета с теми же флагами, но без данных
Теги видео
|

Теги видео

LAN
ENC28J60
Сетевой модуль
TCP
Передача данных TCP
TCP Data
HAL
HAL stm32
Keil
stm32f103rct6
Keil stm32
Микроконтроллеры STM32
CUBE MX
STM32F1
МК STM32
Hardware abstraction layer
Программирование
Программирование МК
Программирование STM32
STM32 Cube MX
Программирование СИ
Программирование микроконтроллеров
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:01
[музыка]
00:00:03
всем привет дорогие друзья сегодня мы с
00:00:05
вами продолжаем заниматься
00:00:06
программированием микроконтроллеров
00:00:08
stm32
00:00:09
у нас урок 85 и подключаемые к
00:00:11
контроллеру f100 третьему находящимся на
00:00:14
ней драгу одноименной плате
00:00:16
лан model and 28 джей 60 и занимаемся мы
00:00:20
сетью нам удалось на прошлом занятии с
00:00:23
вами установить соединение по протоколу
00:00:26
tcp и также его в корректно
00:00:29
разорвать установили мы соединение
00:00:32
использования метод трехкратного
00:00:34
рукопожатия и также мы его
00:00:37
разорвали данное соединение используя
00:00:40
также в метод того что разрывать
00:00:43
соединение должен каждый из участников в
00:00:46
данном соединении то есть изъявлять
00:00:48
желание такая передавать определенной
00:00:51
флаги но вообще протокол нам тисе пи
00:00:53
нужен не для того чтобы постоянно
00:00:56
создавать соединение и затем его
00:00:59
закрывать он нам нужен для того чтобы
00:01:02
нам как-то передавать что-то через него
00:01:04
какие-то данные и сегодня мы попробуем
00:01:07
данную тему немножко рассмотреть хотя бы
00:01:10
короткий один пакет данных мы сегодня
00:01:12
передадим и в ту и
00:01:15
иную сторону если все нормально пойдет
00:01:18
проект мы назовем с вами инк 28 660 ti
00:01:23
si ps дата так как у нас сервер и мы
00:01:26
передаем данные
00:01:27
проект был полностью выполнен из проект
00:01:30
предыдущем занятии connect запускаем наш
00:01:34
проект проект и генераторе так как
00:01:37
версия киу понравилось то делаем
00:01:39
миграции ничего мы здесь не трогаем всё
00:01:42
оставляем так же генерируем код и
00:01:47
открываем данный проект добавляем наши
00:01:51
файлы
00:01:53
сегодня мы больше не будем никаких
00:01:55
файлов создавать так как мы продолжаем
00:01:58
с протоколом tcp у нас уже есть
00:02:01
соответствующий с вами модуль вот он мы
00:02:04
лишь добавим файл и и настроим наш
00:02:08
программатор на авто
00:02:09
перезагрузку для нашего удобства по
00:02:12
традиции соберём проект выпускаем тут
00:02:16
собирается себе сегодня мы с вами
00:02:19
попробуем другую
00:02:20
терминальную программу в смысле не
00:02:22
терминальная для передачи данных по сети
00:02:26
это будет у нас сегодня пути существует
00:02:30
такая программка она поддерживает
00:02:33
массового различных протоколов то есть
00:02:36
массовым настроек но мы ничего здесь с
00:02:38
вами не настраиваем я вот сейчас уже
00:02:41
добавил все сюда давайте
00:02:43
удалю и покажу вам как все это делать в
00:02:46
общем если у вас уже суда строка
00:02:48
добавлен сохраненной там и и загружаем с
00:02:51
помощью лодок
00:02:52
то есть я загрузил настройки для 193
00:02:56
айпи у нас 197
00:02:58
и давайте так и назовем нашу сессию и
00:03:01
сохраним ее у нас появилась новая строка
00:03:04
мы можем нажать либо окон либо двойным
00:03:08
щелчком по ней кликнуть по данной строке
00:03:11
но мы пока этого делать не будем
00:03:13
запустим анализатор трафика сетевого
00:03:19
подключились к нашему модулю
00:03:21
отфильтровав соответствующим образом
00:03:23
пакеты кажется такой ну чтоб проверить
00:03:28
что-то очень такой давайте попробуем вот
00:03:30
я делаю двойной щелчок и у нас произошло
00:03:33
трехкратной рукопожатие затем я пытаюсь
00:03:37
закрыть и у нас происходит разъединение
00:03:40
то есть не нужно какие-то команды давать
00:03:42
в пути для соединения разъединения все
00:03:45
происходит полностью у нас автоматически
00:03:47
давайте еще раз запустим вот-вот порт 80
00:03:56
здесь айпи адрес того кому будем
00:04:00
обращаться с кем создавать соединения
00:04:02
того узла connection type raw и вот
00:04:07
здесь never чтобы не закрывал наш turned
00:04:11
или пути окно после разъединения давайте
00:04:15
теперь нажмем у нас опять произошел с
00:04:19
вами
00:04:20
метод трехкратного рука поддержки ну
00:04:23
вернее этим методом произошло соединение
00:04:26
с помощью данного метода
00:04:28
теперь давайте какой нибудь строку
00:04:30
попытаюсь передать пусть у нас с вами
00:04:33
еще для этого нет никакого вообще клода
00:04:36
но тем не менее клиент вот этот вот пути
00:04:39
будет пытаться передавать правда он
00:04:41
будет пытаться передавать несколько раз
00:04:44
да у меня все соединяется и все
00:04:47
передается так как я пробовал проект
00:04:49
давайте мы все таки прошьём такой проект
00:04:52
какой есть у нас он у нас собрался без
00:04:54
ошибок сейчас мы его прошьём за одно мы
00:04:57
еще с вами не запустили терминальная
00:05:01
программа для того чтобы отслеживать что
00:05:03
у нас вообще там происходит коннект
00:05:07
пробуем передать еще раз село
00:05:10
у меня уже ответ там готов так что вы
00:05:12
уже заранее знаете что у нас будет вот
00:05:16
теперь ответа никакого нет мы видим что
00:05:19
что-то у нас тут передается также мы
00:05:22
здесь вот видим что клиент постоянно
00:05:25
пытается что-то передать разной длины
00:05:27
двух двоечка десяточка но пока не знаем
00:05:31
что такое в принципе можно узнать вот
00:05:34
хило и в конце возврат строке перевод carried
00:05:37
сначала он вообще то делает не так
00:05:39
сначала он посылает просто стройку без
00:05:42
перевода строки а затем отдельно перевод
00:05:45
строки возврат кары каретки с этим год
00:05:48
сегодня кстати связанные небольшие
00:05:50
трудности
00:05:51
вот и в конце концов клиенту надоедает к
00:05:54
нам стучаться и у живет с нами
00:05:56
соединение наша задача чтобы он нам так
00:05:59
не отвечал чтобы он вел себя дружелюбно
00:06:01
поэтому давайте пока что нибудь хоть
00:06:03
напишем
00:06:05
он зайдем в наш любимый конечно tcp syn
00:06:08
она еще мы должны вот здесь увидеть что
00:06:11
нас не нормально разъединилось
00:06:15
соединение наши все мы добавим сейчас
00:06:18
парочку переменных еще то есть мы должны
00:06:21
отследить во первых есть ли данный у нас
00:06:24
вообще в пакете с вами это не та функция
00:06:27
вам нужно вот это висит и горит который
00:06:32
приходят наши пакеты все отфильтрованные
00:06:35
по 17 тип протокола по тисе пи
00:06:38
вот это вот всё мы поднимаем наверх и
00:06:41
пора бы взять за привычку сразу наверху
00:06:44
подсоединяться к всем во всем данным ко
00:06:47
всем потоком чтобы потом постоянно все
00:06:50
наверх не таскать и измеряем здесь вот 2
00:06:53
но как мы это с вами сделаем я сейчас
00:06:56
сайта скопирую и вставлю строчку с кодом
00:07:00
и вам расскажу в общем мы берем длина
00:07:03
пакета айпи так известная в длину пакета
00:07:06
в поле с длиной пакета входят не только
00:07:08
заголовок айпи но и все данные в нем
00:07:11
находящиеся то есть здесь и заголовок
00:07:13
тисе пи находится если еще что то там
00:07:16
buried и + set данной это у нас будет
00:07:19
так сказать вычитаем и и теперь что мы
00:07:23
вычтем из этого читаемым нет уменьшаемый
00:07:27
забыл термины в школе учился очень давно
00:07:30
это будет уменьшаемой вычитаем их у нас
00:07:33
два мы вычитаем из нашего уменьшаемого
00:07:36
20 то есть это сама
00:07:38
длина протокола айпи длина заголовка и
00:07:42
также мы длину заголовка теперь вычитаем
00:07:45
то есть здесь в этой длине находится
00:07:48
также еще и опции
00:07:49
мы то знаем что если опции нет то там
00:07:52
тоже 20 вдруг есть опции то лучше взять
00:07:54
все таки из поля мы обратно на 2
00:07:56
сдвигаемся в принципе я узнал почему на
00:07:58
2 они поднести или потому что там в
00:08:01
четырех байтов словах все это дело
00:08:04
измеряется по этому еще на 2
00:08:06
нужно вернее нужно будет не до сдвигать
00:08:10
на 2 в лего
00:08:11
когда мы с вами сдвигаем длину если мы
00:08:15
сдвинем как положено на 4 то мы попадем
00:08:18
в поле но нам же нужно в словах поэтому
00:08:21
нам назад нужно будет вернуться на 2
00:08:23
поэтому такой получаешь что мы на 2
00:08:25
туда-сюда сдвигаем тут то есть ступает
00:08:28
вот такое правильно теперь вот здесь вот
00:08:30
давайте заодно сразу пока мы тут
00:08:32
ковыряем с вами все-таки не в mac
00:08:34
адресах смотрите наши пакеты какие
00:08:38
пришли а все таки в айпи адрес ах это
00:08:40
будет гораздо удобнее все-таки
00:08:42
mac-адреса их тяжело запомнить api легче
00:08:45
запоминается эти вот этот код возьмем
00:08:54
отлично
00:08:56
цепи здесь вот у нас api адрес источника
00:08:59
ле пен адресов приемника все здесь пока
00:09:03
все из давайте создадим теперь условия
00:09:07
вот здесь вот после того как мы
00:09:09
отобразим что пришел пакет мы добавим
00:09:12
условие что если у нас данные если есть
00:09:16
данные там и в тело дано условия с вами
00:09:19
зайдем то есть если у нас вот это вот
00:09:21
этот результат который присвоится вот в
00:09:25
эту переменную он будет не 0 то есть ну
00:09:29
так сказать и не отрицательное конечно
00:09:32
но это и обозначается вот так то есть
00:09:35
это или единичка или двойка или что-то
00:09:38
там такое то есть то результат именно не
00:09:41
0 положительный ну и теперь
00:09:44
а пока давайте отобразим как-то данные в
00:09:47
нашей терминальной программе которые у
00:09:49
нас придут это очень легко делается
00:09:54
таким
00:09:56
образом мы с вами еще не добавляли здесь
00:10:00
теперь мы будем использовать то есть мы
00:10:02
по одному байту кидаем с вами
00:10:04
терминальную программу но сначала когда
00:10:07
а и равно нулю мы из первого адресов со
00:10:10
2 адреса когда единиц будет тут же
00:10:12
единичка прибавляется один байт мы всего
00:10:14
отправляем и в конце концов мы потом
00:10:17
переведем строку или возвратим каретку
00:10:20
ну давайте сейчас прошьём и посмотрим
00:10:23
все таки что в терминальной программу к
00:10:26
нам придут
00:10:27
данные то есть это будет олицетворять то
00:10:30
что они придут не только туда а еще они
00:10:33
придут и в наш модуль так сказать в нашу
00:10:37
программу мы же из программу туда все
00:10:40
передаю вот давайте опять запустим наш
00:10:43
путь и мы видим что у нас соединение
00:10:50
произошло теперь мы видим всего в айпи
00:10:52
вот 107 у нас компьютер 197 модуль все
00:10:56
очень удобно и хорошо данный 0 то есть
00:10:58
это пакет пришел скорее всего с чем то
00:11:01
таким вот наверное вот этот пакет пришел
00:11:04
с желанием соединиться этот с последним
00:11:06
подтверждением они бездарных хотя вот
00:11:09
этот вот с опции вино данных в нем 0 то
00:11:11
есть наш вот это
00:11:13
с вами кот очень хорошо работает для
00:11:16
тела
00:11:17
напишем вот мы видим что данные пришли и
00:11:24
пришли они несколько раз потому что мы
00:11:26
знаем что клиент будет несколько раз
00:11:29
данные посылать пока ему не надоест то
00:11:32
есть там какой-то тайм-аут есть какой-то
00:11:35
в общем максимальное количество повторов
00:11:39
ретрансляции или еще чего-то такого и в
00:11:43
концовке будет нам вот такой вердикт
00:11:46
вынесен то есть с нами будет разорвано
00:11:48
соединение
00:11:49
нас с этим поздравит в кавычках пути
00:11:52
поэтому давайте теперь добиваться того
00:11:55
чтобы
00:11:56
клиент себя так с нами не вел то есть но
00:11:59
он ведет себя соответственно с нами так
00:12:01
из-за того что мы себя с ним так ведем
00:12:03
давайте еще один код операции добавим у
00:12:08
нас более resets hansen
00:12:12
а еще нужен для данных то есть чтобы
00:12:15
потом войдет функцию мы с вами все-таки
00:12:18
определили что мы вошли туда именно для
00:12:23
того чтобы передавать пакет данных они
00:12:26
еще за чем-нибудь поэтому проследуем
00:12:29
заголовочный файл с вами и вот где вот
00:12:32
эти все опции мы добавим еще одну ну и
00:12:36
теперь после того как мы показали
00:12:39
содержимое наших данных или содержание в
00:12:43
терминальной программе мы добавим свет
00:12:46
все код который вызовет уже функции
00:12:50
передачи данных но там и прием идет у
00:12:54
нас там все она универсальная такая то
00:12:56
есть не выходя вот из этого вот
00:12:58
цикла здесь мы все это проделаем то есть
00:13:02
дальше мы когда-то будем здесь
00:13:04
фильтровать просто или это данные или
00:13:07
это яичники и запрос будет посмотрим что
00:13:10
дальше будет но будет все интересный не
00:13:12
факт что с этим именно модулем но все
00:13:15
нормально будет с протоколами мы все
00:13:18
заниматься будем долго но я думаю это
00:13:20
очень интересно все-таки всем хочет
00:13:22
падать познать каким образом передаются
00:13:25
данные по локальным сетям
00:13:27
мы все мы вообщем если видим что флаг
00:13:29
вот этот так там включен то есть поэтому
00:13:32
я вот так вот сделал по маске то неважно
00:13:35
какие остальные флаги но вот такое как
00:13:37
включен там и
00:13:38
и данные само собой есть то есть то мы
00:13:41
вызываем с вами tcp
00:13:43
центр и попадаем в него ну здесь мы еще
00:13:46
одну с вами давайте переменную в тисе
00:13:48
present добавим тоже для размер данных
00:13:52
для наших из-за дата назовем его и затем
00:13:56
мы с вами добавим
00:13:58
вот здесь новое условие то есть пока мы
00:14:00
ничего не оптимизируем с вами то есть
00:14:03
если у нас
00:14:04
операций вот такая то есть вызвали вот с
00:14:06
таким кодом операции скопируем сюда весь
00:14:09
код до 1 передач данных с предыдущего
00:14:12
тело условия сделал предыдущее условия
00:14:16
но это где происходил разъединение
00:14:19
принципе оно все это похоже просто здесь
00:14:22
мы еще раз измеряем наши данные можно
00:14:24
было бы лень передавать но мне тяжело
00:14:27
нам пока будет и измерить в принципе еще
00:14:29
такого нет здесь вот практически тот же
00:14:34
самый код
00:14:35
только другая переменная с другим именем
00:14:38
все измерили и уже мы будем не единичка
00:14:42
вот здесь номер подтверждение добавлять
00:14:45
а размер данных пришедших то есть тем
00:14:48
самым мы покажем что мы все данные
00:14:50
принялись конечно это не по такому
00:14:53
алгоритму должно делаться не из поля это
00:14:56
надо читать все как бы не
00:14:59
а сами данные как-то надо прочитать
00:15:01
контрольную сумму нужно проверить
00:15:04
обязательно что сошлась но у нас пока с
00:15:06
вами проектами для этого он для изучения
00:15:09
работы протокола и для того чтобы нас
00:15:12
вот здесь вот клиент не ругала
00:15:14
вот этими визитами здесь все ясно и
00:15:17
давайте покажем еще размер данных вот
00:15:21
здесь причем именно именно вот прям
00:15:24
после этой вот строчки почему-то в
00:15:27
другое место в такой или никуда не
00:15:29
втыкают кот кот подвисает пока я другие
00:15:32
мер борьбы не нашел с подписанием кода
00:15:35
может не успевать пакеты пройти первые
00:15:37
два потому что там сначала передает
00:15:39
строка потом возврат каретки отдельно с
00:15:41
переводом строки я не знаю я думаю
00:15:44
разберусь потом когда-нибудь может и не
00:15:46
буду в принципе это не мешает нам не как
00:15:50
мы пока скорость не набираем конечно это
00:15:53
дурной тон уф-в
00:15:55
передачи данных вообще как-то
00:15:58
использовать все это дело вот так ну
00:16:01
давайте пока вот то что есть попробуем
00:16:04
прошьём запустим наш путь и кришна
00:16:14
полюбившиеся на строку с тремя
00:16:16
восклицательными знаками и опять у нас
00:16:18
пошли повторы почему-то не понятно
00:16:21
почему у нас пошли повторы
00:16:23
скорее всего не до конца мы скопировали
00:16:26
не та передача у нас не передается вот
00:16:28
мы до него дошли а сама передача не
00:16:30
скопировали я же знаю что уже должно все
00:16:33
передаваться одну строчку не до
00:16:35
копировали вот такая ошибка может бывает
00:16:38
что говорить хочется в одну часть
00:16:40
управиться чтобы вас не насиловать
00:16:42
частями а получается надо вот такие вот
00:16:45
закоулки ну давайте сразу все мы откроем
00:16:48
мы постараемся все равно правит сегодня
00:17:01
вот теперь только однажды передался нас
00:17:05
hell наш пилот и мы видим подтверждение
00:17:07
на оба пакета вот этих вот и по
00:17:10
окончанию
00:17:11
по выходу мы должны увидеть корректно
00:17:14
разъединение корректно у нас
00:17:15
разъединение почему своем не произошло
00:17:17
но я знаю почему она не произошло причем
00:17:21
вот она у нас и подвисание то сейчас я
00:17:24
все вам расскажу давайте пока мы пускай
00:17:27
у нас тут подписанию у нас даже пин
00:17:30
даваться вами ничего не будет давайте
00:17:35
пока до пишем код а потом самое
00:17:38
интересное я оставлю на поток то есть
00:17:41
вот мы передали свой пакет отлично и
00:17:44
здесь давайте если мы вот именно такую
00:17:46
строку который мы передали с вами
00:17:48
встретим там и чем-нибудь назад ответим
00:17:51
в чат то есть как мы наподобие в египте
00:17:53
когда-то делали мы также отвечали чтобы
00:17:56
чад был автоматическим у нас тут модуль
00:17:59
иногда мог чего-то отвечать то есть одна
00:18:01
и передачу данных по смотрим мышцы
00:18:04
только приняли и подтвердили а ничего
00:18:06
данные ты не передали мы только передали
00:18:08
подтверждение на них ну давайте теперь
00:18:11
условие добавим определенную для этого
00:18:15
вот если именно пришло тела с тремя
00:18:18
восклицательными знаками
00:18:19
причем именно без всяких возвратов
00:18:22
каретки потому что мы первый раз как мы
00:18:24
видели в шарки
00:18:26
оно именно так и происходит отдельно
00:18:28
перевод каретки передается все и здесь
00:18:31
мы уже с вами передадим строку с данными
00:18:38
обычным образом мы передадим строку
00:18:41
а сейчас мы разберём этот куб мы
00:18:44
скопировали с вами в поле дата вот такую
00:18:47
строку с переводом в строке с возвратом
00:18:50
каретки с такими вот флагами то есть и
00:18:52
подтверждение мы требуем и также то
00:18:54
чтобы сразу обрабатывал пакет то есть
00:18:56
при таком флаги нам клиент пошлет
00:18:59
подтверждение незамедлительно то есть не
00:19:01
будет мириться подтверждением не будет
00:19:04
заставлять нас ждать когда он этот буфер
00:19:06
обработает ну и все здесь стандартный
00:19:09
код мы показываем длины всех пакетов то
00:19:11
есть пересчитываем контрольную сумму
00:19:13
у нас не будет опций также то есть затем
00:19:18
мы длине прибавляем и размер данных и
00:19:21
тогда только мы считаем контрольную
00:19:23
сумму потом заполняем заголовок пакета
00:19:25
айпи и передаем с вами фрейм никакие
00:19:29
mac-адреса мы уже больше тут не
00:19:31
заполняем айпи адреса не заполняем они
00:19:33
вот здесь заполнены с вами давайте в
00:19:36
очередной раз соберём код прошьём
00:19:39
контроллер
00:19:40
а я думаю уже прошилось запускаем пути и
00:19:51
нам сервер отвечает
00:19:53
если мы какие-то будем другие строки или
00:19:57
два восклицательных знака или четыре
00:20:02
нам нечего с вами наш сервер не ответить
00:20:05
только
00:20:06
тела и только с тремя восклицательным
00:20:10
знаком даже если мы ведем с маленькой
00:20:12
буквы то это поймёт и раскусит наш
00:20:16
сервер то есть таким образом можно
00:20:17
как-то пароль и передавать на понятно в
00:20:20
открытом виде не передают сейчас пароль
00:20:22
всех шифровать но
00:20:23
но тем не менее вот это у нас то что
00:20:26
именно корректно на ус данный принял
00:20:28
сервер но проблем у нас пока осталась с
00:20:31
разъединением сейчас будет пытаться
00:20:33
по существу это разъединение но это мы
00:20:35
разберемся в общем все дело тут в чем
00:20:38
почему-то вот когда вот это все обмен
00:20:42
данными прошел то ли что-то не успевает
00:20:44
во всем вот здесь вот мы вставили с вами
00:20:47
вот после этой строки вот есть показ
00:20:50
данных он здесь и не нужен в принципе мы
00:20:52
и так знаем длину данных но факт тот что
00:20:55
без этого вот тут подвисал и и
00:20:58
аналогичен теперь происходит и вот здесь
00:21:01
где попытка разъединения когда попытка
00:21:03
соединений ничего такого не происходит
00:21:05
но это может быть с артом что-то может
00:21:07
еще с чем-то то есть мы опять добавляем
00:21:09
сюда ну не обязательно здесь какой-то
00:21:11
длину показывает в
00:21:13
разъединяя никакой можно длину
00:21:15
показывать и тут в принципе не страшно
00:21:17
тут спешите никуда ну я понял что
00:21:19
достаточно вообще просто 0
00:21:21
передачи гусар ты все обыкновенная ноль
00:21:25
без палочки вот такой вот я здесь даже
00:21:28
напишу в коде что иначе подвисает код
00:21:31
может кто нибудь подскажет я был
00:21:33
благодарен то есть вот нолик
00:21:34
обыкновенный передаем один только новый
00:21:37
сейчас вы увидите как все корректно у
00:21:40
нас завершится соединение запускаем пути
00:21:45
наш любимый трехкратно рукопожатие мы
00:21:50
получили hello-
00:21:53
это не тела это кириллица
00:21:59
обычный вот такой но любой строка все
00:22:04
корректно все подтверждается все
00:22:06
нормально и сейчас скорее всего у нас и
00:22:09
с вами вот очень прекрасно произойдет
00:22:12
разъединение не знаю почему вот так вот
00:22:14
сработала таким странным образом от
00:22:16
конечно не то что мы причина нашли мы
00:22:20
просто времени справились с трудностями
00:22:22
так как нам важно чтобы вы тут все
00:22:25
зеленой был самый главный пока данный
00:22:27
момент и мы этого добились но еще
00:22:29
давайте легко и какую безопасность здесь
00:22:31
сделаем такую безопасность так сказать
00:22:35
мы обезопасим ся вот чего с вами вдруг с
00:22:40
таким чист флагами нам придет пакет
00:22:42
вообще без данных то есть мы куда то
00:22:44
попадем и как мы себя будем вести мы
00:22:46
вообще предсказать не сможем поэтому мы
00:22:48
давать их что-то в этом случае сделал мы
00:22:51
в этом случае будем разъединятся перед
00:22:54
самым последним условие в тисе перед мы
00:22:57
добавим еще вот такой вот условие то
00:22:59
есть если флаги у нас вот эти вот то
00:23:02
есть вот именно вот как данный сервер на
00:23:05
передаются вот эти вот 2 флага то мы с
00:23:09
вами смотрим а нет ли данных то есть но
00:23:11
данные мы уже вот тут измерили что они
00:23:14
есть или их нет то есть потому что мы
00:23:16
можем здесь сюда попасть на вдруг у нас
00:23:18
флаг будет не такое вместе с пушем а
00:23:21
данные есть поэтому мы попадаем сюда
00:23:24
но мы проверяем что данных нет и если у
00:23:27
нас данных нет но вот такие флаги вдруг
00:23:30
я пока таком не встречал вдруг будет
00:23:32
то мы разъединяем ся вот такие вот дела
00:23:36
но давайте еще соберем с вами кот спешу
00:23:39
вас обрадовать чтоб вот наш закончен
00:23:41
спешу вас с этим поздравить и что нас of
00:23:44
the chat работает прекрасно давайте наш
00:23:47
джентльменский набор весь запустим с
00:23:50
вами пути в shark и терминальной
00:23:53
программы до любой можно кириллицу
00:23:57
просто здесь вот будет тоже совсем
00:23:59
другое так как у нас не понимает
00:24:04
терминальная программа кириллица на
00:24:06
такую строку в на нам критик то есть вот
00:24:10
так вот я поздравляю вас с еще одной
00:24:13
очередной победы мы подключаем наш
00:24:16
модуль контроллера ставим 32 научились и
00:24:19
уже передавать данные хотя бы небольшой
00:24:22
пакет и пользуюсь протоколом тисе пи что
00:24:24
очень отрадно то есть приближает нас к
00:24:27
основной победе чтобы какой-то что-то
00:24:30
типа сервер создать но основная у нас
00:24:33
победа конечно не это основная победу то
00:24:35
что мы с вами практически разобрались с
00:24:38
огромным уже количеством самых нужных
00:24:41
протоколов которые больше всего
00:24:43
используются в локальных сетях
00:24:45
согласно модели оси подписывайтесь на
00:24:48
канал жмите кнопочку мне нравится если
00:24:51
вам понравилась данное видео пишите
00:24:53
комментарии всем пока всего хорошего
00:24:55
всем доброго здоровья

Описание:

Продолжаем изучать программирование передачи данных по локальной сети. Использовать мы будем для этой цели проводной интерфейс LAN. В качестве сетевого устройства мы продолжаем использовать модуль на микросхеме ENC28J60, в котором присутствует и физический и канальный уровень. Обмен данными с контроллером данная микросхема осуществляет посредством шины SPI. В качестве контроллера мы будем использовать stm32f103rct6, который установлен на недорогой отладочной плате. В данном занятии мы при помощи протокола TCP постараемся передать какие-то данные от клиента серверу, а также от сервера клиенту. В качестве данных будет текстовые строки. Отладочную плату можно купить здесь http://ali.pub/1jgc7 ENC28J60 Ethernet LAN Сетевой Модуль можно купить здесь http://ali.pub/kf0eu Переходник USB to TTL ftdi ft232rl можно купить здесь http://ali.pub/yv3is Навигация по видео: 00:00 Введение 01:19 Запустим проект в Cube MX, сгенерируем, откроем и настроим проект в Keil 02:18 Запустим клиент Putty и изучим в анализаторе трафика пакет с отправленной строкой 06:06 Измерим длину данных и выведем информацию о полученном пакете вместе с размером данных 09:04 Создадим код условия, определяющего наличие данных в принимаемом пакете и отобразим их в терминальной программе 12:04 Если есть данные, то вызовем функцию передачи для отправки подтверждения на данный пакет и уже в вызванной функции, добавив необходимое условие, отправим пакет с подтверждением 17:44 При наличии определённой строки данных пошлём серверу также пакет с данными 20:31 Проведём определённую борьбу с подвисанием программы в момент разъединения 22:29 Обработаем приём пакета с теми же флагами, но без данных Рекомендуется также перед просмотром данного урока просмотреть данное видео: Распаковка и тестирование отладочной платы на микроконтроллере stm32f103rct6 https://www.youtube.com/watch?v=0YVPIruMz_s Урок 68. LAN. ENC28J60. Часть 1 https://www.youtube.com/watch?v=EUiTXKE49ZM Урок 68. LAN. ENC28J60. Часть 2 https://www.youtube.com/watch?v=enjSND-dUTg Урок 68. LAN. ENC28J60. Часть 3 https://www.youtube.com/watch?v=lrKSLw84-zA Урок 68. LAN. ENC28J60. Часть 4 https://www.youtube.com/watch?v=JDfXDMmn0oY Урок 68. LAN. ENC28J60. Часть 5 https://www.youtube.com/watch?v=1rDR4jfLaas Урок 68. LAN. ENC28J60. Часть 6 https://www.youtube.com/watch?v=5i-GjzChUQc Урок 68. LAN. ENC28J60. Часть 7 https://www.youtube.com/watch?v=sgWYfnAxIZI Урок 68. LAN. ENC28J60. Часть 8 https://www.youtube.com/watch?v=JgM8b0Ngz04 Урок 68. LAN. ENC28J60. Часть 9 https://www.youtube.com/watch?v=DS0J_G5I9hE Урок 68. LAN. ENC28J60. Часть 10 https://www.youtube.com/watch?v=YX83GOAhrP8 Урок 71. LAN. ENC28J60. ARP. Часть 1 https://www.youtube.com/watch?v=xHctb2wJK_c Урок 71. LAN. ENC28J60. ARP. Часть 2 https://www.youtube.com/watch?v=7i7eQ5lzv_I Урок 71. LAN. ENC28J60. ARP. Часть 3 https://www.youtube.com/watch?v=8WcVZCWFOAQ Урок 71. LAN. ENC28J60. ARP. Часть 4 https://www.youtube.com/watch?v=0EwtkH_dldA Урок 74. EXTI или внешние прерывания https://www.youtube.com/watch?v=EptTr2nUCJk Урок 77. LAN. ENC28J60. Внешние прерывания (EXTI) https://www.youtube.com/watch?v=Fkvc2XXZYY0 Урок 80. LAN. ENC28J60. UDP Server https://www.youtube.com/watch?v=HDsLwf6neXo Урок 81. LAN. ENC28J60. UDP Client https://www.youtube.com/watch?v=8WP04_LMAB0 Урок 82. LAN. ENC28J60. Удаленный доступ https://www.youtube.com/watch?v=tZkw6a_MU3c Урок 83. LAN. ENC28J60. NTP. Узнаём точное время. Часть 1 https://www.youtube.com/watch?v=qL2czwMavy4 Урок 83. LAN. ENC28J60. NTP. Узнаём точное время. Часть 2 https://www.youtube.com/watch?v=PDmnuo2rGCc Урок 84. LAN. ENC28J60. TCP Server. Соединение. Часть 1 https://www.youtube.com/watch?v=n860ySyLrHA Урок 84. LAN. ENC28J60. TCP Server. Соединение. Часть 2 https://www.youtube.com/watch?v=YFKSiD96ayg Текстовая версия данного занятия и исходный код здесь https://narodstream.ru/stm-urok-85-lan-enc28j60-tcp-server-peredayom-dannye/ Группа в контакте http://vk.com/club116656325 Группа в Одноклассниках http://ok.ru/group/52987126153436 Группа в Facebook https://www.facebook.com/unsupportedbrowser Мой сайт "Программирование МК" https://narodstream.ru/ Форум https://narodstream.ru/forum/ Вы можете помочь проекту: ЮMoney https://yoomoney.ru/to/41001176473465 Webmoney Z341906933112 Карта Сбербанка (МИР) 2202201799288929 Можно в USDT 1) Сеть:TRC20 Адрес: TBBPFk5Widf1CYvF7Xk5ssKXeiPJHwtMgS 2) Сеть: BSC BNB Smart Chain (BEP20) (комиссия намного меньше) Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17 3) Сеть: Huobi ECO Chain (HECO) (комиссия еще меньше) Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Программирование МК STM32. Урок 85. LAN. ENC28J60. TCP Server. Передача данных"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Программирование МК STM32. Урок 85. LAN. ENC28J60. TCP Server. Передача данных" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Программирование МК STM32. Урок 85. LAN. ENC28J60. TCP Server. Передача данных"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Программирование МК STM32. Урок 85. LAN. ENC28J60. TCP Server. Передача данных" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Программирование МК STM32. Урок 85. LAN. ENC28J60. TCP Server. Передача данных"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Программирование МК STM32. Урок 85. LAN. ENC28J60. TCP Server. Передача данных"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

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