Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2013, 20:00   #21
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Код:
var
  ComPort: TComPort;
  Events: TComEvents;
 
begin
  ComPort := TComPort.Create(nil);
  try
    ComPort.Events := [];  // do not create monitoring thread
    ComPort.Open;  // open port
    Events := [evCTS, evDSR, evRLSD];  // define events to wait for
    ComPort.WaitForEvents(Events, nil, WaitInfinite);  // wait until at least one event happens
    if evCTS in Events then
 
      WriteLn('CTS Changed');  // CTS signal changed state
    ComPort.Close;  // close port
  finally
    ComPort.Free;
  end;
end;
Код взят из примера в help файле 2.63 и он не рабочий.Так как в версии 3.1 WaitForEvents отсутствует.Там есть толькоWaitForEvent,которая озвучена выше.Решил,забить на компонент пока.Да бы не плодить 135 никому,кроме меня,не нужных тем задам вопрос здесь.Решил потренироваться в консольном приложении.В итоге порт так и не был открыт.Все скомпелировалось,модуль Windows подключил.Вот часть кода:
Код:
program TestCom;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

var
 DCB   : TDCB;
 hPort : THandle;
begin
  // 1. Открываем порт
  hPort := CreateFile(PChar('COM15'),
                      GENERIC_READ + GENERIC_WRITE,
                      0, nil, 
                      OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  // 2. Контроль ошибок
  if hPort = INVALID_HANDLE_VALUE then begin
  Write('Error opening port');
  ReadLn;
   // Обнаружена ошибка,порт открыть не удалось
   exit;
  end;
Вот тут-то что не так?
Zadovatel вне форума Ответить с цитированием
Старый 26.08.2013, 20:27   #22
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,896
По умолчанию

COM порты с номером больше 9 именуются так
Код:
\\.\COMn
, где n номер порта
northener вне форума Ответить с цитированием
Старый 26.08.2013, 23:48   #23
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
COM порты с номером больше 9 именуются так
Код:
\\.\COMn
, где n номер порта
Большое спасибо за информацию.
Zadovatel вне форума Ответить с цитированием
Старый 27.08.2013, 18:24   #24
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Реализовал все на WinAPI.Всем,кто помогал и просто участвовал в обсуждении большое спасибо.В итоге компонент оказался кривым,либо до меня в нем кто-то ковырялся.
Zadovatel вне форума Ответить с цитированием
Старый 27.08.2013, 18:47   #25
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Почему у вас кот невкусный? - Просто Вы не умеете готовить котов.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.08.2013, 12:05   #26
I.V.Bunsha
Новичок
Джуниор
 
Регистрация: 29.08.2013
Сообщений: 1
По умолчанию

По порядку.
1). Во первых использовать System.Text - Not Delphy Way. Его для обратной совместимости оставили. И он с багом - иногда теряет концы файлов. Используйте TFileStream (кстати он отлично пишет/читает в COM-порт).
2). Метод Free есть всегда. Просто он объявлен в TObject и по гайду его трогать нельзя. Прямой вызов деструктора не рекомендуется: а вдруг у вас объект не создался?
I.V.Bunsha вне форума Ответить с цитированием
Старый 29.08.2013, 12:32   #27
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...есть хорошая альтернатива - FreeAndNil().

Почему всегда нужно использовать FreeAndNil вместо Free
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работать с компонентом CPort Yrok Компоненты Delphi 27 27.06.2012 10:02
Перевод в постфиксную форму в общем случае. Lasur Помощь студентам 1 17.03.2012 09:16
Компонент CPort ? z-wer Компоненты Delphi 1 29.06.2011 08:51
Автосохранение книги в общем доступе Chelentano Microsoft Office Excel 0 25.08.2009 13:10