Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Работа с СОМ портом как правильно работать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
tviktor tviktor вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.04.2007
По умолчанию Работа с СОМ портом как правильно работать - 31.10.2008, 11:36

Кто нибуть писал программы работы с СОМ портом , я так понял что для их работы необходима компонента VaComm и где ее взять.
Ответить с цитированием
  (#2 (permalink)) Старый
ALLex ALLex вне форума
Member
 
Сообщений: 192
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.07.2004
По умолчанию 31.10.2008, 11:39

Работал, наличие какого-либо компонента не является обязательным условием. Все можно сделать стандартными средствами.
Ответить с цитированием
  (#3 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,247
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 01.11.2008, 00:58

Такие темы на форуме возникают с завидной регулярностью. Воспользуйтесь поиском, немало и я сам писал.

Вкратце:
COM-порт открывается/закрывается/читается/пишется как обычный файл, теми же фунуциями API: CreateFile/CloseHandle/ReadFile/WriteFile. Дополнительные настройки выполняются функциями SetCommStat и SetCommTimeouts. Этого вполне достаточно для простого протокола обмена.
Ответить с цитированием
  (#4 (permalink)) Старый
tviktor tviktor вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.04.2007
По умолчанию 01.11.2008, 06:11

Да но я в этом деле новичек ,где находятся фунции API в делфи 7,может есть у кого нибуть написанная компонента.
Ответить с цитированием
  (#5 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 01.11.2008, 06:30

Цитата:
Да но я в этом деле новичек
В гугле чтоли? Там все просто - google.com

P.S. Имхо - компонент для COM порта - извращение
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Guzilas Guzilas вне форума
Member
 
Сообщений: 80
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2008
По умолчанию 01.11.2008, 08:24

Цитата:
В гугле чтоли? Там все просто - google.com
В Win API а не в тваем гугле.

Цитата:
P.S. Имхо - компонент для COM порта - извращение
Из тваих слов следует что тот кто пишет компоненты извращениц, еслиб небыло компонентов баюсь даже притставить сколько бы времени ушлобы скажем на простенький редактор не говоря уже а крупных проектах
Ответить с цитированием
  (#7 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 01.11.2008, 11:49

Цитата:
В Win API а не в тваем гугле.
Если бы в моём Каждый из директоров гугла в прошлом году получил зарплату в $1 миллиард(!)

Цитата:
Из тваих слов следует что тот кто пишет компоненты извращениц, еслиб небыло компонентов баюсь даже притставить сколько бы времени ушлобы скажем на простенький редактор не говоря уже а крупных проектах
В QT компонентов нет, но редактор всё же можно сделать за разумное время. То же и в MFC
Ответить с цитированием
  (#8 (permalink)) Старый
Guzilas Guzilas вне форума
Member
 
Сообщений: 80
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.10.2008
По умолчанию 01.11.2008, 12:08

Цитата:
редактор всё же можно сделать за разумное время. То же и в MFC
Даже графический как фотожоп ! К тамуже разумное время понятие растежимое у каждова свае
Ответить с цитированием
  (#9 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 03.11.2008, 03:38

Цитата:
Даже графический как фотожоп !
Я и не знал, что он на Delphi...
Ответить с цитированием
  (#10 (permalink)) Старый
AfIS AfIS вне форума
Member
 
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
По умолчанию 03.11.2008, 15:03

Гы! Смешно тут у вас... Словоблудия всякие забавные...

Компоненты такие есть. Например CPort. Он находится в Яндексе и в Гугле. На всякий случай, - ни Яндекс, ни Гугл не принадлежит и мне тоже, к сожалению.

Инфы в нете - море! Запросы типа "как работать с COM-портом" определённо помогут. Мне помогли. У меня была дипломная работа, в которой одной из задач было сопряжение микроконтроллера (Atmel AVR) с компом. Всё получилось.
Ответить с цитированием
  (#11 (permalink)) Старый
tviktor tviktor вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.04.2007
По умолчанию 05.11.2008, 03:06

Цитата:
Гы! Смешно тут у вас... Словоблудия всякие забавные...

Компоненты такие есть. Например CPort. Он находится в Яндексе и в Гугле. На всякий случай, - ни Яндекс, ни Гугл не принадлежит и мне тоже, к сожалению.

Инфы в нете - море! Запросы типа "как работать с COM-портом" определённо помогут. Мне помогли. У меня была дипломная работа, в которой одной из задач было сопряжение микроконтроллера (Atmel AVR) с компом. Всё получилось.
Да мне какраз это и надо сделать, компоненту я нашел только для делфи 5, теперь еще саму делфи 5 найти. А ты случеем не из ДВГТУ.
В API я полный ноль если кто сможет поставте на путь истенный.
Ответить с цитированием
  (#12 (permalink)) Старый
AfIS AfIS вне форума
Member
 
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
По умолчанию 05.11.2008, 04:43

Цитата:
Да мне какраз это и надо сделать, компоненту я нашел только для делфи 5, теперь еще саму делфи 5 найти. А ты случеем не из ДВГТУ.
В API я полный ноль если кто сможет поставте на путь истенный.
Год как диплом защитил. Ты тамже учишся? ИРИЭТ?

Вот как выберу время, да как найду папку с дипломом! Там это есть. Посмотрю, в общем...
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
AfIS AfIS вне форума
Member
 
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
По умолчанию 10.11.2008, 07:34

Ещё нужно?
Материал нашёл, но его надо перерабатывать. Если тебе уже сильно не надо, то я и не стану этого делать.
Ответить с цитированием
  (#14 (permalink)) Старый
tviktor tviktor вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.04.2007
По умолчанию 10.11.2008, 11:56

Да я уже 9 лет как закончил,да еще нужен, мнеб исходники программы.
Ответить с цитированием
  (#15 (permalink)) Старый
AfIS AfIS вне форума
Member
 
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
По умолчанию 12.11.2008, 05:54

Вот необходимая и достаточная выжимка.
Я думаю, всё должно быть понятно.
Код:
type
 TForm1 = 
 private
   procedure Connect;
   procedure Disconnect;
   procedure OnAppIdle(Sender: TObject; var Done: Boolean); 
   procedure SendBuf(var Buf; const Size: Cardinal);

   FPort: THandle;
   FDCB: TDCB;
   FStat: TComStat;
 end;  

procedure TForm1.FormCreate(Sender: TObject);
begin
  FPort := INVALID_HANDLE_VALUE;
  Application.OnIdle := OnAppIdle;
  ...
  ...
end;

procedure TForm1.Connect;
begin
  Disconnect;
    
  FPort := CreateFile('COM1', GENERIC_READ or GENERIC_WRITE, 0, nil ,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if FPort <> INVALID_HANDLE_VALUE then begin
    SetCommMask(FPort, EV_RXFLAG);
    GetCommState(FPort, FDCB);
    FDCB.BaudRate := CBR_115200;
    FDCB.Parity := NOPARITY;
    FDCB.ByteSize := 8;
    FDCB.StopBits := OneStopBit;
    if not SetCommState(FPort, FDCB) then begin
      MessageDlg('Невозможно задать парамерты порта', mtError, [mbOk], 0);
      CloseHandle(FPort);
      FPort := INVALID_HANDLE_VALUE;
    end else begin
      PurgeComm(FPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR);
    end;
  end;
end;

Procedure TForm1.Disconnect;
begin
  if FPort <> INVALID_HANDLE_VALUE then begin
    CloseHandle(FPort);
    FPort := INVALID_HANDLE_VALUE;
  end;
end;

procedure TForm1.OnAppIdle(Sender: TObject; var Done: Boolean);
var
  P: Pointer;
  BR: Cardinal;
begin
  if FPort <> INVALID_HANDLE_VALUE then begin
    ClearCommError(FPort, FErrs, @FStat);
    GetMem(P, FStat.cbInQue);
    ReadFile(FPort, P^, FStat.cbInQue, BR, nil);
    //
    //Тут обрабатываем данные в P
    //
    FreeMem(P);
    Done:=False;
  end;
end;

procedure TForm1.SendBuf(var Buf; const Size: Cardinal);
var
  BW: Cardinal;
begin
  if FPort <> INVALID_HANDLE_VALUE then begin
    WriteFile(FPort, Buf, Size, BW, nil);
  end;
end;
Отправляем данные с пом. SendBuf.
Получаем данные, постоянно опрашивая порт на наличие данных в буфере приёма. Это делает OnAppIdle. В моём примере эта процедура посажена на Application.OnIdle.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с изображением как правильно с ним работать Верона Delphi 4 17.05.2011 18:53
Работа с Com-портом Денис2000 WinAPI 4 05.12.2010 20:26
Работа с последовательным портом myshansun Сетевое программирование 8 15.08.2009 00:26
Работа с окнами как правильно работать OKSI55 Assembler 0 20.05.2008 23:15
Работа с функцией как правильно работать -=GriFon=- С/С++ 8 05.05.2008 20:20
Работа с COM-портом Dynamite Pascal 19 30.12.2007 12:02
Работа с Com-портом Chelentano Железо. Написание драйверов 5 01.03.2006 20:09
Работа с параллельным портом Poker Visual C++ 10 20.10.2005 10:29
Работа с ком-портом matvey1981 С/С++ 1 20.09.2005 17:09
Работа с СОМ портом Supermario C++ Builder 8 07.07.2005 22:20
Работа с IRC в С++ как правильно работать St@lker С/С++ 2 04.07.2004 23:06
Работа с LPT-портом sag C++ Builder 1 05.08.2003 01:49



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов