Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> управление потоком 
:(
    Опции темы
Namtar
  Дата 19.11.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 24.9.2008

Репутация: нет
Всего: нет



есть прога для передачи данных по COM-порту. вроде данные передает (проверял специальной прогой для COMа), но что-то явно не так! думаю дело в управлении потоком. прочитал вот такую штуку http://www.delphikingdom.com/asp/viewitem.asp?catalogid=389 возможно загвоздка именно в неправильных настройках передачи. вот только у меня в настройках DCB нету и половины настроек, описанных в статье. поможите плиз как можно все-таки поработать с этими DTR и RTS control-ами?!
PM MAIL   Вверх
dvamaster
Дата 20.11.2008, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 2
Всего: 10



Приведи кусок кода с настройками и передачей


--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
Namtar
Дата 20.11.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 24.9.2008

Репутация: нет
Всего: нет



procedure TForm1.PortInit;
 var
 port: string;
  begin
  port:='\\.\'+combobox3.Text;    
  CommHandle := CreateFile(PChar(port),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,
         FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0); // пишем в порт
    SetCommMask(CommHandle,EV_RXCHAR);

   GetCommState(CommHandle,DCB);

   DCB.DCBlength := SizeOf(TDCB);

   if form1.ComboBox4.Text='1200' then DCB.BaudRate:=CBR_1200;
   if form1.ComboBox4.Text='2400' then DCB.BaudRate:=CBR_2400;
   if form1.ComboBox4.Text='4800' then DCB.BaudRate:=CBR_4800;
   if form1.ComboBox4.Text='9600' then DCB.BaudRate:=CBR_9600;
   if form1.ComboBox4.Text='14400' then DCB.BaudRate:=CBR_14400;
   if form1.ComboBox4.Text='19200' then DCB.BaudRate:=CBR_19200;
   if form1.ComboBox4.Text='38400' then DCB.BaudRate:=CBR_38400;
   if form1.ComboBox4.Text='57600' then DCB.BaudRate:=CBR_57600;
   if form1.ComboBox4.Text='115200' then DCB.BaudRate:=CBR_115200;
   if form1.ComboBox4.Text='256000' then DCB.BaudRate:=CBR_256000;

   if form1.ComboBox1.Text='NO' then DCB.Parity:=NOPARITY;
   if form1.ComboBox1.Text='ODD' then DCB.Parity:=ODDPARITY;
   if form1.ComboBox1.Text='EVEN' then DCB.Parity:=EVENPARITY;
   if form1.ComboBox1.Text='MARK' then DCB.Parity:=MARKPARITY;
   if form1.ComboBox1.Text='SPACE' then DCB.Parity:=SPACEPARITY;

   if form1.ComboBox2.Text='5' then DCB.ByteSize:=5;
   if form1.ComboBox2.Text='6' then DCB.ByteSize:=6;
   if form1.ComboBox2.Text='7' then DCB.ByteSize:=7;
   if form1.ComboBox2.Text='8' then DCB.ByteSize:=8;

   if form1.ComboBox5.Text='1' then DCB.StopBits:=OneStopBit;
   if form1.ComboBox5.Text='1,5' then DCB.StopBits:=One5StopBits;
   if form1.ComboBox5.Text='2' then DCB.StopBits:=TwoStopBits;

   SetCommState(CommHandle,DCB);

   CommThread := TCommThread.Create(True); 
   if CommThread = nil then
      begin
      //ошибка, все выключаем и выходим
      Application.MessageBox('Ошибка инициализации потока', 'Ошибка', MB_OK);
      Form1.Button3.Click;
      Exit;
      end;
   CommThread.Priority:=tplowest;    
   CommThread.Resume;

  end;


хочу к этому привязать возможность устанавливать DTR и RTS control-ы!
PM MAIL   Вверх
Virtuals
Дата 20.11.2008, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



это то что ты хочеш?
ручками взводить сигналы?...
Цитата

Функция EscapeCommFunction

     Описание:
 function EscapeCommFunction(Cid, Func: Integer): Integer;

     Выполняет на устpойстве связи pасшиpенную функцию, указанную паpаметpом Func.

     Паpаметpы:
     Cid: Устpойство связи.
     Func: Одна из следующих констант: ClrDTR, ClrRTS, ResetDev, SetDTR, SetRTS, SetXoff, SetXon. См. "Константы пеpеключения связи".

     Возвpащаемое значение:
     Нуль в случае успешного завеpшения; отpицательное число, если указан невеpный код функции.



PM MAIL ICQ   Вверх
Namtar
Дата 23.11.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 24.9.2008

Репутация: нет
Всего: нет



EscapeCommFunction это конечно хорошо, но необходимо получить возможность в программе выбирать тип DTR и RTS, а с EscapeCommFunction нельзя сделать handshake и toggle
PM MAIL   Вверх
Virtuals
Дата 23.11.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



Namtar
оно?
Код

procedure TComm32.fPUTFLOWCONTROL(FC:TFlowControl);
begin
case FC of
       fcNone:begin
               ConfigDCB.Flags:=ConfigDCB.Flags and not DWORD(768);
               ConfigDCB.Flags:=ConfigDCB.Flags and not DWORD(8196);
              end;
   fcHardware:begin
               ConfigDCB.Flags:=ConfigDCB.Flags and not DWORD(768);
               ConfigDCB.Flags:=ConfigDCB.Flags or 8196;
              end;
   fcSoftware:begin
               ConfigDCB.Flags:=ConfigDCB.Flags and not DWORD(8196);
               ConfigDCB.Flags:=ConfigDCB.Flags or 768;
              end;


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1220 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.