//------------------------------------------------------------------------------ // Spectroscopy Vers. 12.April 2012 //------------------------------------------------------------------------------ // Delphi 7 Prof. // Komponenten: Comport411 + TXYGraph //------------------------------------------------------------------------------ // unit ComMainForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, CPort, CPortCtl, Graph; type TForm1 = class(TForm) ComPort: TComPort; Memo: TMemo; Button_Open: TButton; Edit_Data: TEdit; Button_Send: TButton; GroupBox1: TGroupBox; Bt_Store: TButton; Bt_Load: TButton; NewLine_CB: TCheckBox; Button_Settings: TButton; Button1: TButton; XYGraph1: TXYGraph; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; 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 ComPortRxFlag(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; wert_string : array[1..2200] of string; wert_num : array[1..2200] of integer; offset, gain : integer; implementation {$R *.DFM} procedure TForm1.FormShow(Sender: TObject); begin // end; // On EventFlag bei Char 'e' = Ende der Daten procedure TForm1.ComPortRxFlag(Sender: TObject); var a,b,s : string; i : Longword ; j, n , H , code : integer; begin b := ''; i := 0; j := 0; repeat i := i + 1; a := copy(Memo.Text,i,1); if (a <> #10) and (a <> #13) then b := b + a; if a = #13 then begin j := j + 1; wert_string[j] := b; if j > 5 then begin n := StrToInt(wert_string[j]); wert_num[j] := n; //ListBox1.Items.Add(IntToStr(n)); end; b := ''; end; until a = 'e'; // Graph ----------------------------------------------- Val(Edit1.Text, offset, Code); Val(Edit2.Text, gain, Code); XYGraph1.DeleteCurve(0); H:=XYGraph1.MakeCurve('Sinus',clLime,1,psSolid,True); for i := 6 to 512 do XYGraph1.AddPoint(H,I,(256 - (wert_num[i]*gain)-offset)); XYGraph1.Paint; Button_Send.Click ; end; procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer); var Str: String; begin ComPort.ReadStr(Str, Count); Memo.Text := Memo.Text + Str; end; procedure TForm1.Button_SendClick(Sender: TObject); var Str: String; begin memo.Clear; //Listbox1.Clear; Str := Edit_Data.Text; if NewLine_CB.Checked then Str := Str + #13#10; ComPort.WriteStr(Str); // Exposure Zeit senden end; procedure TForm1.Button_OpenClick(Sender: TObject); begin if ComPort.Connected then begin ComPort.Close; Button_Send.Enabled := false; Button_Settings.Enabled := true; end else begin ComPort.Open; Button_Send.Enabled := true; Button_Settings.Enabled := false; 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 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; procedure TForm1.Button1Click(Sender: TObject); begin memo.clear; end; procedure TForm1.Button2Click(Sender: TObject); begin XYGraph1.Reset; end; end.