31-05-2020, Saat: 01:23
USCO API ile USB kablusuyla bilgisayarımıza bağlı TIVA TM4C123G kartına USCO 01 protokolüyle, ARDUINO UNO, ARDUINO NANO ve ARDUINO MEGA kartlarına ise GOMIO protokolüyle yönetme işlerimizin konusu olacak bu yazımız. USCO 01 protokolü direk PC ye bağlı kontrol kartlarımızı çalıştırmak için kullanılır. Bir önceki yazımız olan USCO API ile USCO 01 kontrol konusunda kullandığımız projemizin KLASÖR kopyası ile bu projemizi üreteceğiz. DATA_FORM ve USCO_01_KONTROL_FORM’larımızda değişiklikler olacaktır. Artık projemize fiziki olarak KART bağlı ve bu cihazlara TComPort bileşenleri ile erişmeye çalışacağız.
Bu örneğimizde kullanacağımız USCO API leri kısaca bir tanıyalım.
procedure AIDI_GETIR(CIHAZ_KOD: Integer); Bu USCO API ile seçili CIHAZ’a ait son sensör bilgileri getirilir.
procedure CIHAZLAR_USCO_GETIR(CIHAZ_KOD:Integer); Seçili CIHAZ’a ait USCO komutları getirilir.
procedure VERI_GETIR(AIDI_KOD:Integer); Seçili cihaza ait AIDI komut ID si ile TOPLANAN verilerin SON 50 kaydı getirilir.
DataForm.Data.Temp.AidiDuzelt(TARIH_SAAT: string; DIGITAL_INPUT: string; DIGITAL_OUTPUT: string; SICAKLIK: string; NEM: string; ADC1: string; ADC2: string; ADC3: string; ADC4: string; ADC5: string; ADC6: string; ADC7: string; ADC8: string; ADC9: string; ADC10: string; ADC11: string; ADC12: string; ADC13: string; ADC14: string; ADC15: string; ADC16: string; ADC17: string; ADC18: string; ADC19: string; ADC20: string; DEVIR1: string; KOD: Integer) Seçili CIHAZ’a ait SENSÖR; DURUM, DEVIR, SICAKLIK, NEM vb bilgileri AIDI_BILGI gloabal isimli değişkene, mikrodenetleyiceden gelen bilgiler atanır. Atanan bu bilgiler bu API ile VERİTABANINA gönderilir.
Aşağıdaki ekran görüntülerini DİKKATLİCE inceleyiniz.
Bu örneğimizde kullanacağımız USCO API leri kısaca bir tanıyalım.
procedure AIDI_GETIR(CIHAZ_KOD: Integer); Bu USCO API ile seçili CIHAZ’a ait son sensör bilgileri getirilir.
procedure CIHAZLAR_USCO_GETIR(CIHAZ_KOD:Integer); Seçili CIHAZ’a ait USCO komutları getirilir.
procedure VERI_GETIR(AIDI_KOD:Integer); Seçili cihaza ait AIDI komut ID si ile TOPLANAN verilerin SON 50 kaydı getirilir.
DataForm.Data.Temp.AidiDuzelt(TARIH_SAAT: string; DIGITAL_INPUT: string; DIGITAL_OUTPUT: string; SICAKLIK: string; NEM: string; ADC1: string; ADC2: string; ADC3: string; ADC4: string; ADC5: string; ADC6: string; ADC7: string; ADC8: string; ADC9: string; ADC10: string; ADC11: string; ADC12: string; ADC13: string; ADC14: string; ADC15: string; ADC16: string; ADC17: string; ADC18: string; ADC19: string; ADC20: string; DEVIR1: string; KOD: Integer) Seçili CIHAZ’a ait SENSÖR; DURUM, DEVIR, SICAKLIK, NEM vb bilgileri AIDI_BILGI gloabal isimli değişkene, mikrodenetleyiceden gelen bilgiler atanır. Atanan bu bilgiler bu API ile VERİTABANINA gönderilir.
Aşağıdaki ekran görüntülerini DİKKATLİCE inceleyiniz.


procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
procedure AIDI_GETIR(CIHAZ_KOD: Integer);
procedure CIHAZLAR_USCO_GETIR(CIHAZ_KOD:Integer);
procedure VERI_GETIR(AIDI_KOD:Integer);
private
{ Private declarations }
public
{ Public declarations }
Temp: TServerMethods1Client;
lDataSet: TDataSet; lDataSet1: TClientDataSet; DSP,DSP1: TDataSetProvider;
KULLANICI_ADI, SIFRE: String;
end;
var
DATA: TDATA;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
procedure TDATA.AIDI_GETIR(CIHAZ_KOD:Integer);
begin
DataForm.DATA.AIDI_TABLE.Close;
DataForm.DATA.lDataSet := DataForm.DATA.Temp.AIDI_GETIR(KULLANICI_ADI, SIFRE, CIHAZ_KOD);
DataForm.DATA.DSP := TDataSetProvider.Create(Self);
try
DataForm.DATA.DSP.DataSet := DataForm.DATA.lDataSet;
DataForm.DATA.AIDI_TABLE.SetProvider(DataForm.DATA.DSP);
DataForm.DATA.AIDI_TABLE.Open;
finally
DataForm.DATA.AIDI_TABLE.SetProvider(nil);
DataForm.DATA.DSP.Free;
end;
end;
procedure TDATA.CIHAZLAR_USCO_GETIR(CIHAZ_KOD:Integer);
begin
DataForm.DATA.CIHAZLAR_USCO_TABLE.Close; CIHAZLAR_USCO_TABLE2.Close;
DataForm.DATA.lDataSet := DataForm.DATA.Temp.CIHAZLAR_USCO_GETIR(KULLANICI_ADI, SIFRE, CIHAZ_KOD);
DataForm.DATA.DSP := TDataSetProvider.Create(Self);
try
DataForm.DATA.DSP.DataSet := DataForm.DATA.lDataSet;
DataForm.DATA.CIHAZLAR_USCO_TABLE.SetProvider(DataForm.DATA.DSP);
DataForm.DATA.CIHAZLAR_USCO_TABLE.Open;
CIHAZLAR_USCO_TABLE2.Data := CIHAZLAR_USCO_TABLE.Data;
CIHAZLAR_USCO_TABLE2.Open;
finally
DataForm.DATA.CIHAZLAR_USCO_TABLE.SetProvider(nil);
DataForm.DATA.CIHAZLAR_USCO_TABLE2.SetProvider(nil);
DataForm.DATA.DSP.Free;
end;
end;
procedure TDATA.VERI_GETIR(AIDI_KOD:Integer);
begin
DataForm.DATA.VERI_GETIR_TABLE.Close;
DataForm.DATA.lDataSet := DataForm.DATA.Temp.VERI_GETIR(AIDI_KOD);
DataForm.DATA.DSP := TDataSetProvider.Create(Self);
try
DataForm.DATA.DSP.DataSet := DataForm.DATA.lDataSet;
DataForm.DATA.VERI_GETIR_TABLE.SetProvider(DataForm.DATA.DSP);
DataForm.DATA.VERI_GETIR_TABLE.Open;
finally
DataForm.DATA.VERI_GETIR_TABLE.SetProvider(nil);
DataForm.DATA.DSP.Free;
end;
end;
procedure TDATA.DataModuleCreate(Sender: TObject);
begin
Temp := TServerMethods1Client.Create(DSRestConnection1);
end;
procedure TDATA.DataModuleDestroy(Sender: TObject);
begin
Temp.Free;
end;
public
{ Public declarations }
AIDI_BILGI: String;
end;
var
USCO_01_KONTROL_FORM: TUSCO_01_KONTROL_FORM;
implementation
{$R *.dfm}
uses DataForm;
procedure TUSCO_01_KONTROL_FORM.Button12Click(Sender: TObject);
begin
TRY
DataForm.DATA.CIHAZLAR_USCO_GETIR(StrToInt(Edit1.Text));
EXCEPT
ShowMessage('Kullanıcı adı veya şifre hatalı');
END;
end;
procedure TUSCO_01_KONTROL_FORM.Button13Click(Sender: TObject);
var TARIH_SAAT,DIGITAL_INPUT,DIGITAL_OUTPUT,SICAKLIK,NEM,ADC1,ADC2,ADC3,ADC4,ADC5,ADC6,ADC7,ADC8: String;
begin
{ // SENSÖR bilgilerini VERİTABANINA gönderme USCO API'si
function TServerMethods1Client.AidiDuzelt(TARIH_SAAT: string;
DIGITAL_INPUT: string; DIGITAL_OUTPUT: string; SICAKLIK: string; NEM: string; ADC1: string; ADC2: string;
ADC3: string; ADC4: string; ADC5: string; ADC6: string; ADC7: string; ADC8: string; ADC9: string;
ADC10: string; ADC11: string; ADC12: string; ADC13: string; ADC14: string; ADC15: string; ADC16: string;
ADC17: string; ADC18: string; ADC19: string; ADC20: string; DEVIR1: string; KOD: Integer)
: Boolean;
}
{ // Mikrodenetleyiceden gelen AIDI_BILGI isimli değişkene atanan bilgi örnek DEĞER'i
:2720:2360:0087:0049:3538:4013:4054:4063,DI:11,T: 24,H: 64,D0: 0,D1: 0,<0000000000>,Saniye: 76
}
if ComPort1.Connected then // Eğer TIVA KART PC'ye bağlanmış ve OPEN yapılmış ise ..
begin
Timer1.Enabled := False; Sleep(150); // Tazeleme geçici olarak durmalı..
// Hem TARIH_SAAT hem de VERI TOPLAMA aktif bilgisi bir arada toplanıyor... Toplamda 21 Karakter eder..
// Örnek veri = 27.05.2020 01:42:17 1
TARIH_SAAT := DateTimeToStr(now) + ' ' + DataForm.DATA.AIDI_TABLE.FieldByName('KOD').AsString;
// Copy(AIDI_BILGI,79,9) digital output durum bilgisi... AIDI_BILGI'den 79.dan itibaren 9 karakter al.
// Copy(AIDI_BILGI,45,2) Digital input bilgisi..
// Copy(AIDI_BILGI,63,5) ve Copy(AIDI_BILGI,72,5) DEVIR1 ve DEVIR2 bilgileri..
// Copy(AIDI_BILGI,98,6) mikrodenetleyicinin çalışma süre bilgisi..
// ':1' VERI TOPLA aktif bilgisi.. pasif ise ':0' olur..
if CheckBox3.Checked then // Eğer VERİ TOPLA kutusu işaretlen miş ise,
DIGITAL_INPUT := Copy(AIDI_BILGI,79,9) + ':' + Copy(AIDI_BILGI,45,2) + ':1' + ':' +
Copy(AIDI_BILGI,63,5) + ':' + Copy(AIDI_BILGI,72,5) + ':' + Copy(AIDI_BILGI,98,6) else
DIGITAL_INPUT := Copy(AIDI_BILGI,79,9) + ':' + Copy(AIDI_BILGI,45,2) + ':0' + ':' +
Copy(AIDI_BILGI,63,5) + ':' + Copy(AIDI_BILGI,72,5) + ':' + Copy(AIDI_BILGI,98,6);
DIGITAL_OUTPUT := ''; //Bu bilgi değeri DIGITAL_INPUT ile toplandı. API için lazım.
SICAKLIK := Copy(AIDI_BILGI,50,3); NEM := Copy(AIDI_BILGI,56,3);
ADC1 := Copy(AIDI_BILGI,2,4); ADC2 := Copy(AIDI_BILGI,7,4); ADC3 := Copy(AIDI_BILGI,12,4);
ADC4 := Copy(AIDI_BILGI,17,4); ADC5 := Copy(AIDI_BILGI,22,4); ADC6 := Copy(AIDI_BILGI,27,4);
ADC7 := Copy(AIDI_BILGI,32,4); ADC8 := Copy(AIDI_BILGI,37,4);
//ADC9 .. ADC20 ye kadar olan veriler USCO 01 tarafından desteklenmediği için '0' alındı..
DataForm.Data.Temp.AidiDuzelt(TARIH_SAAT,DIGITAL_INPUT,DIGITAL_OUTPUT,SICAKLIK,NEM,
ADC1,ADC2,ADC3,ADC4,ADC5,ADC6,ADC7,ADC8,
'0','0','0','0','0','0','0','0','0','0','0','0','', StrToInt(Edit1.Text)); // ADC9 .. ADC20 arası SIFIR
Timer1.Enabled := True; Sleep(150); // Geçizi olarak duran Tazeleme devam etmeli ..
end;
end;
procedure TUSCO_01_KONTROL_FORM.Button1Click(Sender: TObject);
begin
DataForm.DATA.AIDI_GETIR(StrToInt(Edit1.Text));
end;
procedure TUSCO_01_KONTROL_FORM.Button2Click(Sender: TObject);
begin
DataForm.DATA.Temp.CihazlarUscoDuzelt(DataForm.DATA.KULLANICI_ADI, DataForm.DATA.SIFRE,
(Sender as TButton).Hint, 'EVET', '', (Sender as TButton).Tag, StrToInt(Edit1.Text));
end;
procedure TUSCO_01_KONTROL_FORM.CheckBox1Click(Sender: TObject);
begin
Timer1.Enabled := CheckBox1.Checked;
CheckBox3.Enabled := True;
end;
procedure TUSCO_01_KONTROL_FORM.CheckBox2Click(Sender: TObject);
begin
if ComComboBox1.ItemIndex < 0 then
begin
ShowMessage('Lütfen SERİ PORT seçiniz.');
CheckBox2.Checked := False;
Exit;
end;
ComPort1.Port := ComComboBox1.Text;
ComPort1.Connected := CheckBox2.Checked;
CheckBox1.Enabled := True;
end;
procedure TUSCO_01_KONTROL_FORM.ComDataPacket1Packet(Sender: TObject; const Str: string);
begin
AIDI_BILGI := Str; // KART tan toplanan VERİ'ler gloabal değişkene atanıyor.
Label6.Caption := AIDI_BILGI;
end;
procedure TUSCO_01_KONTROL_FORM.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Timer1.Enabled := False;
end;
procedure TUSCO_01_KONTROL_FORM.FormShow(Sender: TObject);
begin
EnumComPorts(ComComboBox1.Items);
end;
procedure TUSCO_01_KONTROL_FORM.Timer1Timer(Sender: TObject);
begin
Button1Click(Self); // AIDI Veri Getir..
Sleep(50); Application.ProcessMessages;
Button12Click(Self); // USCO Komut Gönder..
if CheckBox2.Checked then Button13Click(Self); // AIDI Gönder..
DataForm.DATA.VERI_GETIR(DataForm.DATA.AIDI_TABLE.FieldByName('KOD').AsInteger); // Toplanan verileri getir
if DataForm.DATA.CIHAZLAR_USCO_TABLE2.FieldByName('DURUM').AsString = 'EVET' then
begin
if ComPort1.Connected then ComPort1.WriteStr(
DataForm.DATA.CIHAZLAR_USCO_TABLE2.FieldByName('komut').AsString + ' ' +
DataForm.DATA.CIHAZLAR_USCO_TABLE2.FieldByName('PARAMETRE').AsString + #13#10);
DataForm.DATA.Temp.CihazlarUscoDuzelt(DataForm.DATA.KULLANICI_ADI, DataForm.DATA.SIFRE,
DataForm.DATA.CIHAZLAR_USCO_TABLE2.FieldByName('PARAMETRE').AsString, '', '',
DataForm.DATA.CIHAZLAR_USCO_TABLE2.FieldByName('USCO_KOD').AsInteger, StrToInt(Edit1.Text));
end;
end;
Bu projemizi ayrıca, MOBILE uygulamadan kontrol eden uygulamanın APK'sını indirebilirsiniz.
Ayrıca MOBILE APK'ya ait SOURCE - KAYNAK kodları:
USCO KONTROL_FORM için
unit USCO_01KontrolForm;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Edit,
FMX.Controls.Presentation, FMX.Layouts, FMX.ListBox, System.Rtti, FMX.Grid.Style, FMX.Grid, FMX.ScrollBox,
Data.Bind.Components, Data.Bind.DBScope, System.Bindings.Outputs, Fmx.Bind.Editors, Data.Bind.EngExt,
Fmx.Bind.DBEngExt, Fmx.Bind.Grid, Data.Bind.Grid, FMX.TabControl;
type
TUSCO_01_KONTROL_FORM = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
Button12: TButton;
Panel6: TPanel;
Button13: TButton;
Button15: TButton;
Panel7: TPanel;
Edit1: TEdit;
Label1: TLabel;
CheckBox1: TCheckBox;
BindingsList1: TBindingsList;
BindSourceDB2: TBindSourceDB;
StringGrid1: TStringGrid;
LinkGridToDataSourceBindSourceDB2: TLinkGridToDataSource;
StringGrid2: TStringGrid;
BindSourceDB1: TBindSourceDB;
LinkGridToDataSourceBindSourceDB1: TLinkGridToDataSource;
TabControl1: TTabControl;
TabItem1: TTabItem;
TabItem2: TTabItem;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
BindSourceDB3: TBindSourceDB;
LinkGridToDataSourceBindSourceDB3: TLinkGridToDataSource;
BindSourceDB4: TBindSourceDB;
LinkGridToDataSourceBindSourceDB4: TLinkGridToDataSource;
Button5: TButton;
Label7: TLabel;
Button11: TButton;
Button10: TButton;
Button9: TButton;
Button8: TButton;
Button7: TButton;
Button6: TButton;
Button4: TButton;
Button3: TButton;
Button2: TButton;
procedure Timer1Timer(Sender: TObject);
procedure CheckBox1Change(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
USCO_01_KONTROL_FORM: TUSCO_01_KONTROL_FORM;
implementation
{$R *.fmx}
uses DataForm, ClientClassesUnit1;
procedure TUSCO_01_KONTROL_FORM.Button12Click(Sender: TObject);
begin
Timer1.Enabled := False;
Close;
end;
procedure TUSCO_01_KONTROL_FORM.Button13Click(Sender: TObject);
begin
DataForm.DATA.AIDI_GETIR(StrToInt(Edit1.Text));
Label7.Text := DataForm.DATA.AIDI_TABLE.FieldByName('TARIH_SAAT').AsString;
DataForm.DATA.VERI_GETIR(StrToInt(Edit1.Text));
StringGrid1.Columns[0].Width := 0;
StringGrid2.Columns[0].Width := 0;
StringGrid1.Columns[1].Width := 205;
StringGrid2.Columns[1].Width := 205;
StringGrid1.Columns[2].Width := 50;
StringGrid2.Columns[2].Width := 50;
StringGrid1.Columns[3].Width := 120;
StringGrid2.Columns[3].Width := 120;
end;
procedure TUSCO_01_KONTROL_FORM.Button15Click(Sender: TObject);
begin
TRY
DataForm.DATA.CIHAZLAR_USCO_GETIR(StrToInt(Edit1.Text));
StringGrid3.Columns[1].Width := 100;
StringGrid4.Columns[1].Width := 100;
StringGrid3.Columns[3].Width := 110;
StringGrid4.Columns[3].Width := 110;
EXCEPT
ShowMessage('Kullanıcı adı veya şifre hatalı');
END;
end;
procedure TUSCO_01_KONTROL_FORM.Button2Click(Sender: TObject);
begin
DataForm.DATA.Temp.CihazlarUscoDuzelt(DataForm.DATA.KULLANICI_ADI, DataForm.DATA.SIFRE, (Sender as TButton).Hint, 'EVET',
'', (Sender as TButton).Tag, StrToInt(Edit1.Text));
end;
procedure TUSCO_01_KONTROL_FORM.CheckBox1Change(Sender: TObject);
begin
Timer1.Enabled := CheckBox1.IsChecked;
end;
procedure TUSCO_01_KONTROL_FORM.Timer1Timer(Sender: TObject);
begin
Button13Click(Self);
Sleep(150); Application.ProcessMessages;
Button15Click(Self);
end;
end.
LOGIN_FORM için:
unit LoginForm;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Edit,
FMX.Controls.Presentation;
type
TLOGIN_FORM = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
LOGIN_FORM: TLOGIN_FORM;
implementation
{$R *.fmx}
uses DataForm, USCO_01KontrolForm;
procedure TLOGIN_FORM.Button1Click(Sender: TObject);
var
GELEN: String;
begin
if Edit1.Text = '' then
begin
ShowMessage('Kullanıcı Adı Zorunlu');
Exit;
end;
if Edit2.Text = '' then
begin
ShowMessage('Şifre Zorunlu');
Exit;
end;
GELEN := DataForm.DATA.Temp.KULLANICI_KONTROL(Edit1.Text, Edit2.Text);
if GELEN <> '0' then
begin
DataForm.DATA.KULLANICI_ADI := Edit1.Text;
DataForm.DATA.SIFRE:=Edit2.Text;
USCO_01_KONTROL_FORM.Show;
end else ShowMessage('Kullanıcı adı veya şifre yanlış');
end;
end.
DATA_FORM için;
unit DataForm;
interface
uses
System.SysUtils, System.Classes, Datasnap.DSClientRest, ClientClassesUnit1, Data.DB, Datasnap.DBClient,
Datasnap.Provider;
type
TDATA = class(TDataModule)
DSRestConnection1: TDSRestConnection;
AIDI_TABLE: TClientDataSet;
AIDI_SOURCE: TDataSource;
CIHAZLAR_USCO_SOURCE: TDataSource;
CIHAZLAR_USCO_TABLE: TClientDataSet;
CIHAZLAR_USCO_SOURCE2: TDataSource;
CIHAZLAR_USCO_TABLE2: TClientDataSet;
VERI_GETIR_SOURCE: TDataSource;
AIDI_TABLETARIH_SAAT: TStringField;
AIDI_TABLESICAKLIK: TFloatField;
AIDI_TABLENEM: TFloatField;
AIDI_TABLECIHAZ_KOD: TIntegerField;
AIDI_TABLEDIGITAL_INPUT: TStringField;
AIDI_TABLEDIGITAL_OUTPUT: TStringField;
AIDI_TABLEDEVIR1: TStringField;
AIDI_TABLEDEVIR2: TStringField;
AIDI_TABLESURE: TIntegerField;
AIDI_TABLEADC1: TIntegerField;
AIDI_TABLEADC2: TIntegerField;
AIDI_TABLEADC3: TIntegerField;
AIDI_TABLEADC4: TIntegerField;
AIDI_TABLEADC5: TIntegerField;
AIDI_TABLEADC6: TIntegerField;
AIDI_TABLEADC7: TIntegerField;
AIDI_TABLEADC8: TIntegerField;
VERI_GETIR_TABLE: TClientDataSet;
IntegerField1: TIntegerField;
StringField1: TStringField;
StringField2: TStringField;
StringField3: TStringField;
FloatField1: TFloatField;
FloatField2: TFloatField;
StringField4: TStringField;
StringField5: TStringField;
IntegerField2: TIntegerField;
IntegerField3: TIntegerField;
IntegerField4: TIntegerField;
IntegerField5: TIntegerField;
IntegerField6: TIntegerField;
IntegerField7: TIntegerField;
IntegerField8: TIntegerField;
IntegerField9: TIntegerField;
IntegerField10: TIntegerField;
CIHAZLAR_USCO_TABLEUSCO_KOD: TIntegerField;
CIHAZLAR_USCO_TABLEPARAMETRE: TStringField;
CIHAZLAR_USCO_TABLEDURUM: TStringField;
CIHAZLAR_USCO_TABLEkomut: TStringField;
CIHAZLAR_USCO_TABLE2USCO_KOD: TIntegerField;
CIHAZLAR_USCO_TABLE2PARAMETRE: TStringField;
CIHAZLAR_USCO_TABLE2DURUM: TStringField;
CIHAZLAR_USCO_TABLE2komut: TStringField;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
procedure AIDI_GETIR(CIHAZ_KOD: Integer);
procedure CIHAZLAR_USCO_GETIR(CIHAZ_KOD:Integer);
procedure VERI_GETIR(AIDI_KOD:Integer);
private
{ Private declarations }
public
{ Public declarations }
Temp: TServerMethods1Client;
lDataSet: TDataSet; lDataSet1: TClientDataSet; DSP,DSP1: TDataSetProvider;
KULLANICI_ADI, SIFRE: String;
end;
var
DATA: TDATA;
implementation
{%CLASSGROUP 'FMX.Controls.TControl'}
{$R *.dfm}
procedure TDATA.AIDI_GETIR(CIHAZ_KOD:Integer);
begin
DataForm.DATA.AIDI_TABLE.Close;
DataForm.DATA.lDataSet := DataForm.DATA.Temp.AIDI_GETIR(KULLANICI_ADI, SIFRE, CIHAZ_KOD);
DataForm.DATA.DSP := TDataSetProvider.Create(Self);
try
DataForm.DATA.DSP.DataSet := DataForm.DATA.lDataSet;
DataForm.DATA.AIDI_TABLE.SetProvider(DataForm.DATA.DSP);
DataForm.DATA.AIDI_TABLE.Open;
finally
DataForm.DATA.AIDI_TABLE.SetProvider(nil);
DataForm.DATA.DSP.Free;
end;
end;
procedure TDATA.CIHAZLAR_USCO_GETIR(CIHAZ_KOD:Integer);
begin
DataForm.DATA.CIHAZLAR_USCO_TABLE.Close; CIHAZLAR_USCO_TABLE2.Close;
DataForm.DATA.lDataSet := DataForm.DATA.Temp.CIHAZLAR_USCO_GETIR(KULLANICI_ADI, SIFRE, CIHAZ_KOD);
DataForm.DATA.DSP := TDataSetProvider.Create(Self);
try
DataForm.DATA.DSP.DataSet := DataForm.DATA.lDataSet;
DataForm.DATA.CIHAZLAR_USCO_TABLE.SetProvider(DataForm.DATA.DSP);
DataForm.DATA.CIHAZLAR_USCO_TABLE.Open;
CIHAZLAR_USCO_TABLE2.Data := CIHAZLAR_USCO_TABLE.Data;
CIHAZLAR_USCO_TABLE2.Open;
finally
DataForm.DATA.CIHAZLAR_USCO_TABLE.SetProvider(nil);
DataForm.DATA.CIHAZLAR_USCO_TABLE2.SetProvider(nil);
DataForm.DATA.DSP.Free;
end;
end;
procedure TDATA.VERI_GETIR(AIDI_KOD:Integer);
begin
DataForm.DATA.VERI_GETIR_TABLE.Close;
DataForm.DATA.lDataSet := DataForm.DATA.Temp.VERI_GETIR(AIDI_KOD);
DataForm.DATA.DSP := TDataSetProvider.Create(Self);
try
DataForm.DATA.DSP.DataSet := DataForm.DATA.lDataSet;
DataForm.DATA.VERI_GETIR_TABLE.SetProvider(DataForm.DATA.DSP);
DataForm.DATA.VERI_GETIR_TABLE.Open;
finally
DataForm.DATA.VERI_GETIR_TABLE.SetProvider(nil);
DataForm.DATA.DSP.Free;
end;
end;
procedure TDATA.DataModuleCreate(Sender: TObject);
begin
Temp := TServerMethods1Client.Create(DSRestConnection1);
end;
procedure TDATA.DataModuleDestroy(Sender: TObject);
begin
Temp.Free;
end;
end.