AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

wo kommt das type hin?

Ein Thema von hedie · begonnen am 9. Jun 2010 · letzter Beitrag vom 10. Jun 2010
 
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#8

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 18:33
Gut...

Hier mein gesamter Code


Funktion: Ich empfange von einer Computer Hardware Dezimal Zahlen von 0 - 255
Diese wandle ich nach Binär und stelle die 1en und 0en auf einer Oberfläche dar
Das ganze ist dan ein LogicAnalyzer

In den Arrays Daten1-Daten8 steht wo eine 1 oder eine 0 ist bezogen auf die gesamte anzahl an gesammelten daten

Beispiel
Delphi-Quellcode:
Data[1] := 1 //Eine Eins
Data[2] := 4112 //Steht an stelle 4112 des gesamten
Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, StdCtrls, jpeg, ImgList, ComCtrls;

type
  MyData = array[1..100000] of integer;
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    OpenLogic1: TMenuItem;
    About1: TMenuItem;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Image9: TImage;
    Shape1: TShape;
    ScrollBar1: TScrollBar;
    ImageList1: TImageList;
    Label9: TLabel;
    Label10: TLabel;
    Image12: TImage;
    Image13: TImage;
    Image14: TImage;
    Image15: TImage;
    Image16: TImage;
    Image17: TImage;
    Image18: TImage;
    ProgressBar1: TProgressBar;
    ScrollBar2: TScrollBar;
    Label11: TLabel;
    About2: TMenuItem;
    KeineAktualisierungverfgbar1: TMenuItem;
    Label1: TLabel;
    Label12: TLabel;
    update_check: TTimer;
    marker1: TPanel;
    dispmarker1: TLabel;
    Button1: TButton;
    marker2: TPanel;
    dispmarker2: TLabel;
    GroupBox1: TGroupBox;
    dispdmarker: TLabel;
    dispfreq: TLabel;
    ComboBox1: TComboBox;
    Button2: TButton;
    Label13: TLabel;
    ListBox1: TListBox;
    Button3: TButton;
    Label14: TLabel;
    Memo1: TMemo;
    Button5: TButton;
    ComboBox2: TComboBox;
    procedure draw_raw_data(drawspace:TImage;color:TColor; data_in:MyData);
    procedure prepaire_data;
    procedure refresh_all;
    procedure FormCreate(Sender: TObject);
    procedure About2Click(Sender: TObject);
    procedure KeineAktualisierungverfgbar1Click(Sender: TObject);
    procedure update_checkTimer(Sender: TObject);
    procedure refresh_marker(X:integer;marker:TPanel;display:TLabel);
    procedure refresh_times;
    procedure marker1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure marker2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormShow(Sender: TObject);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ScrollBar2Change(Sender: TObject);
    procedure clear_disp(disp:TImage);
    procedure clear_all;
    procedure ScrollBar1Change(Sender: TObject);


  private
    { Private-Deklarationen }
  public

    version_t:string;
    version,timems,timebasems,timeleft,timeright,marker1ms,marker2ms:integer;
    data1,data2,data3,data4,data5,data6,data7,data8: MyData;

  end;

var
  Form1: TForm1;

implementation



uses about, update,D2XXUnit, CfgUnit;




var
 DevicePresent : Boolean;
 Selected_Device_Serial_Number : String;
 Selected_Device_Description : String;
 Store_Buffer : Array[0..512000] of byte; //512kb Speicher.
 Store_Buffer_Count:integer;
 gesamt_einheit:integer;
 ein_pixel,buffer_size,start,stop:integer;
 main_color:tcolor;


{$R *.dfm}

procedure TForm1.refresh_times;
begin
  timeleft := ((timems div ScrollBar1.Max) * ScrollBar1.Position) - timebasems;
  timeright := ((timems div ScrollBar1.Max) * ScrollBar1.Position);
  Label9.Caption := inttostr(timeleft)+'ms';
  Label10.Caption := inttostr(timeright)+'ms';
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  start := ScrollBar1.Position;
  Label9.Caption := inttostr(start);
  stop := ScrollBar1.Position + (gesamt_einheit div ScrollBar2.Position);
  Label10.Caption := inttostr(stop);
  clear_all;
  refresh_all;
  
end;

procedure TForm1.ScrollBar2Change(Sender: TObject);
begin

  ScrollBar1.Max := (gesamt_einheit);
  Label11.Caption := inttostr(gesamt_einheit div ScrollBar2.Position);
  ein_pixel := (gesamt_einheit div ScrollBar2.Position) div Image9.Width;
  clear_all;
  refresh_all;
end;

procedure TForm1.refresh_marker(X:integer;marker:TPanel;display:TLabel);
var mslen:integer;
begin
  if ((marker.Left + X) > (Image9.Left - 1)) and ((marker.Left + X) < ((Image9.Left + Image9.Width) +1)) then begin
    mslen := (timebasems * timems div (Image9.width));
    display.Caption := inttostr( ( ((marker.Left - Image9.Left) * mslen) div 10000) + timeleft + 1)+'ms';
    marker.Left := marker.Left + X;
    display.Left := display.Left + X;
    if marker.Name = 'marker1then marker1ms := ( ((marker.Left - Image9.Left) * mslen) div 10000) + timeleft + 1;
    if marker.Name = 'marker2then marker2ms := ( ((marker.Left - Image9.Left) * mslen) div 10000) + timeleft + 1;
    dispdmarker.Caption := 'Delta ms: '+inttostr(marker2ms-marker1ms)+'ms';
    dispfreq.Caption := 'Freq. Hz: '+ inttostr(1000 div ((marker2ms-marker1ms)))+'Hz';
  end;

end;

procedure draw_up(pointer:TImage;color:TColor;x:integer);
begin
 with pointer.Canvas do begin
    Pen.Color := color;
    Pen.Width := 1;
    MoveTo(x,25);
    LineTo(x,5);
    //color := clBlack;
 end;
 //showmessage(inttostr(x));
end;

procedure draw_down(pointer:TImage;color:TColor;x:integer);
begin
 with pointer.Canvas do begin
    Pen.Color := color;
    Pen.Mode := pmMerge;
    Pen.Width := 1;
    MoveTo(x,5);
    LineTo(x,25);
 end;

end;

procedure draw_line(pointer:TImage;color:TColor;x1,x2,y:integer);
begin
 with pointer.Canvas do begin
    Pen.Color := color;
    Pen.Width := 1;
    MoveTo(x1,y);
    LineTo(x2,y);
 end;
end;


procedure TForm1.About2Click(Sender: TObject);
begin
  Form2.ShowModal;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if dispmarker1.Visible = true then begin
    dispmarker1.Visible := false;
    dispmarker2.Visible := false;
    marker1.Visible := false;
    marker2.Visible := false;
  end
  else begin
    dispmarker1.Visible := true;
    dispmarker2.Visible := true;
    marker1.Visible := true;
    marker2.Visible := true;
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
If Open_USB_Device_By_Serial_Number(Selected_Device_Serial_Number) = FT_OK then begin
  FT_Current_Parity := 1;
  FT_Current_StopBits := 0;
  FT_Current_DataBits := 8;
  Set_USB_Device_DataCharacteristics;
  FT_Current_Baud := 3000000;
  Set_USB_Device_BaudRate;
  Label13.Caption := 'Status: Verbunden mit: ' + Selected_Device_Serial_Number;
end
else begin
  Label13.Caption := 'Status: Fehler beim verbinden mit: ' + Selected_Device_Serial_Number;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin


  ProgressBar1.Max := gesamt_einheit;
  ProgressBar1.Position := 0;
  repeat
  Read_USB_Device_Buffer(buffer_size);
  Move(FT_In_Buffer[0], Store_Buffer[Store_Buffer_Count], Length(FT_In_Buffer));
  Inc(Store_Buffer_Count, buffer_size);
  ProgressBar1.Position := ProgressBar1.Position + buffer_size;
  Label14.Caption := 'Saved: '+inttostr(ProgressBar1.Position);
  Application.ProcessMessages;
  until ProgressBar1.Position = gesamt_einheit;
end;

procedure TForm1.refresh_all;
begin
  draw_raw_data(Image9,main_color,data1);
  draw_raw_data(Image12,main_color,data2);
  draw_raw_data(Image13,main_color,data3);
  draw_raw_data(Image14,main_color,data4);
  draw_raw_data(Image15,main_color,data5);
  draw_raw_data(Image16,main_color,data6);
  draw_raw_data(Image17,main_color,data7);
  draw_raw_data(Image18,main_color,data8);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  clear_all;
  prepaire_data;
  refresh_all;
end;

{procedure doFoo2(const  a: Array of Byte);
var
i:integer;
value_old:integer;
data_counter:integer;
begin
  i := 0;
  data_counter := 1;
  value_old := 500;
  repeat
  if a[i] <> value_old then  begin
    Form1.Memo1.Lines.Add(inttostr(a[i])+','+inttostr(i)+',');
    if(a[i] = 1) then begin
      Form1.data[data_counter] := 1;
      Form1.data[data_counter + 1] := i;
      data_counter := data_counter + 2;
    end;
    if(a[i] = 0) then begin
      Form1.data[data_counter] := 0;
      Form1.data[data_counter + 1] := i;
      data_counter := data_counter + 2;
    end;
    value_old := a[i];
  end;
  i := i + 1;
  until gesamt_einheit <= i;
  Form1.data[data_counter] := 748575;
end;        }


procedure TForm1.ComboBox1Click(Sender: TObject);
begin
  Selected_Device_Serial_Number := ListBox1.Items.Strings[ComboBox1.ItemIndex];
  //Showmessage(Selected_Device_Serial_Number);
end;

procedure TForm1.ComboBox1DropDown(Sender: TObject);
var S:String; DeviceIndex : DWord; I : Integer; LV : TListItem;
begin
ComboBox1.Items.clear; //Auswahl löschen
ListBox1.Clear; //Geräte ID's löschen
GetFTDeviceCount;
S := IntToStr(FT_Device_Count);
DeviceIndex := 0;
If FT_Device_Count > 0 then
  Button2.Enabled := true;
  For I := 1 to FT_Device_Count do
  Begin
  GetFTDeviceDescription ( DeviceIndex );
  ComboBox1.Items.Add(FT_Device_String);
  GetFTDeviceSerialNo( DeviceIndex );
  ListBox1.Items.Add(FT_Device_String);
  DeviceIndex := DeviceIndex + 1;
  End;

end;

procedure TForm1.prepaire_data;
  var
alter_wert,counter,i,i2,temp_wert,cd1,cd2,cd3,cd4,cd5,cd6,cd7,cd8:integer;
vorheriges_x,aktuelle_flanke:integer;
linie_zeichnen:boolean;
temp_data,old_data:Array[0..8] of integer;
begin

  i := 0;
  i2:= 0;
  counter := 1;
  vorheriges_x := 0;
  aktuelle_flanke := 0;
  cd8 := 1;
  cd7 := 1;
  cd6 := 1;
  cd5 := 1;
  cd4 := 1;
  cd3 := 1;
  cd2 := 1;
  cd1 := 1;

  repeat

    //Form1.Memo1.Lines.Add(inttostr(Store_Buffer[i])+',Bin:');
    temp_data[0] := Store_Buffer[i] mod 2;
    temp_wert := Store_Buffer[i] div 2;
    temp_data[1] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[2] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[3] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[4] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[5] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[6] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[7] := temp_wert mod 2;



    if temp_data[0] <> old_data[0] then begin
      data1[cd1] := temp_data[0];
      data1[cd1+1] := i;
      cd1 := cd1 + 2;
    end;
    if temp_data[1] <> old_data[1] then begin
      data2[cd2] := temp_data[1];
      data2[cd2+1] := i;
      cd2 := cd2 + 2;
    end;
    if temp_data[2] <> old_data[2] then begin
      data3[cd3] := temp_data[2];
      data3[cd3+1] := i;
      cd3 := cd3 + 2;
    end;
    if temp_data[3] <> old_data[3] then begin
      data4[cd4] := temp_data[3];
      data4[cd4+1] := i;
      cd4 := cd4 + 2;
    end;
    if temp_data[4] <> old_data[4] then begin
      data5[cd5] := temp_data[4];
      data5[cd5+1] := i;
      cd5 := cd5 + 2;
    end;
    if temp_data[5] <> old_data[5] then begin
      data6[cd6] := temp_data[5];
      data6[cd6+1] := i;
      cd6 := cd6 + 2;
    end;
    if temp_data[6] <> old_data[6] then begin
      data7[cd7] := temp_data[6];
      data7[cd7+1] := i;
      cd7 := cd7 + 2;
    end;
    if temp_data[7] <> old_data[7] then begin
      data8[cd8] := temp_data[7];
      data8[cd8+1] := i;
      cd8 := cd8 + 2;
    end;
    Move(temp_data[0], old_data[0], Length(temp_data)); //Array kopieren
    i := i + 1;

  until gesamt_einheit <= i;

  data1[cd1] := 5;
  data2[cd2] := 5;
  data3[cd3] := 5;
  data4[cd4] := 5;
  data5[cd5] := 5;
  data6[cd6] := 5;
  data7[cd7] := 5;
  data8[cd8] := 5;

  {cd1 := 1;
    repeat

    Form1.Memo1.Lines.Add(inttostr(data1[cd1]));
    Form1.Memo1.Lines.Add(inttostr(data1[cd1+1]));
    cd1 := cd1 + 2;
    until data1[cd1] = 5;
                                     }

    cd1 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data1[cd1]));
    Form1.Memo1.Lines.Add(inttostr(data1[cd1+1]));
    cd1 := cd1 + 2;
    until (data1[cd1] = 5) or (data1[cd1-2] = 5);

    cd2 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data2[cd2]));
    Form1.Memo1.Lines.Add(inttostr(data2[cd2+1]));
    cd2 := cd2 + 2;
    until (data2[cd2] = 5) or (data2[cd2-2] = 5);

    cd3 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data3[cd3]));
    Form1.Memo1.Lines.Add(inttostr(data3[cd3+1]));
    cd3 := cd3 + 2;
    until (data3[cd3] = 5) or (data3[cd3-2] = 5);

    cd4 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data4[cd4]));
    Form1.Memo1.Lines.Add(inttostr(data4[cd4+1]));
    cd4 := cd4 + 2;
    until (data4[cd4] = 5) or (data4[cd4-2] = 5);

    cd5 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data5[cd5]));
    Form1.Memo1.Lines.Add(inttostr(data5[cd5+1]));
    cd5 := cd5 + 2;
    until (data5[cd5] = 5) or (data5[cd5-2] = 5);

    Form1.Memo1.Lines.Add(' |-| ');

  {repeat
  if Store_Buffer[i] <> alter_wert then  begin
    Form1.Memo1.Lines.Add(inttostr(Store_Buffer[i])+','+inttostr(i)+',');

    if(Store_Buffer[i] = 1) then begin
      data[counter] := 1;
      data[counter + 1] := i;
      counter := counter + 2;
    end;

    if(Store_Buffer[i] = 0) then begin
      data[counter] := 0;
      data[counter + 1] := i;
      counter := counter + 2;
    end;
    alter_wert := Store_Buffer[i];
  end;
  i := i + 1;
  until gesamt_einheit <= i;
  data[counter] :=  748575;    }

end;

procedure TForm1.draw_raw_data(drawspace:TImage;color:TColor;data_in:MyData);
var
counter:integer;
begin

  counter := 1;
  repeat
    draw_up(drawspace,color,((data_in[counter+1] - start) div ein_pixel));
    if data_in[counter - 2] = 1 then draw_line(drawspace,color,(data_in[counter-1]-start) div ein_pixel,(data_in[counter+1] - start) div ein_pixel,5);
    if data_in[counter - 2] = 0 then draw_line(drawspace,color,(data_in[counter-1]-start) div ein_pixel,(data_in[counter+1] - start) div ein_pixel,25);
    counter := counter + 2;
  until (data_in[counter] = 5) or(data_in[counter-2] = 5) ;
  if data_in[counter - 2] = 1 then draw_line(drawspace,color,(data_in[counter-1]-start)div ein_pixel,gesamt_einheit div ein_pixel,5);
  if data_in[counter - 2] = 0 then draw_line(drawspace,color,(data_in[counter-1]-start)div ein_pixel,gesamt_einheit div ein_pixel,25);

end;

procedure TForm1.clear_disp(disp:TImage);
begin
  with disp.canvas do begin
  brush.Color:=$00575048;
  brush.Style:=bsSolid;
  rectangle(0,-1,disp.Width+2,disp.Height+2);
  end;
end;

procedure TForm1.clear_all;
begin
  clear_disp(Form1.Image9);
  clear_disp(Form1.Image12);
  clear_disp(Form1.Image13);
  clear_disp(Form1.Image14);
  clear_disp(Form1.Image15);
  clear_disp(Form1.Image16);
  clear_disp(Form1.Image17);
  clear_disp(Form1.Image18);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

version_t := '1.0.0.21';
form1.DoubleBuffered := true;


end;

procedure TForm1.FormShow(Sender: TObject);
begin
  FT_Enable_Error_Report := true; // Error reporting = on
  gesamt_einheit := 50000; //Anzahl Samples
  buffer_size := 1000; //Anzahl Samples pro übertragung
  start := 0;
  stop := gesamt_einheit;
  ein_pixel := gesamt_einheit div Image9.Width;
  main_color := clWhite;
  //DevicePresent
end;

procedure TForm1.KeineAktualisierungverfgbar1Click(Sender: TObject);
begin
  Form3.Showmodal;
end;

procedure TForm1.marker1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  refresh_marker(X,marker1,dispmarker1);
end;

procedure TForm1.marker2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  refresh_marker(X,marker2,dispmarker2);
end;

procedure TForm1.update_checkTimer(Sender: TObject);
begin
  update_check.Enabled := false;

  if paramstr(1) = 'updatethen begin
    deletefile(extractfilepath(paramstr(0))+'old.exe');
    showmessage('Herzlichen Glückwunsch... Update erfolgreich! Version: ' + version_t);
  end;

end;

end.
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz