Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 8

Обработка данных, полученных из COM-порта

02.11.2013, 00:14. Показов 5866. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В текстовом файле одна строка с данными полученными из СОМ порта(файл REG.jpg). Ее надо обработать, конкретно получить цифровые значения после знака #. Но у меня ее даже в переменную не получатся передать в виде удобном для дальнейшей обработки. Результат моих попыток (Результат.jpg)/
Пытаюсь все сделать следующим кодом
Windows Batch file
1
2
3
4
5
6
7
8
9
10
SetLocal EnableExtensions EnableDelayedExpansion
echo off
set "reg="
findstr # C:\reg.txt
set/p reg=<C:\reg.txt & echo. %reg%
rem set/p "reg =< findstr # C:\reg.txt"
rem set reg = %reg:~4%
for /f "tokens=1" %%i in ('findstr # C:\reg.txt') do ( echo i=%%i)
echo reg=%reg%
pause
После команды findstr # C:\reg.txt у меня на экран выводится результат в виде удобном для дальнейшей обработки, но вот запихать его в таком виде в переменную у меня не получается. Пытаюсь передать различными способами строку в переменные, но получаются кракозябры, переменные i и reg.
Посоветуйте, что не так делаю?
Миниатюры
Обработка данных, полученных из COM-порта   Обработка данных, полученных из COM-порта  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2013, 00:14
Ответы с готовыми решениями:

Обработка полученных данных с COM порта
Доброго всем времени суток. Вопрос такого плана - есть некое устройство посылающее данные в COM порт. Нужно на первом этапе ловить эти...

Чтение и обработка данных полученных из COM порта
Есть микроконтроллер с датчиком (акселерометр), эмулируется COM порт на USB, выводиться ~20 значений/сек в порт для получения среднего...

Обработка полученных данных.
Я сделал сервер на чистых WinSock1. Потом принимаю данные. char str; err = recv(s1, str, sizeof(str), 0 ); Есть пару вопросов. ...

10
 Аватар для YupiRex
189 / 146 / 32
Регистрация: 04.10.2013
Сообщений: 150
02.11.2013, 01:20
Вы себя накручиваете :-D
Windows Batch file
1
2
3
4
5
SetLocal EnableExtensions EnableDelayedExpansion
echo off
for /f "tokens=1 delims=#" %%i in ('findstr # C:\reg.txt') do (set reg=%%i)
echo reg=%reg%
pause
Миниатюры
Обработка данных, полученных из COM-порта  
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
02.11.2013, 01:57
Если там спецсимволы, лучше взять в кавычки:
... "set reg=%%i"
но не факт, что заработает.

Добавлено через 40 секунд
Цитата Сообщение от YupiRex Посмотреть сообщение
echo reg=%reg%
А здесь безопасней так:
echo reg=!reg!
0
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 8
02.11.2013, 22:28  [ТС]
Так у меня эта конструкция и не работает

Windows Batch file
1
2
3
4
5
6
7
SetLocal EnableExtensions EnableDelayedExpansion
echo off
for /f "tokens=1 delims=#" %%i in ('findstr # C:\reg.txt') do (
set "reg=%%i"
echo reg=!reg!
)
pause
Миниатюры
Обработка данных, полученных из COM-порта  
0
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 8
02.11.2013, 22:42  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
но не факт, что заработает.
Почему? У
Цитата Сообщение от YupiRex Посмотреть сообщение
Вы себя накручиваете :-D
все работает... Что не так, можете подсказать?
0
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 8
02.11.2013, 22:53  [ТС]
Цитата Сообщение от YupiRex Посмотреть сообщение
Вы себя накручиваете :-D
Попробуйте использовать мой файл с данными для обработки, который reg.txt
Да, там идут какие то спец символы.
Вложения
Тип файла: txt reg.txt (20 байт, 21 просмотров)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.11.2013, 00:21
Лучший ответ Сообщение было отмечено как решение

Решение

Там у Вас в файле символ \0
который "говорит" циклу - завершение строки. Дальнейшая обработка прекращается, даже не дойдя до анализа разделителя.
В этом можно убедится, поставив вместо # другой символ в Delims, например цифру 2, которая присутствует в reg.txt
Вывод консоли не изменится.
+ команда findstr дополнительно модифицирует служебные символы в начале, но это не суть важно.

Выход: использовать другой язык реализации, например, VBScript.
3
 Аватар для YupiRex
189 / 146 / 32
Регистрация: 04.10.2013
Сообщений: 150
04.11.2013, 14:24
Лучший ответ Сообщение было отмечено как решение

Решение

тут на досуге поковырял ваш исходный файл, вот что получилось:
Windows Batch file
1
2
3
4
5
SetLocal EnableDelayedExpansion
for /f "tokens=* delims=#" %%i in ('more +1 "c:\reg.txt"') do (set num=%%i)
set num=!num:~0,10%!
echo !num!
pause
Миниатюры
Обработка данных, полученных из COM-порта  
3
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 8
05.11.2013, 10:16  [ТС]
тут на досуге поковырял ваш исходный файл, вот что получилось:
Спасибо что поковыряли!!!
Команда MORE получается выдергивает из файла текст без спецсимволов
Windows Batch file
1
2
3
4
5
6
7
SetLocal EnableDelayedExpansion
for /f "delims=" %%i in ('more +1 "c:\reg.txt"') do (echo %%i)
pause
for /f "tokens=* delims=#" %%i in ('more +1 "c:\reg.txt"') do (set num=%%i)
set num=!num:~0,10%!
echo !num!
pause
Обратите внимание как %%i выводится на экран после 2 строки кода, 3 первых спецсимвола остались где то далеко...
Миниатюры
Обработка данных, полученных из COM-порта  
0
 Аватар для YupiRex
189 / 146 / 32
Регистрация: 04.10.2013
Сообщений: 150
05.11.2013, 15:13
добавим счетчик строк и уберем переход:
Windows Batch file
1
2
3
4
5
6
7
8
9
SetLocal EnableDelayedExpansion
set /a "nu=0"
for /f "tokens=* delims=#" %%i in ('more "c:\reg.txt"') do (
    set "num=%%i"
    set /a "nu=!nu!+1"
    )
set "num=!num:~0,10%!"
echo !num!  !nu!
pause
как мы можем увидеть на рисунке, MORE - разбил на 2 строки и нашел "#" во второй строке....
Миниатюры
Обработка данных, полученных из COM-порта  
1
 Аватар для YupiRex
189 / 146 / 32
Регистрация: 04.10.2013
Сообщений: 150
05.11.2013, 15:39
Вварианты решения задачи:
Windows Batch file
1
2
3
for /f "tokens=* delims=#" %i in ('find "#" "C:\reg.txt"') do (echo %i)
for /f "skip=1 tokens=* delims=#" %i in ('more "C:\reg.txt"') do (echo %i)
for /f "tokens=* delims=#" %i in ('more +1 "C:\reg.txt"') do (echo %i)
Миниатюры
Обработка данных, полученных из COM-порта   Обработка данных, полученных из COM-порта  
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2013, 15:39
Помогаю со студенческими работами здесь

Обработка данных полученных из SerialPort
Добрый день. подскажите пожалуйста как решить следующую задачу? На VB.NET в ком порт нужно отправить 100 разных команд. ...

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

Обработка полученных данных и их запись в поле
Приветствую! Прошу помощи.. Есть след.скрипт (кусок): success: function(data) { $('#resultFeedBack').html(data); var data =...

Разделение разбора xml-файла и обработка полученных данных на независимые потоки
файл разбирается при помощи StAX. разобранные данные записываются в ArrayList. для их обработки они вытаскиваются из этого же ArrayList....

Обработка данных с com порта.
При подключении к com порту контроллера, неважно какого, мне в консоль приходит от него ответ вот в таком виде: как еа рисунке. Это...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru