Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

kpv19820

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

unit ComMainForm;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, CPort, CPortCtl;
 
type
  TForm1 = class(TForm)
    ComPort: TComPort;
    Memo: TMemo;
    Button_Open: TButton;
    Button_Settings: TButton;
    Edit_Data: TEdit;
    Button_Send: TButton;
    NewLine_CB: TCheckBox;
    Panel1: TPanel;
    Bt_Store: TButton;
    Bt_Load: TButton;
    ComLed1: TComLed;
    ComLed2: TComLed;
    ComLed3: TComLed;
    ComLed4: TComLed;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ComLed5: TComLed;
    ComLed6: TComLed;
    Label1: TLabel;
    Label6: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    procedure Button_OpenClick(Sender: TObject);
    procedure Button_SettingsClick(Sender: TObject);
    procedure Button_SendClick(Sender: TObject);
    procedure ComPortOpen(Sender: TObject);
    procedure ComPortClose(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
    procedure Bt_LoadClick(Sender: TObject);
    procedure Bt_StoreClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Buf: array[1..1024] of ansichar;
  i,ReadBytes: integer;
  str, s1, s: string;
  FileDir:String;  
  st: TstringList;
 
 
implementation
 
{$R *.DFM}
 function StringToHex(s: string): string;
var
  i: integer;
begin
  result := '';
  for i := 1 to Length(s) do
    result := result + IntToHex(ord(s[i]), 2);
end;
 
function HexToString(s: string): string;
var
  i: integer;
begin
  result := '';
  for i := 1 to Length(s) div 2 do
    try result := result + chr(StrToInt('$' + copy(s, i*2-1, 2)));
    except result := result + '?'; end;
end;
 
procedure TForm1.Button_OpenClick(Sender: TObject);
begin
  if ComPort.Connected then
    ComPort.Close
  else
    ComPort.Open;
 
    with ComPort do
       begin
        timeouts.ReadInterval:=50;
        timeouts.ReadTotalMultiplier:=70;
        timeouts.ReadTotalConstant:=100;
        timeouts.WriteTotalMultiplier:=60;
        timeouts.WriteTotalConstant:=100;
//        ComPort.BaudRate:=br11500;
     end;
end;
 
procedure TForm1.Button_SettingsClick(Sender: TObject);
begin
  ComPort.ShowSetupDialog;
end;
 
procedure TForm1.ComPortOpen(Sender: TObject);
begin
  Button_Open.Caption := 'Close';
end;
 
procedure TForm1.ComPortClose(Sender: TObject);
begin
  if Button_Open <> nil then
    Button_Open.Caption := 'Open';
end;
 
procedure SaveToFile(str:string;FileDir:String);
var
 f:TextFile;
// FileDir:String;
begin
// FileDir:='c:\log.txt';
AssignFile(f,FileDir);
if not FileExists(FileDir) then
 begin
  Rewrite(f);
  CloseFile(f);
 end;
Append(f);
Write(f,str);
Flush(f);
CloseFile(f);
end;
 
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
begin
 
 ReadBytes := ComPort.Read(Buf, Count);
  if ReadBytes < 0 then
    ShowMessage('Ошибка чтения из COM-порта')
  else
  begin
      for i := 1 to ReadBytes do
      begin
        if (IntToHex(Ord(Buf[i]),2)<>'0B') then
        begin
          if (IntToHex(Ord(Buf[i]),2)<>'1C') then s1:=s1 + Buf[i];
        end;
      end;
      //ShowMessage(s);
  end;
 
if (IntToHex(Ord(Buf[ReadBytes-1]),2)='1C') then
begin
st := TStringList.Create;
try
st.Delimiter := #13;
st.StrictDelimiter := True;
st.DelimitedText := s1;
  i:=0;
  for i := 0 to st.Count-2 do
  begin
   Memo.Text := Memo.Text + st[i]+#13#10;
  FileDir:='c:\log.txt';
  SaveToFile(st[i],FileDir);
  end;
finally
    st.Free;
end;
  s1:='';
  s:='';
  i:=0;
 
end;
 
end;
 
procedure TForm1.Bt_LoadClick(Sender: TObject);
begin
  ComPort.LoadSettings(stRegistry, 'HKEY_LOCAL_MACHINE\Software\Dejan');
//  ComPort.LoadSettings(stIniFile, 'e:\Test.ini');
end;
 
procedure TForm1.Bt_StoreClick(Sender: TObject);
begin
//  ComPort.StoreSettings(stIniFile, 'e:\Test.ini');
  ComPort.StoreSettings(stRegistry, 'HKEY_LOCAL_MACHINE\Software\Dejan');
end;
 
end.

Всего записей: 55 | Зарегистр. 07-12-2007 | Отправлено: 15:02 17-11-2017 | Исправлено: kpv19820, 15:03 17-11-2017
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru