Показать сообщение отдельно
  #1  
Старый 15.01.2009, 00:15
Evgengold Evgengold вне форума
Прохожий
 
Регистрация: 14.01.2009
Сообщения: 5
Репутация: 10
По умолчанию 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 кГЦ при этом она не менялась даже при изменении сорости передачи порта!! Где ошибка?


СПАСИБО ВСЕМ!
Ответить с цитированием