Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.26;
Скачать: CL | DM;

Вниз

Работа по протоколу 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 и получить содержимое текущей папки.

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

Если просто считать байты пришедшие в ответ на команду, то они будут содержать эскейп последовательности:
[           dmesg       head        mkfifo      rm          top
[[          dosfsck     hostname    mkfs.ext2   rmdir       touch


Если я правильно понял, то мне, для моей задачи, достаточно удалить эти последовательности и всё. Кажется (и я уже попробовал — работает) это просто сделать с помощью регулярных выражений.
Но тут я беспокоюсь, как бы не удалить лишнего. Или может просто удаления недостаточно?

Еще мне надо уметь скачать файл. Для этого, если я правильно понял, используется (может использоваться) протокол 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]

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

          

То достаточно сделать несложный фильтр-эмулятор 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.011 c
2-1243515247
Int23
2009-05-28 16:54
2009.07.26
Как быстро повернуть Bitmap на 90 градусов


2-1243446563
Eugene1501
2009-05-27 21:49
2009.07.26
Сжатие данных в Delphi стандартными компонентами


15-1242565400
TUser
2009-05-17 17:03
2009.07.26
С.Г. Рубин. Устройство нашей Вселенной.


15-1242852156
Германн
2009-05-21 00:42
2009.07.26
Копирование таблицы из pdf в doc


15-1242846791
Anatoly Podgoretsky
2009-05-20 23:13
2009.07.26
Поговорим об ForeFront Client Security