![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.09.2008
Сообщений: 11
|
![]()
Как всем уже известно что кампания майкрасофт давно пытаеться исключить из жизни RS-232 (com-порт).но некоторые оборудование новые и старые еще работаю по этому интерфейсу. соответственно вносят новшества как RS-485 она делает из 4 проводов RS-232 в два провада RS-485 на этом интерфейсе работае НВП "БОЛИД" что меня интересует все что касаеть с этим интерфейсом RS-232 and 485.
к примеру я бы хотел узнать как у меня в memo высветиться прибор когда я подключу какое-нибудь оборудование будь это модем или еще какое нибудь чудо. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 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. Причина: Исправление исходника |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 07.09.2008
Сообщений: 11
|
![]()
люди НЕ ИГНОРИРУЙТЕ
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кросплатформенный интерфейс | 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 |