Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9

Терминал, вывод данных

12.12.2013, 01:49. Показов 3748. Ответов 14
Метки нет (Все метки)

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

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

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

принтер 1
0D 0A 0D 0A ... 0D 0A 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D 0D 0A 0D ...
0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D 0D 0A 0D ... 0D 0A 0D
... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D 0D 0A 0D ... 0D 0A
0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D
... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ...

принтер 2
0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ...
0D 0A ... 0D 0A ... 0D 0A ... 0D 0A 0D ... 0D 0A 0D ...

спутниковый тюнер на линуксе
00 0D ... 00 ... 0D 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ...
0A 0D ... 0A 0D 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D

с принтерами проблема, что нет конца строки у последних данных
на девайсе на линуксе еще проблема, что он шлет 00 байтики, с ними то же что-то надо делать

Сначала для теста использовал строку вида ...\r\n...\r\n с эти проблем нет, все работает
на реальных девайсах оказалось все не так.
Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2013, 01:49
Ответы с готовыми решениями:

Как реализовать вывод в терминал поверх уже выведенных данных?
К примеру, как делает apt-get при установке пакета (изменение числа процентов на том же месте). Очень интересно, как это реализуется....

Вывод в терминал, 4 потока
Здравствуйте, для дисциплины ОС требовалось написать программу, рекурсивно копирующую содержимое одной папки в другую с сохранением...

Вывод символов ASCII в терминал
Добрый вечер господа возник вопрос связанный с выводом на экран зашифрованного текста. Когда запускаю программу с терминала выводит...

14
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
12.12.2013, 09:43
Цитата Сообщение от lodyr Посмотреть сообщение
принтер 1
0D 0A 0D 0A ... 0D 0A 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D 0D 0A 0D ...
0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D 0D 0A 0D ... 0D 0A 0D
... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D 0D 0A 0D ... 0D 0A
0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D
... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ... 0D 0A 0D ...
принтер 2
0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ...
0D 0A ... 0D 0A ... 0D 0A ... 0D 0A 0D ... 0D 0A 0D ...
спутниковый тюнер на линуксе
00 0D ... 00 ... 0D 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ...
0A 0D ... 0A 0D 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D
Так довольно сложно понять о чём идёт речь. Можете привести цельный фрагмент данных?
И функция приёма данных не была бы лишней.
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
12.12.2013, 11:20  [ТС]
вот что прога принимает в режиме вывода хекса, это принтер 2
Code
1
2
3
4
5
6
7
8
9
10
11
12
0A 0D 5B 48 57 49 43 5D 0A 0D 31 50 4C 4C 0A 0D  ..[HWIC]..1PLL..
32 49 4F 43 0A 0D 33 53 44 52 41 4D 0A 0D 34 47  2IOC..3SDRAM..4G
50 49 4F 0A 0D 35 41 48 42 0A 0D 5B 45 4E 44 5D  PIO..5AHB..[END]
5B 59 5D                                         [Y]
0D 0A 44 65 63 6F 6D 70 72 65 73 73 69 6F 6E 20  ..Decompression 
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 0A 2D 2D 3E  ***********..-->
3E 3E 3E 20 47 4F 20 4B 65 72 6E 65 6C 0D 0A 6A  >>> GO Kernel..j
75 6D 70 5F 45 78 65 63 43 6F 64 65 28 29 20 3A  ump_ExecCode() :
20 75 6C 5F 61 64 64 72 20 2D 20 30 78 30 32 30   ul_addr - 0x020
30 38 30 30 30 0D 0A 0D 20 49 6E 69 74 69 61 6C  08000... Initial
69 7A 65 57 44 54 0D 0A 0D 5B 30 78 32 30 37 38  izeWDT...[0x2078
35 36 34 5D                                      564]
то же самое надо выводить в аски в мемо
в ф-ции приема данных ничего интересного нет, она просто накапливает за определенный промежуток времени данные и выводит, т.е. код сверху, попадает в буфер не сразу, а скажем так, за несколько вызовов ф-ции
вот кусок тестовый ф-ции, которая как раз занимается выводом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//---------------------------------------------------------------------------
void __fastcall TForm1::ProcessPortData( )
{
    if( !Port->Recv_Buff_Ex( 50 ) )
    {
        Form1->PrintText( (char*)Port->rd_buff );
 
        Port->ClearRecvData();
 
        Form1->PrintText( Port->LastErrorStr );
    }
    else
    {
        if( strstr( (char*)( Port->rd_buff + Port->CountRecv - 2 ), "\r\n" ) )
        {
            Port->rd_buff[ Port->CountRecv - 2 ] = '\0';
 
            Form1->PrintText( (char*)Port->rd_buff );
 
            Port->ClearRecvData();
        }
    }
 
    return;
}
//---------------------------------------------------------------------------
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
12.12.2013, 11:26
Цитата Сообщение от lodyr Посмотреть сообщение
...\r\n...\r\n
Не смотря на то, что это кажется бредом, пробовали \n\r?
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
12.12.2013, 11:35  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Не смотря на то, что это кажется бредом, пробовали \n\r?
да пробовал, только смысла нет
потому что, сама прога также отправляет данные, а формат отправки как раз 123456\r\n
т.е. тогда не будут выводиться эти данные
и потм непонятно что делать с данными, которые не оканчиваются концом строки-(
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
12.12.2013, 11:38
Цитата Сообщение от lodyr Посмотреть сообщение
только смысла нет
Смысла нет или не работает?
Цитата Сообщение от lodyr Посмотреть сообщение
т.е. тогда не будут выводиться эти данные
Опять же но тогда они вводятся или нет?
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
12.12.2013, 11:44
lodyr, на сколько я понял у Вас проблема с интерпритацией повторяющихся байтов 0x0D.
Полагаю это Вам поможет Text file with 0D 0D 0A line breaks.
1
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
12.12.2013, 11:59  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Смысла нет или не работает?

Опять же но тогда они вводятся или нет?
не работает
если посмотрите формат вывода от принтера 2, то там
вначале строки разделяются 0A0D, а потом 0D0A, в конце еще 0D0A0D
т.е. выводится либо то, либо это-)
Code
1
2
3
принтер 2
0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ... 0A 0D ...
0D 0A ... 0D 0A ... 0D 0A ... 0D 0A 0D ... 0D 0A 0D ...
Опять же но тогда они вводятся или нет?
так как это терминал, то для отправки аски данных я использую формат хххх\r\n ... в билдере в мемо эти же символы используются для перевода строк, а вот в железяках все оказалось странно-)
Цитата Сообщение от Kulgar
у Вас проблема с интерпритацией повторяющихся байтов 0x0D
Спасибо, сейчас ознакомлюсь!

Добавлено через 10 минут
Цитата Сообщение от Kulgar Посмотреть сообщение
lodyr, на сколько я понял у Вас проблема с интерпритацией повторяющихся байтов 0x0D.
Полагаю это Вам поможет Text file with 0D 0D 0A line breaks.
там немного о другом, к сожалению
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
12.12.2013, 12:08
Цитата Сообщение от lodyr Посмотреть сообщение
вначале строки разделяются 0A0D, а потом 0D0A, в конце еще 0D0A0D
Выявлены ли различия в семантике содержимого этих строк?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
12.12.2013, 12:22
Цитата Сообщение от lodyr Посмотреть сообщение
не работает
Плохо. А то можно было б воткнуть костыль - перед выдачей в memo прочесать буфер на наличие всех комбинаций и замены их на что следует.
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
12.12.2013, 13:41  [ТС]
Цитата Сообщение от Kulgar Посмотреть сообщение
Выявлены ли различия в семантике содержимого этих строк?
да нет, если честно я пока не понимаю, почему так вывод идет
вообще, идея была какая
так как мы не знаем, что нам придет в порт и что мы будем считывать, то я ориентировался на то, что при выводе аски, строки должны заканчиваться на перевод строки или окончание строки
попало сколько то байт в буфер, проверяем есть ли перевод строки, если есть выводим данные, чистим буфер
если нет, снова вызывается ф-ция читающая буфер ... на самом деле она вызывается постоянно в цикле в другом потоке и постепенно наполняет буфер
затем происходит, проверка, и если есть перевод строки, то вывод
если буфер переполняется, то выводится весь буфер и очищается
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
12.12.2013, 14:31
lodyr, в техническом описании девайсов ничего нет по этому поводу?
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
12.12.2013, 15:06  [ТС]
Неа, это же внутренние разъемы, они не для пользователей
через них происходит обмен c устройством для каких-то определенных целей: заливка прошивки, настройка каких-то параметров, что-то типа командной строки как в линуксе

А так хотелось получить прогу наподобие гипертерминала виндоус или putty
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
12.12.2013, 15:21
Цитата Сообщение от lodyr Посмотреть сообщение
Неа, это же внутренние разъемы, они не для пользователей
через них происходит обмен c устройством для каких-то определенных целей: заливка прошивки, настройка каких-то параметров, что-то типа командной строки как в линуксе
Тогда только методом тыка...
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
12.12.2013, 15:49  [ТС]
уже месяц тыкаю-) все никак
Всем спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2013, 15:49
Помогаю со студенческими работами здесь

Передача данных через терминал по порту
Всем привет!Появился такой вопрос.Допустим я поставил через netcat программу которая записывает введеные данные в текстовый файл file.txt. ...

Вывод данных в терминал
как вывести хотя бы тот же "Hello, world" в терминал? (Ubuntu, Netbeans)

Передача данных c МК51 по UART и вывод в терминал
Нужно передать 2-х байтовое число через UART по каналу RS-485 на терминал.

Вывод строки в терминал
Пробую в терминал, из "флэша" вывести данные, строка за строкой с помощью прерывания UDRE. Результат, в окне терминала от первой строки...

Вывод строки Python в терминал windows
Добрый день. Нужно вывести строку Python в терминал Windows. То есть например я вызываю функцию из терминала: python file.py main ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru