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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2008, 15:14   #1
SLIMMUS
Пользователь
 
Регистрация: 07.09.2008
Сообщений: 11
По умолчанию RS-232 интерфейс

Как всем уже известно что кампания майкрасофт давно пытаеться исключить из жизни RS-232 (com-порт).но некоторые оборудование новые и старые еще работаю по этому интерфейсу. соответственно вносят новшества как RS-485 она делает из 4 проводов RS-232 в два провада RS-485 на этом интерфейсе работае НВП "БОЛИД" что меня интересует все что касаеть с этим интерфейсом RS-232 and 485.

к примеру я бы хотел узнать как у меня в memo высветиться прибор когда я подключу какое-нибудь оборудование будь это модем или еще какое нибудь чудо.
SLIMMUS вне форума Ответить с цитированием
Старый 07.09.2008, 15:26   #2
SLIMMUS
Пользователь
 
Регистрация: 07.09.2008
Сообщений: 11
По умолчанию

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
BCPort, ComCtrls, StdCtrls;

type
TSendForm = class(TForm)
BComPort1: TBComPort;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
ProgressBar1: TProgressBar;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure BComPort1TxEmpty(Sender: TObject);
private
{ Private declarations }
FBreak: Boolean;
FEmpty: Boolean;
public
{ Public declarations }
end;

var
SendForm: TSendForm;

implementation

{$R *.DFM}

procedure TSendForm.FormCreate(Sender: TObject);
begin
ComboBox1.ItemIndex := 6;
end;

procedure TSendForm.Button2Click(Sender: TObject);
begin
FBreak := True;
end;

procedure TSendForm.Button1Click(Sender: TObject);
var
F: TFileStream;
Buf: String;
N, PackSize, PackCount: Integer;
begin
FBreak := False;
BComPort1.BaudRate := TBaudRate(ComboBox1.ItemIndex);
if not BComPort1.Open then Exit; // Открываем порт
Button2.Enabled := True;
F := TFileStream.Create(OpenDialog1.File Name, fmOpenRead); // Открываем файл
try
// Определим размер и количество пакетов.
if F.Size <= BComPort1.OutBufSize then
begin
PackSize := F.Size; PackCount := 1;
end else
begin
PackSize := BComPort1.OutBufSize;
PackCount := F.Size div PackSize;
if (F.Size mod PackSize) > 0 then Inc(PackCount);
end;
ProgressBar1.Max := PackCount;
ProgressBar1.Position := 0;
N := 0; FEmpty := False;
// Передаем имя файла и его размер
BComPort1.WriteStr(ExtractFileName( OpenDialog1.FileName) + ':' +
IntToStr(F.Size) + '[BEGIN]');
repeat
repeat
// Ждем, пока выходной буфер не освободится или пользователь не прервет передачу
Application.ProcessMessages; Sleep(10);
until FEmpty or FBreak;
if FBreak then
// Пользователь прервал передачу. Ожидание конца передачи текущего пакета
begin
repeat
Application.ProcessMessages; Sleep(10);
until FEmpty;
Break;
end;
F.Seek(N * PackSize, soFromBeginning);
if (F.Size - F.Position) < PackSize then // Последний пакет
PackSize := F.Size - F.Position;
SetLength(Buf, PackSize);
F.Read(Buf[1], PackSize);
FEmpty := False;
BComPort1.WriteStr(Buf);
Inc(N);
ProgressBar1.Position := ProgressBar1.Position + 1;
until N = PackCount;
BComPort1.WriteStr('[END]'); // Строка, идентифицирующая конец передачи
finally
F.Free;
if BComPort1.Close then Button2.Enabled := False;
end;
end;

procedure TSendForm.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then Button1.Enabled := True;
end;

procedure TSendForm.BComPort1TxEmpty(Sender: TObject);
begin
FEmpty := True; // Все данные ушли из буфера порта, можно передавать еще пакет
end;

end.

Последний раз редактировалось SLIMMUS; 07.09.2008 в 15:27. Причина: Исправление исходника
SLIMMUS вне форума Ответить с цитированием
Старый 07.09.2008, 23:32   #3
SLIMMUS
Пользователь
 
Регистрация: 07.09.2008
Сообщений: 11
По умолчанию

люди НЕ ИГНОРИРУЙТЕ
SLIMMUS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кросплатформенный интерфейс neroZ Qt и кроссплатформенное программирование С/С++ 3 26.09.2008 23:06
Интерфейс [Smarik] Общие вопросы Delphi 16 18.06.2008 10:37
GUI интерфейс ben95 Общие вопросы Delphi 5 01.01.2008 16:57
Интерфейс!!! Oleg Romanchuk Свободное общение 8 25.10.2007 18:13