Беспроводная передача данных

Автор работы: Пользователь скрыл имя, 17 Мая 2012 в 18:08, дипломная работа

Краткое описание

Объектом исследования - является ЛВС, основанная на технологии Ethernet и ультразвуковой акустический тракт «ТРАК» фирмы “Votum”.
Цель работы - разработать программу на языке Delphi, для управления УЗ дефектоскопом с удаленного компьютера при помощи приложения «Клиент - Сервер».
В процессе работы проводились изучение работы ультразвукового акустического тракта «ТРАК».
В результате работы были расширены функциональные возможности УЗ дефектоскопа, в частности, разработано приложений типа «Клиент-Сервер», позволяющее удаленно управлять дефектоскопом и производить сбор данных через ЛВС

Содержание

Введение
Ультразвуковая дефектоскопия
1.1 Теневой метод ультразвуковой дефектоскопии
1.2 Эхо - импульсный метод ультразвуковой дефектоскопии
1.3 ''ТРАК'' Акустический модуль
Параллельный интерфейс: LPT-порт
2.1 Традиционный LPT-порт

Организации удаленного соединения.
3.1 Протоколы сети Интернет
3.2 Приложение Клиент-Сервер
Язык программирования - Delphi
4.1 Функциональные задачи при конструировании интерфейса
4.2 Компоненты среды программирования Delphi, использовынные для создания приложения «Клент-Сервер»
Заключение

Вложенные файлы: 1 файл

Перминов-диплом - исправления(Печать).doc

— 825.50 Кб (Скачать файл)

      timer1.Enabled:=true;

    end; 

    procedure TForm1.Button3Click(Sender: TObject);

    var

    a: byte;

    begin

      a:=3;

      if TcpClient1.Connect then

        begin

          TcpClient1.SendBuf(a, 1);

          TcpClient1.Disconnect;

        end

      else

        MessageDlg('Не  удалось связаться с сервером.', mtConfirmation, [mbOk], 0);

      timer1.Enabled:=false;

      Form1.Series1.Clear;

    end;

Продолжение программы Клиента 

    procedure TForm1.Button4Click(Sender: TObject);

    var

    a: byte;

    begin

      a:=2;

      if TcpClient1.Connect then

        begin

          TcpClient1.SendBuf(a, 1);

          TcpClient1.Disconnect;

        end

      else

        MessageDlg('Не удалось связаться с сервером.', mtConfirmation, [mbOk], 0);

      timer1.Enabled:=false;

    end; 

    procedure TForm1.TcpServer1Accept(Sender: TObject;

      ClientSocket: TCustomIpClient);

    begin

      if Activated=false then

        begin

          Activated:=true;

          timer1.Enabled:=true;

          ClientSocket.ReceiveBuf(Data, 1024);

          Activated:=false;

        end;

    end; 

Окончание программы Клиента 

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    var

    a: byte;

    begin

      TcpServer1.Active := false;

    end; 

    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

      if not Activated then

          Draw(Data);

    end; 

    end. 
     
     
     
     
     
     
     
     
     
     
     
     
     

Приложение Б

Программа Сервера 

    unit Unit1; 

    interface 

    uses

      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

      Dialogs, ExtCtrls, StdCtrls, Sockets, TeEngine, TeeFunci, Series,

      TeeProcs, Chart;

    Const

    GetBufferStatusTest = 1; 

    type

      DataBuffer = array[0..255] of integer;

      PDataBuffer = ^DataBuffer; 

      TForm1 = class(TForm)

        Timer1: TTimer;

        Host: TEdit;

        Port: TEdit;

        Label1: TLabel;

        Label2: TLabel;

        TcpClient1: TTcpClient;

        TcpServer1: TTcpServer;

        Button1: TButton;

        Button2: TButton;

        Button3: TButton;

   Продолжение программы Сервера 

    Button4: TButton;

        Chart1: TChart;

        Series1: TLineSeries;

        TeeFunction1: TAddTeeFunction;

        Port2: TEdit;

        Label3: TLabel;

        CheckBox1: TCheckBox;

        procedure FormCreate(Sender: TObject);

        procedure Timer1Timer(Sender: TObject);

        procedure Button1Click(Sender: TObject);

        procedure Button2Click(Sender: TObject);

        procedure Button3Click(Sender: TObject);

        procedure Button4Click(Sender: TObject);

        procedure TcpServer1Accept(Sender: TObject;

          ClientSocket: TCustomIpClient);

        procedure FormClose(Sender: TObject; var Action: TCloseAction); 

      private

        { Private declarations }

      public

        { Public declarations }

      end; 

    var

      Form1: TForm1;

      Data: DataBuffer; //Массив данных для размещения  контрольного сигнала

      PData: PDataBuffer;

   Продолжение программы Сервера

     

    Activated, //Флаг  обработки пакета

      ClientAvailable: boolean; //Флаг готовности аппаратуры

      Command,res: byte;//Буфер  для команд 

      function Init(): integer;   stdcall; external 'trak.dll' name 'Init';

      function StartGenerator(): integer;   stdcall; external 'trak.dll' name 'StartGenerator';

      function TrackPresent(): integer;   stdcall; external 'trak.dll' name 'TrackPresent';

      function GetDetectBuffer(VB: PDataBuffer): integer;   stdcall; external 'trak.dll' name 'GetDetectBuffer';

      function GetBufferStatus(): integer;   stdcall; external 'trak.dll' name 'GetBufferStatus'; 

    implementation 

    {$R *.dfm} 

    Procedure GetDetectBufferTest(var Data: PDataBuffer);

    var

      i: byte;

    begin

      res:=res+1;

      if res = 255 then res :=0;

      for i := 0 to 255 do

        Data^[i]:=round(255*sin(((i-res)/255)*3.14));

    end; 

   Продолжение программы Сервера 

    Procedure Draw(Data: PDataBuffer);//Процедура  обновления графика

    var

      i: byte;

    begin

      Form1.Series1.Clear;

      for i:=0 to 255 do

        Form1.Series1.AddXY(i,Data^[i]);

    end; 
     

    procedure TForm1.FormCreate(Sender: TObject);//Инициализация

    begin

      //Настройка  компонента-сервера и компонента-клиента  и их активация

      TcpClient1.RemoteHost := Host.Text;

      TcpClient1.RemotePort := Port.Text;

      TcpServer1.LocalPort := Port2.Text;

      TcpServer1.Active := True;

      Init();

      PData:=@Data;

      command:=0;   //Обнуление буфера команд

    end; 

    procedure TForm1.Timer1Timer(Sender: TObject); //Обработка тика таймера

    //Включает  себя проверку готовности аппаратуры  и ее активации при необходимости 

   Продолжение программы Сервера 

    //а также  просмотр буфера команд и выполнение  действий в соответствии с  содержанием

    //Здесь же  происходит оправка данных клиенту  в случае, если контакт установлен

    //Также сдесь  происходит отрисовка графика  на экране.

    begin

        case command of

        1: if GetBufferStatus <> 0 then

            begin

              GetDetectBuffer(PData);

              If CheckBox1.Checked then

                begin

                  if TcpClient1.Connect then

                    begin

                      TcpClient1.SendBuf(PData^, 1024);

                      TcpClient1.Disconnect;

                    end

                  else

                    begin

                      CheckBox1.Checked:=false;

                      MessageDlg('Не удалось связаться с  клиентом.', mtConfirmation, [mbOk], 0);

                    end;

                end;

                Draw(PData);

              StartGenerator();

            end;

        3: begin

   Продолжение программы Сервера

            

             Form1.Series1.Clear;

             res:=0;

           end;

        end;

    end; 

    //Изменить  занчения адреса и порта клиента. 

    procedure TForm1.Button1Click(Sender: TObject);

    begin

      TcpClient1.RemoteHost := Host.Text;

      TcpClient1.RemotePort := Port.Text;

      TcpServer1.LocalPort := Port2.Text;

    end; 

    procedure TForm1.Button2Click(Sender: TObject);

    begin

      command:=1; //Старт

    end; 

    procedure TForm1.Button3Click(Sender: TObject);

    begin

      command:=3; //Стоп

    end; 

    procedure TForm1.Button4Click(Sender: TObject);

    begin

      command:=2; //Пауза

   Окончание  программы Сервера 

    end; 

    //Обработка  входящих данных

    //Здесь происходит  установка флага занятости, чтобы  два запущенных процесса

    //Не пересекались  в общей для них области  данных(переменная command)

    procedure TForm1.TcpServer1Accept(Sender: TObject;

      ClientSocket: TCustomIpClient);

    begin

        if Activated=false then

        begin

          Activated:=true;

          ClientSocket.ReceiveBuf(command, 1);

          CheckBox1.Checked:=true;

          Activated:=false;

        end;

    end; 

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    begin

      TcpServer1.Active := false;//Деактивация сервера при закрытии формы.

    end;

    end.


Информация о работе Беспроводная передача данных