Форум: "Основная";
Текущий архив: 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