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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
8-1516
Bill
2003-04-10 14:56
2003.09.01
Потеря Canvas


14-1633
Pavel74
2003-08-12 21:53
2003.09.01
Как можно больше строчек в MessageDlg поставить? :)


14-1609
Basja
2003-08-14 12:06
2003.09.01
Насчет вируса


14-1635
ZeroDivide
2003-08-13 08:03
2003.09.01
Что с форумом?


14-1570
Дремучий
2003-08-11 15:29
2003.09.01
Нужны учебники в електронном виде!