|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
escapecommfunction и работа com портом
Привет СПЕЦАМ. Нужна ваша подсказка.
На com порт на вывод DTR нужно отправить последовательность 0 и 1 или точнее определенный массив данных состоящих из 1 и 0, и чтоб они передавались на com порт с определенной частотой. Для этого я делаю следующее: 1. Формирую нужный массив данных (размер массива >10000 символов) 2. Открываю com порт и Устанавливаю его параметры 3. С помощью функции escapecommfunction отправляю setDTR если 1 и clrDTR если 0 4. закрываю com порт код примерно такой Код:
.......... hCom = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ); DCB.BaudRate := 9600; DCB.ByteSize := 8; DCB.Parity := 0; DCB.StopBits := 1; for i:=0 to 20000 do begin escapecommfunction(hCom, setDTR); escapecommfunction(hCom, clrDTR); end; CloseHandle( hCom); !!! Вопрос 1. Что в итоге должно получится на com порте?- передача 1 и 0 со скоростью 9,6 кб/с или нет? Если нет то как реально организовать нужную последовательность с нужной скоростью? 2. Можно ли при передачи через DTR обходится без служебных символов типа стоп бита, бита четности, т.е. можно ли напрямую передать массив двоичной информации в чистом виде с опрделенной скоростью. PS. в реалии смотрел что происходит на осцилографе- при таком коде передавалась последовательность 1 и 0 с частотой около 50 кГЦ при этом она не менялась даже при изменении сорости передачи порта!! Где ошибка? СПАСИБО ВСЕМ! |
#2
|
|||
|
|||
а кто настройки применять будет? см SetCommState
правильный вопрос содержит в себе 90% ответа |
#3
|
|||
|
|||
настройки прменил все равно не помогает. Может есть какая нибудь функция которая дает точную задержку. И спомощью нее отрегулировать длительность CLRDTR и SETDTR?
|
#4
|
|||
|
|||
хм... таймауты для порта задать можно, но они задают максимальное время ожидания для операций чтения/записи.
есть у меня ощущение что когда напрямую сигналами управляешь порт скорость вообще игнорирует и состояние меняется практически моментально. стукнись после 20:00 сегодня в аську, номер будет у тебя в ПМ, подумаем правильный вопрос содержит в себе 90% ответа |
#5
|
|||
|
|||
Цитата:
надо делать свои задержки для каждого символа (точной скорости в винде не получишь ибо многозадачна!) 2. можно PS скорее всего код отрабатывал напрямую без задержке и частота получилась максимальная какую позволит дать проц с обвязкой винды, она большая , но нестабильная, стабильная будет только использована в драйвере ! |
#6
|
|||
|
|||
как сделать эти задержки?
|