Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Вниз

EOF для СОМ-порта   Найти похожие ветки 

 
AZ   (2003-08-16 09:09) [0]

Каков смысл для последовательного порта признак EOF при асинхронном обмене?
Наверное, это не передаваемый символ.
Тайм-аут? Если да, то по истечении какого времени, между байтами или общего?


 
Anatoly Podgoretsky   (2003-08-16 10:26) [1]

Это переводится как Конец Файла и используется согласно перевода


 
Юрий Зотов   (2003-08-16 10:34) [2]

Только предположение.

Передается символ ^Z (#26). Как его должен истолковать приемник - устанавливается протоколом обмена.


 
AZ   (2003-08-16 11:27) [3]

>Anatoly Podgoretsky © (16.08.03 10:26) [1]
Это мне известно.

>Юрий Зотов © (16.08.03 10:34) [2]
Для меня это неожиданно... что Windows так истолковывает этот код...
А как же с прозрачностью передаваемых кодов? Вдруг этот код пройдет в информационном блоке?


 
Marser   (2003-08-16 11:34) [4]


> Вдруг этот код пройдет в информационном блоке?

Так это же управляющий символ.


 
Anatoly Podgoretsky   (2003-08-16 11:45) [5]

AZ © (16.08.03 11:27) [3]
Никаких проблем, этот код не для двоичных данных, те должны передаваться по другому. В любом случае это определяется протоколом обмена.


 
AZ   (2003-08-16 11:51) [6]

>Anatoly Podgoretsky © (16.08.03 11:45) [5]
Повидимому, Вы имеете ввиду файлы типа Text?
А как для бинарных данных?


 
AZ   (2003-08-16 11:57) [7]

Я сейчас программирую девайс для СОМ-порта. Отсюда и эти вопросы.
Как лучше выдавать значения, в текстовом или бинарном виде, чтобы принимающей программе, работающей под Windows, было проще считать их, в текстовом или бинарном виде. Девайсу это не критично.


 
Юрий Зотов   (2003-08-16 11:57) [8]

> AZ © (16.08.03 11:27) [3]
> Windows так истолковывает этот код...

Это не Windows. IMHO, самой системе вообще глубоко по барабану что там передается, ее дело - передать и все. Все остальное должны обеспечить взамодействующие субъекты (сами, или через драйверы - неважно).

Я сделал такое предположение лишь потому, что стандартная трактовка символа ^Z - это как раз EOF (см. таблицу ASCII). Скажем, если ввести команду
copy con C:\MyFile.txt
то вводимые с клавиатуры символы будут напрямую записываться в файл C:\MyFile.txt до тех пор, пока не поступит символ ^Z - то есть, не будет нажато Ctrl+Z.

Но, конечно, на самом деле все определяет протокол обмена. В нем может быть оговорен и другой символ (или последовательность символов) со смыслом EOF, или ^Z может трактоваться как часть самих данных, или еще что угодно. В протоколе могут быть и оговорены действия сторон при поступлении EOF. В общем, надо смотреть спецификацию конкретного протокола, в ней все должно быть сказано. Если протокол неизвестен, то можно предположить, что это стандартный RS232 (поскольку речь все же идет о последовательном порте), а его спецификацию найти легко.


 
AZ   (2003-08-16 12:11) [9]

В том и фокус, что обмен 2-проводный, и сигналы DTR, CTS и прочие просто отсутствуют.
Отсюда и вопросы. Заказчики требуют, чтобы программа, принимающая данные, была как можно более простой.
Вроде
OpenFile(...);
ReadFile(...);
CloseFile(...);
Без использования DCB, таймаутов и прочего. Моих знаний в этой области просто нет.


 
Юрий Зотов   (2003-08-16 12:51) [10]

> AZ © (16.08.03 12:11) [9]

> Заказчики требуют, чтобы программа, принимающая данные, была
> как можно более простой.
> Вроде
> OpenFile(...);
> ReadFile(...);
> CloseFile(...);

При асинхронном обмене??? Тогда либо заказчик хочет луну с неба, либо надо делать синхронный обмен.

А двухпроводной обмен делает даже Norton Commander. Сам когда-то соединял Com-порты двух машин простыми проводочками. Насколько помню, 1-2, 2-1, 3-3 (1 и 2 - вход и выход, 3 - общий).


 
Anatoly Podgoretsky   (2003-08-16 12:51) [11]

AZ © (16.08.03 11:51) [6]
AZ © (16.08.03 11:57) [7]

Это исключительно определяется твоей задачей, пример с copy con C:\MyFile.txt показывет для чего это может быть искользовано, а двоичные данные неизвестной длины передаются по другому, сначала длина блока, затем данные и так много кратно, пока не поступит команда закрыть сеанс, ее как раз может быть и EOF.


 
AZ   (2003-08-16 12:58) [12]

Спасибо.
Распечатаю эти сообщения, и покажу заказчику.

А сделаю вывод из девайса символьным, с $0D $0A в конце строк, и впридачу с #26 в конце.


 
Anatoly Podgoretsky   (2003-08-16 13:08) [13]

Нет просто напиши свою реализацию ReadFile, двоичные данные тоже можно преобразовывать в символьные, смотри как это сделано в HTML или же если весь процесс под контролем, то уйти от понятия текстовый поток в сторону блочной передачи с управляющими командами, свой протокол, это как правило проще для подобных случаев, можно использовать и готовые протоколы, посмотри что тебе больше подойдет.


 
AZ   (2003-08-16 13:30) [14]

>Anatoly Podgoretsky © (16.08.03 13:08) [13]
Спасибо, учту.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
8-1515
NailMan
2003-05-05 15:17
2003.09.01
Сделать управление для CD_Player`a


14-1638
Knight
2003-08-11 10:53
2003.09.01
Текст из БД в MySql


14-1605
Дмитрий Терёхин
2003-08-13 18:41
2003.09.01
вопрос + работа


1-1472
Мак
2003-08-18 13:55
2003.09.01
Message


7-1697
MakNik
2003-06-18 12:43
2003.09.01
имя пользователя и организация





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский