Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  1 688

•  TDictionary Custom Sort  4 277

•  Fast Watermark Sources  3 945

•  3D Designer  6 108

•  Sik Screen Capture  4 209

•  Patch Maker  4 756

•  Айболит (remote control)  4 670

•  ListBox Drag & Drop  3 808

•  Доска для игры Реверси  90 575

•  Графические эффекты  5 002

•  Рисование по маске  4 034

•  Перетаскивание изображений  3 375

•  Canvas Drawing  3 690

•  Рисование Луны  3 480

•  Поворот изображения  3 008

•  Рисование стержней  2 632

•  Paint on Shape  2 023

•  Генератор кроссвордов  2 791

•  Головоломка Paletto  2 213

•  Теорема Монжа об окружностях  2 913

•  Пазл Numbrix  1 973

•  Заборы и коммивояжеры  2 571

•  Игра HIP  1 592

•  Игра Go (Го)  1 521

•  Симулятор лифта  1 801

•  Программа укладки плитки  1 546

•  Генератор лабиринта  1 914

•  Проверка числового ввода  1 674

•  HEX View  1 855

•  Физический маятник  1 687

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Посылать и считывать данные с COM порта, а также менять параметры (биты данных, четность)



Автор: Iouri

Ниже представлен класс для работы с COM-портом. Протестирован в Windows 95. Класс выдернут из контекста, так что не ручаюсь в компиляции с первого раза, однако все функции работы с COM очевидны.


unit Unit1;

interface

uses
  Windows;

type
  TComPort = class
  private
    hFile: THandle;
  public
    constructor Create;
    destructor Destroy; override;
    function InitCom(BaudRate, PortNo: Integer; Parity: Char;
      CommTimeOuts: TCommTimeouts): Boolean;
    procedure CloseCom;
    function ReceiveCom(var Buffer; Size: DWORD): Integer;
    function SendCom(var Buffer; Size: DWORD): Integer;
    function ClearInputCom: Boolean;
  end;

implementation

uses
  SysUtils;

constructor TComPort.Create;
begin
  inherited;
  CloseCom;
end;

destructor TComPort.Destroy;
begin
  CloseCom;
  inherited;
end;

function TComPort.InitCom(BaudRate, PortNo: Integer; Parity: Char;
  CommTimeOuts: TCommTimeouts): Boolean;
var
  FileName: string;
  DCB: TDCB;
  PortParam: string;
begin
  result := FALSE;
  FileName := 'Com' + IntToStr(PortNo); {имя файла}
  hFile := CreateFile(PChar(FileName),
    GENERIC_READ or GENERIC_WRITE, 0, nil,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if hFile = INVALID_HANDLE_VALUE then
    exit;

  //установка требуемых параметров
  GetCommState(hFile, DCB); //чтение текущих параметров порта
  PortParam := 'baud=' + IntToStr(BaudRate) + ' parity=' + Parity +
    ' data=8 stop=1 ' +
    'octs=off';
  if BuildCommDCB(PChar(PortParam), DCB) then
  begin
    result := SetCommState(hFile, DCB) and
      SetCommTimeouts(hFile, CommTimeOuts);
  end;
  if not result then
    CloseCom;
end;

procedure TComPort.CloseCom;
begin
  if hFile < > INVALID_HANDLE_VALUE then
    CloseHandle(hFile);
  hFile := INVALID_HANDLE_VALUE;
end;

function TComPort.ReceiveCom(var Buffer; Size: DWORD): Integer;
var
  Received: DWORD;
begin
  if hFile = INVALID_HANDLE_VALUE then
    raise Exception.Create('Не открыта запись в Com порт');
  if ReadFile(hFile, Buffer, Size, Received, nil) then
  begin
    Result := Received;
  end
  else
    raise Exception.Create('Ошибка приема данных: ' + IntToStr(GetLastError));
end;

function TComPort.SendCom(var Buffer; Size: DWORD): Integer;
var
  Sended: DWORD;
begin
  if hFile = INVALID_HANDLE_VALUE then
    raise Exception.Create('Не открыта запись в Com порт');
  if WriteFile(hFile, Buffer, Size, Sended, nil) then
  begin
    Result := Sended;
  end
  else
    raise Exception.Create('Ошибка передачи данных: ' + IntToStr(GetLastError));
end;

function TComPort.ClearInputCom: Boolean;
begin
  if hFile = INVALID_HANDLE_VALUE then
    raise Exception.Create('Не открыта запись в Com порт');
  Result := PurgeComm(hFile, PURGE_RXCLEAR);
end;

end.





Похожие по теме исходники

DBLookupComboBox in StringGrid

e-Bay Commerce

Fractal Compression

Easy Compress Jpg

 

Component TClock

Component ZSImage

Compare Algo Circles

SMTP Component

 

fwIoCompletionPipe




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте