Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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 и получить содержимое текущей папки.

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

Если просто считать байты пришедшие в ответ на команду, то они будут содержать эскейп последовательности:
[           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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.6 MB
Время: 0.006 c
15-1242822099
easy
2009-05-20 16:21
2009.07.26
Переезд PDA-шлюза dmgate


2-1243515247
Int23
2009-05-28 16:54
2009.07.26
Как быстро повернуть Bitmap на 90 градусов


15-1242893418
makvell
2009-05-21 12:10
2009.07.26
Вопрос знатокам oracle


2-1243316725
deras
2009-05-26 09:45
2009.07.26
Как создать письмо с вложением?


15-1242798394
palva
2009-05-20 09:46
2009.07.26
Сегодня умер Олег Янковский





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский