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

•  DeLiKaTeS Tetris (Тетрис)  3 788

•  TDictionary Custom Sort  5 902

•  Fast Watermark Sources  5 703

•  3D Designer  8 478

•  Sik Screen Capture  6 037

•  Patch Maker  6 481

•  Айболит (remote control)  6 474

•  ListBox Drag & Drop  5 338

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

•  Графические эффекты  6 677

•  Рисование по маске  5 801

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

•  Canvas Drawing  5 236

•  Рисование Луны  4 959

•  Поворот изображения  4 505

•  Рисование стержней  3 187

•  Paint on Shape  2 434

•  Генератор кроссвордов  3 308

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

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

•  Пазл Numbrix  2 249

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

•  Игра HIP  1 879

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

•  Симулятор лифта  2 131

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

•  Генератор лабиринта  2 296

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

•  HEX View  2 294

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

 
скрыть

  Форум  

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

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



Delphi Sources

Компонент для последовательного устройства (TRS232)



Просыпается программист с большого бодуна, поворачивается, а рядом какая-то девушка лежит.
- Ooрs, обнаружено новое устройство...

Компонент, который представлен здесь, выполняет функции синхронного чтения и записи в последовательный интерфейс RS232.

В цикле выполняется Application.ProcessMessages, чтобы все сообщения от основной программы обрабатывались.

Ниже приведён метод ReadString из компонента TRS323:


function TRS232.ReadString(var aResStr: string; aCount: word ): boolean;
var
  nRead: dword;
  Buffer: string;
  Actual, Before: TDateTime;
  TimeOutMin, TimeOutSec, lCount: word;
begin
  Result := false;
  if not Connected then
    if not Connect then
      raise Exception.CreateHelp('RS232.ReadString:' +
      ' Connect not possible !', 101);
  aResStr := '';
  TimeOutMin:=TimeOut div 60;
  TimeOutSec:=TimeOut mod 60;
  if (not Connected) or (aCount <= 0) then
    EXIT;
  nRead := 0; lCount := 0;
  Before := Time;
  while lCount < ACOUNT do
  begin
    Application.ProcessMessages;
    SetLength(Buffer,1);
    if ReadFile( FComPortHandle, PChar(Buffer)^, 1, nRead, nil) then
    begin
      if nRead > 0 then
      begin
        aResStr := aResStr + Buffer;
        inc(lCount);
      end;
      Actual := Time;
      if Actual-Before>EncodeTime(0, TimeOutMin, TimeOutSec, 0) then
        raise Exception.CreateHelp('RS232.ReadString: TimeOut !', 103);
    end
    else
    begin
      raise Exception.CreateHelp('RS232.ReadString: Read not possible !', 104);
    end;
  end;
  Result:=true;
end;





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

Расширение компонента TEdit

Компонент TDBF

Нейросеть для распознавания образов

Механизм станка качалки для нефти

 

Весы для взвешивания

Кувшины для воды

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




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

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