Форум: "Прочее";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];
ВнизРабота по протоколу VT100 Найти похожие ветки
← →
Kolan © (2009-05-15 14:48) [0]Здравствуйте!
Мне нужно наладить общение с железкой через консоль VT100 по ком-порту.
Вижу два варианта.
1. Просто получать байтики по ком-порту, и сделать разбор вручную, но мне кажется, что это потеря времени. Как думаете?
2. Взять какой-то готовый компонент. Какой посоветуете? С ходу нашел на торри.ру nrComm (http://www.deepsoftware.com/nrcomm/). Кто-нибудь с ним работал?
← →
Игорь Шевченко © (2009-05-15 15:08) [1]VT100 - это терминал или что ?
← →
Kolan © (2009-05-15 15:11) [2]Да (http://en.wikipedia.org/wiki/VT100).
Почитал еще описание. По всей видимости большую часть эскейп-последовательностей нужно просто удалить. Тогда, кажется, проще сделать все самому.
Что мне вообще нужно. Мне надо уметь узнать какие есть папки, какие файлы и уметь получить и записать нужные файлы.
← →
Kolan © (2009-05-15 15:12) [3]Описание этого протокола — http://en.wikipedia.org/wiki/ANSI_escape_code
← →
Игорь Шевченко © (2009-05-15 15:40) [4]
> Мне надо уметь узнать какие есть папки, какие файлы и уметь
> получить и записать нужные файлы
казалось бы причем тут терминал - ни на клавиатуре, ни на экране никаких файлов нету...
← →
Kolan © (2009-05-15 16:29) [5]Как бы объяснить...
Вот есть железка, которая подключена к ком-порту. Она реагирует на команды. Например можно послатьls
и получить содержимое текущей папки.
Мне надо, пока для теста, сделать программу, которая бы умела получить список папок и файлов, и сами файлы через эту консоль.
Если просто считать байты пришедшие в ответ на команду, то они будут содержать эскейп последовательности:[1;36m[[0m [1;36mdmesg[0m [1;36mhead[0m [1;36mmkfifo[0m [1;36mrm[0m [1;36mtop[0m
[1;36m[[[0m [1;32mdosfsck[0m [1;36mhostname[0m [1;36mmkfs.ext2[0m [1;36mrmdir[0m [1;36mtouch[0m
Если я правильно понял, то мне, для моей задачи, достаточно удалить эти последовательности и всё. Кажется (и я уже попробовал — работает) это просто сделать с помощью регулярных выражений.
Но тут я беспокоюсь, как бы не удалить лишнего. Или может просто удаления недостаточно?
Еще мне надо уметь скачать файл. Для этого, если я правильно понял, используется (может использоваться) протокол ZMODEM и вот этот протокол, имхо, самому реализовать довольно долго будет.
Как подойти к решению задачи? Искать компоненты или лучше самому все написать? Если компоненты, то какие хороши?
← →
radium © (2009-05-15 16:56) [6]
> Вот есть железка, которая подключена к ком-порту. Она реагирует
> на команды. Например можно послать ls и получить содержимое
> текущей папки.
т.е. там стоит какая-то UNIX...
> будут содержать эскейп последовательности
это просто оформление вывода. Почитай тут:
http://pascal.tsu.ru/unix/syscons/ansi.html
> Еще мне надо уметь скачать файл.
С этим сложнее. Посмотри тут:
http://delphimaster.net/view/15-1241535774/
← →
Игорь Шевченко © (2009-05-15 17:01) [7]
> Если я правильно понял, то мне, для моей задачи, достаточно
> удалить эти последовательности и всё. Кажется (и я уже попробовал
> — работает) это просто сделать с помощью регулярных выражений
Это не надо делать с помощью регулярных выражений, а то получится второй автомодератор
← →
Kolan © (2009-05-15 17:07) [8]А как лучше?
← →
Медвежонок Пятачок © (2009-05-15 17:10) [9]Я как раз регулярками резал
← →
radium © (2009-05-15 17:14) [10]
> А как лучше?
1) заставить ls выдавать данные без форматирования (man ls)
2) PosEx(#$1B.... bla-bla-bla
3) http://www.perlmonks.org/?node_id=267245 (собственно регулярки :) )
← →
Kolan © (2009-05-19 11:37) [11]radium, да, там в железке Линукс.
По ссылке «http://pascal.tsu.ru/unix/syscons/ansi.html» попадаю на главную сайта (http://pascal.tsu.ru/unixt/), куда там дальше шагать?
Еще есть сомнения по поводу того, что «собственно регулярки» лучше ругулярок из [5]. И что это за язык такой? Что такое+creen
и т. п?
← →
Игорь Шевченко © (2009-05-19 11:43) [12]а че, тот, кто попросил сделать работу, партизанит, что тебе приходится на сайте выспрашивать ?
← →
Kolan © (2009-05-19 11:54) [13]Да нет, сидит у меня за спиной. Возникла идея — работать с железом через консоль. Вот я и пытаюсь понять как это делается вообще. Возможно это или не возможно, какие есть стандартные подходы и т. д.
Я могу его (того кто сделал работу) попросить что-нибудь доделать, переделать и т. д., но только что?
← →
Anatoly Podgoretsky © (2009-05-19 12:08) [14]Да просто, в одну сторону команды, в другую сторону ответы.
Касательно ANSI последовательностей, или драйвер ANSY.SYS или подобное, или встроить его в программу, это на тот случай если его нельзя отключить на другой стороне.
Только это малоподходяще для обмена, поскольку кроме расскраски там еще есть и функции перемещения курсора и прочее. Как ты будешь с этим работать?
← →
Kolan © (2009-05-19 12:47) [15]Анатолий, это я как раз и хочу понять у тех, кто, возможно, с этим сталкивался :)
← →
VICTOR_ (2009-05-19 13:05) [16]Возможно поможет чудная статья на королевстве
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1126
Реализовывал приложение на данном примере - читал данные с внешнего устройства, которые оно посылало на COM-порт.
← →
Kolan © (2009-05-19 13:11) [17]Благодарю VICTOR_, правда с собственно работой с портом у меня особых проблем нет. Мой вопрос в основном про протокол и про разбор данных.
← →
Anatoly Podgoretsky © (2009-05-19 13:28) [18]
> Kolan © (19.05.09 12:47) [15]
Ну я реально сталкивался и указал на некоторые моменты.
Вопрос в том, насколько широко используемое подмножество кодов. Если только
[1;36m
[0m
[1;32m
То достаточно сделать несложный фильтр-эмулятор ANSI драйвера и пропускать принятый текст через него. Там же просто.
← →
Kolan © (2009-05-19 13:37) [19]То бишь вариант с регулярками (которые и будут фильтровать) годится?
И еще, тут файлы предлагают передавать с помощью ZMODEM"а, как быть с этим? Что нужно изучить и что есть готовое (если его [готовое] вообще стоит использовать)?
← →
Anatoly Podgoretsky © (2009-05-19 13:44) [20]> Kolan (19.05.2009 13:37:19) [19]
Не знаю, может просто if и дальнейший разбор, задача упрощается, тем что все последовательности начинаются с кода Escape и строго детерменированы. Переменная часть координаты, если используется позиционирование, или другие переменные числовые значения.
← →
Kolan © (2009-05-19 15:45) [21]Ну так это та же регулярка по сути. Меня смущает только слова Игоря...
А что про модемы посоветуете?
← →
radium © (2009-05-19 16:50) [22]
> И что это за язык такой?
это perl
> Что такое +creen и т. п?
это строка на странице не влезла и её перенесли ))#Erase from cursor to end of line
а получилось#Erase from cursor to end of l
+ine
← →
Игорь Шевченко © (2009-05-19 16:52) [23]
> А что про модемы посоветуете?
Я все-таки не понимаю, у тебя есть конкретный заказчик, есть конкретная задача, чего ты здесь хочешь узнать ? :)
← →
radium © (2009-05-19 16:57) [24]
> пытаюсь понять как это делается вообще. Возможно это или
> не возможно, какие есть стандартные подходы и т. д.
1) Возможно.
2) Если возможностей оболочки достаточно дляhttp://delphimaster.net/view/15-1241535774/
то вполоне тривиально.
3) И не нужен тебе zmodem... (телепатор мне так подсказывает :) )
← →
radium © (2009-05-19 16:59) [25]
> Меня смущает только слова Игоря...
Чем?
← →
Kolan © (2009-05-20 12:36) [26]Уточняю вопрос.
Итак есть Линукс с которым можно общаться по ком-порту с пом. консольных команд. Кроме разных простых команд вроде ls, cd и т. п. есть еще команды lsz и lrz, которые позволяют считать и записать файл по протоколу XMODEM, YMODEM, ZMODEM.
Вопрос: Как лучше реализовать взаимодействие на основе этих команд?
← →
Kolan © (2009-05-22 15:47) [27]Итак, по сабжу нашел два набора компонент:
1. TMS Async32 производства фирмы tmssoftware (http://www.tmssoftware.com/site/async32.asp).
2. nrComm Lib фирмы deepsoftware (http://www.deepsoftware.ru/nrcomm/index.html).
Оба набора компонент позволяют сделать все что мне надо в том числе и работу с ZMODEM"ом.
Поддержка и там и там работает молниеносно (ответ поступает в течении 10 минут).
И те и те компоненты поддерживают новейшие версии Делфи.
Остановился на nrComm, так как там больше других полезных компонент для работы с разными устройствами, а компонент для ком-порта поддерживает RS485.
Благодарю за обсуждение.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.07.26;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.006 c