Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Работа с com-портом в Делфи при помощи драйвера AsyncFree104

COM-порт

В этой статье рассматривается пример работы с компонентами Delphi для работы с Com-портом из библиотеки AsyncFree104, которые можно скачать по адресу http://sourceforge.net/projects/asyncfree/.../download?use_mirror=ovh.

Для установки необходимо извлечь файлы из архива и необходимые версии скопировать в папку с установленной Delphi в директорию LIB (у меня это C:Program Files/BorlandDelphi7/Lib) и из нее запустить AsyncFreeD?.dpk, где ? — ваша версия Delphi.

После установки в палитре компонентов в конце должна появиться вкладка под соответствующим названием со следующими компонентами: AfDataEdit, AfComPort, AfDataDispatcher, AfDataTerminal, AfPortComboBox, AfPortRadioGroup, AfLineViewer, AfFileViewer, AfTerminal. Непосредственно для работы с портом нам будут нужны только AfComPort, AfDataDispatcher, AfDataTerminal, AfPortComboBox, AfPortRadioGroup.

AfComPort — это драйвер порта с возможностью гибкой настройки параметров порта, таких как скорость потока, битов данных, чётности, управления потоком и размеров входного и выходного буферов. Установив на форму этот компонент, в программном коде можно использовать ряд полезных функций для работы с портом.

AfComPort1.SettingsStr — для вывода строки с текущими параметрами настроек порта. Например:

Form1.Memo1.lines.Add(AfComPort1.SettingsStr)

В результате в мемо появиться строка: COM1: 9600,N,8,1.

AfComPort1.ReadString — считывает строку из буфера порта. Очень удобно для работы со многими измерительными устройствами. Функции AfComPort1.Open и AfComPort1.Close открывают и закрывают текущий порт.

AfComPort1.WriteString('Hello world') — посылает в порт строку "Hello world". Если нужно также передавать символы окончания строки, таких как возврат каретки или переход на строку, что может быть актуально для отсылки строчных команд какому нибудь прибору, то следует добавлять соответствующие символы по кодировке ASCII:

AfComPort1.WriteString('Hello World'+#13+#10)

Еще для компонента прописан метод AfComPort1DataRecived, который реализует непрерывное считывание данных с порта посредством создание потока, что не тормозит работу программы, если нужно. Специфика его работы состоит в том, что можно указать количество принимаемых символов.

AfDataDispatcher — это, собственно говоря, диспетчер порта для более удобного использования. У него также есть функции чтения и записи, но в качестве провайдера надо указать AfComPort, предварительно установив его на форму.

AfDataTerminal — это терминал для отображения полученных и отправленных через него данных. Он работает, когда на форме есть AfDataDispatcher и в свойствах он указан.

AfPortComboBox — это удобный компонент, выполненный соответственно в виде ComboBox. Его преимущество в том, что он автоматически при запуске программы перечисляет все порты как физические, так и виртуальные порты в системе. Для работы с компонентом в свойствах следует отметить положенный в на форму AfComPort.

AfPortRadioGroup — это компонент в виде радио группы и работает по такому же принципу. Количество портов можно указать произвольное в зависимости от потребностей.

В качестве работающего примера можно привести простой терминал с формой, на которой будут установлены следующие компоненты: AfComPort, AfDataDispatcher, AfDataTerminal, AfPortComboBox и одна кнопка с Edit для отправки строк.

unit Unit1;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, AfViewers, AfDataTerminal, AfPortControls,
  AfDataDispatcher, AfComPort;

type
  TForm1 = class(TForm)
    AfComPort1: TAfComPort;
    AfDataDispatcher1: TAfDataDispatcher;
    AfPortComboBox1: TAfPortComboBox;
    AfDataTerminal1: TAfDataTerminal;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
AfComPort1.WriteString(Edit1.Text+#13+#10);
end;

end.

Автор: Baby2011, специально для xBB.uz, 01.10.2011


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2011-10-01 09:34:31

Метки материала: com, делфи, работа с com, работа с com-портом, работа с com-портом в делфи, драйверы, драйвер, программные решения, com-порт, по, разработка по, программирование, программное обеспечение, software, программное обеспечение по, документация для программиста


4 комментария

07.10.2016 17:06:01 #
Google Chrome Гость последователь
Всё разобрался. Спасибо за компоненты. Просто и понятно если мозг включить Well
07.10.2016 14:51:47 #
Google Chrome Гость последователь
Попробовал на D7 под Win7
окрытие порта -
при запуске из Delphi пишет:
"....Invalid port number (COM0) ....."
при выводе строки: - ошибка записи запрос:13  -перевод
----------
подскажите кто разобрался - автор что то молчит.
09.12.2015 18:17:02 #
Mozilla Firefox Гость Svist
Как выводить в edit? Delphi 7
28.04.2012 23:11:42 #
Opera Гость Plankin
У меня при обновлении показало ошибку [Фатальная Ошибка] Could not create output file 'd:\program files\borland\delphi7\Projects\Bpl\AsyncFreeD7.bpl'

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.