You are on page 1of 53

78

LAMPIRAN

Lampiran 1 Surat Kesediaan Membimbing TA


Lampiran 2 Coding Arduino IDE

#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0X3F, 16,2 );
#include "HX711.h"

// HX711.DOUT - pin #7
// HX711.PD_SCK - pin #8

HX711 cell (7, 8);

int berat;
int fix;
long val =0;
float count =0;

#define SS_PIN 10
#define RST_PIN 9
#define servo 3

Servo myservo;
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

void setup()
{
long val =0;
float count =0;
int i;
pinMode(4, INPUT );// set pin as input
lcd.begin();
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
myservo.attach(servo);
// myservo.write(0);
myservo.write(90);
lcd.setCursor(0,0);
lcd.backlight();
lcd.print(" SIMULASI ");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("JEMBATAN TIMBANG");
delay(3000);
lcd.clear();

lcd.setCursor(0,0);
lcd.backlight();
lcd.print("Ibnu Askha. A");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("1604E117");
delay(3000);
lcd.clear();

lcd.setCursor(0,0);
lcd.backlight();
lcd.print("Fachri Cahyo. P");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("1604E137");
delay(3000);

lcd.setCursor(0,0);
lcd.backlight();
lcd.print("Diah Ayu Anggita");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("1604E086");
delay(3000);
lcd.clear();
}

void timbangan()

fix = ((val-106580)/100.99f);
berat = count + 1;
val = 0.5 * val + 0.5 * cell.read();

void reset_state()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(fix);

void rfid()
{

// membaca ID card
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// memilih salah satu card yang terdeteksi
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//tampilkan ID card di serial monitor
lcd.clear();
//Serial.print("");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
String content= "";
byte letter;
Serial.print('(');
for (byte i = 0; i < mfrc522.uid.size; i++)
{

Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");


Serial.print(mfrc522.uid.uidByte[i], HEX);

content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""));


content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.print(')');
lcd.println();
lcd.clear();
lcd.setCursor(0,0);
content.toUpperCase();
Serial.print('*');
Serial.print(fix);
Serial.println('/');

//Serial.println("");
mfrc522.PICC_HaltA();

delay(500);

void loop()
{
lcd.setCursor(0,0);
lcd.backlight();
lcd.print(" SIMULASI ");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("JEMBATAN TIMBANG");

int inf1 = digitalRead(2);


int inf2 = digitalRead(4);
if (inf2 == LOW )
{

// lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" TAP YOUR CARD ");
lcd.setCursor(0,1);
// lcd.backlight();
lcd.print(" Berat= ");
lcd.print(fix);
lcd.print(" gr ");
delay(100);
}

else if(inf2 == LOW && inf1 == LOW){


myservo.write(0);
}
else if (inf1 == HIGH && inf2 == HIGH ){
delay(4000);
myservo.write(90);

if (Serial.available()>0){
char a=Serial.read();
if (a=='A') {
lcd.println(" ID Diterima ");
//Serial.println("A");
myservo.write(0);

//inf();
}
else if (a=='B'){
lcd.print(" ID Ditolak ");
Serial.println("\nUnknown Card");
delay(1000);
}p
}
rfid();
timbangan();
}
Lampiran 3 Coding Delphi
Coding Form Utama
unit Uutama;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, Buttons, CPort, StdCtrls, jpeg, ExtCtrls;

type
TFutama = class(TForm)
btntimbangan: TSpeedButton;
btnregistrasi: TSpeedButton;
btnsetting: TSpeedButton;
XPManifest1: TXPManifest;
btnclose: TSpeedButton;
Label1: TLabel;
btnlaporan: TSpeedButton;
Image1: TImage;
Image2: TImage;
procedure btnregistrasiClick(Sender: TObject);
procedure btnsettingClick(Sender: TObject);
procedure btncloseClick(Sender: TObject);
procedure btntimbanganClick(Sender: TObject);
procedure btnlaporanClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Futama: TFutama;

implementation

uses Uregistrasi, Usetting, Utimbang, Ulaporan;

{$R *.dfm}

procedure TFutama.btnregistrasiClick(Sender: TObject);


begin
try
Fregistrasi:=TFregistrasi.Create(Application);
Fregistrasi.Ekode.Text:='1';
Fregistrasi.ShowModal;
except
Fregistrasi.Free;
end;

end;

procedure TFutama.btnsettingClick(Sender: TObject);


begin
try
Fsetting:=TFsetting.Create(Application);
Fsetting.ShowModal;
except
Fsetting.Free;
end;

end;

procedure TFutama.btncloseClick(Sender: TObject);


begin
Close;
end;

procedure TFutama.btntimbanganClick(Sender: TObject);


begin
try
Ftimbang:=TFtimbang.Create(Application);
Ftimbang.ShowModal;
except
Ftimbang.Free;
end;

end;

procedure TFutama.btnlaporanClick(Sender: TObject);


begin
try
Flaporan:=TFlaporan.Create(Application);
Flaporan.ShowModal;
except
Flaporan.Free;
end;

end;

end.
Coding untuk koneksi
unit UDM;

interface

uses
SysUtils, Classes, UniProvider, MySQLUniProvider, DB, DBAccess, Uni,
MemDS;

type
TDM = class(TDataModule)
Connect: TUniConnection;
MySQL: TMySQLUniProvider;
Qcomalat: TUniQuery;
DScomalat: TDataSource;
Qidentitas: TUniQuery;
DSidentitas: TDataSource;
Qtimbang: TUniQuery;
DStimbang: TDataSource;
Qcari1: TUniQuery;
private
{ Private declarations }
public
{ Public declarations }
end;

var
DM: TDM;

implementation

{$R *.dfm}

end.
Coding Menu Laporan
unit Ulaporan;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBGridEhGrouping, StdCtrls, Buttons, ExtCtrls, GridsEh, DBGridEh,
ComCtrls;

type
TFlaporan = class(TForm)
DBG: TDBGridEh;
Panel1: TPanel;
btncancel: TBitBtn;
DTP1: TDateTimePicker;
btncari: TSpeedButton;
Label1: TLabel;
DTP2: TDateTimePicker;
procedure btncancelClick(Sender: TObject);
procedure DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure btncariClick(Sender: TObject);
procedure DTP1KeyPress(Sender: TObject; var Key: Char);
procedure DTP2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Flaporan: TFlaporan;

implementation

uses UDM, Uni, DB;

{$R *.dfm}

procedure TFlaporan.btncancelClick(Sender: TObject);


begin
Close;
end;

procedure TFlaporan.DBGDrawColumnCell(Sender: TObject; const Rect: TRect;


DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
begin
if DBG.DataSource.DataSet.RecNo>0 then
begin
if Column.Title.Caption='No' then

DBG.Canvas.TextOut(Rect.Left+2,Rect.Top,IntToStr(DBG.DataSource.DataSet.
RecNo));
end;
end;

procedure TFlaporan.btncariClick(Sender: TObject);


begin
with DM.Qtimbang do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM timbang WHERE tanggal BETWEEN '
+QuotedStr(FormatDateTime('yyyy-mm-dd',DTP1.Date))
+' AND '+QuotedStr(FormatDateTime('yyyy-mm-dd',DTP2.Date))
+' ORDER BY tanggal,sopir ASC';
Open;
end;
end;

procedure TFlaporan.DTP1KeyPress(Sender: TObject; var Key: Char);


begin
if key=#13 then btncariClick(nil);
end;

procedure TFlaporan.DTP2KeyPress(Sender: TObject; var Key: Char);


begin
if key=#13 then btncariClick(nil);
end;

end.
Coding Menu Registrasi
unit Uregistrasi;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBGridEhGrouping, ToolCtrlsEh,
EhLibVCL, GridsEh, DBGridEh, Buttons, StdCtrls,
CPort;

type
TFregistrasi = class(TForm)
Panel1: TPanel;
DBG: TDBGridEh;
Ecari: TEdit;
btncari: TSpeedButton;
Label1: TLabel;
Erfid: TEdit;
Mcom: TMemo;
Ekode: TEdit;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Esopir: TEdit;
Enopol: TEdit;
Eberat: TEdit;
Btnsave: TBitBtn;
btncancel: TBitBtn;
btndel: TBitBtn;
com: TComPort;
procedure DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure btncancelClick(Sender: TObject);
procedure btncariClick(Sender: TObject);
procedure EcariKeyPress(Sender: TObject; var Key: Char);
procedure DBGDblClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure comRxChar(Sender: TObject; Count: Integer);
procedure BtnsaveClick(Sender: TObject);
procedure btndelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Fregistrasi: TFregistrasi;

implementation
uses UDM, Uni, DB, MemDS, DBAccess;

{$R *.dfm}

procedure TFregistrasi.DBGDrawColumnCell(Sender: TObject;


const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if DBG.DataSource.DataSet.RecNo>0 then
begin
if Column.Title.Caption='No' then

DBG.Canvas.TextOut(Rect.Left+2,Rect.Top,IntToStr(DBG.DataSource.DataSet.
RecNo));
end;
end;

procedure TFregistrasi.btncancelClick(Sender: TObject);


begin
Close;
end;

procedure TFregistrasi.btncariClick(Sender: TObject);


begin
with DM.Qidentitas do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas WHERE kdrfid LIKE
'+QuotedStr('%'+Ecari.Text+'%')
+' OR sopir LIKE '+QuotedStr('%'+Ecari.Text+'%')
+' OR nopol LIKE '+QuotedStr('%'+Ecari.Text+'%')
+' ORDER BY sopir ASC';
Open;
end;
end;

procedure TFregistrasi.EcariKeyPress(Sender: TObject; var Key: Char);


begin
if key=#13 then btncariClick(nil);
end;

procedure TFregistrasi.DBGDblClick(Sender: TObject);


begin
if DM.Qidentitas.RecordCount>0 then
begin
Erfid.Text:=DM.Qidentitas.FieldValues['kdrfid'];
Esopir.Text:=DM.Qidentitas.FieldValues['sopir'];
Enopol.Text:=DM.Qidentitas.FieldValues['nopol'];
Eberat.Text:=FloatToStr(DM.Qidentitas.FieldValues['kosong']);
Btnsave.Caption:='&EDIT';
end;
end;

procedure TFregistrasi.FormActivate(Sender: TObject);


begin
with DM.Qcomalat do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM comalat';
Open;
end;

com.Port:=DM.Qcomalat.FieldValues['port'];
com.BaudRate:=StrToBaudRate(DM.Qcomalat.FieldValues['baud']);
com.DataBits:=StrToDataBits(DM.Qcomalat.FieldValues['dtbits']);
com.StopBits:=StrToStopBits(DM.Qcomalat.FieldValues['stopbits']);
com.Parity.Bits:=StrToParity(DM.Qcomalat.FieldValues['parity']);

com.FlowControl.FlowControl:=StrToFlowControl(DM.Qcomalat.FieldValues['fl
ow']);
com.Open;
Mcom.Clear;

with DM.Qidentitas do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas ORDER BY sopir ASC';
Open;
end;

end;
procedure TFregistrasi.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
com.Close;
DM.Qidentitas.Close;
end;

procedure TFregistrasi.comRxChar(Sender: TObject; Count: Integer);


var
s,rfid,berat: string;
i,rfid1,rfid2,berat1,berat2: integer;
begin
com.ReadStr(s,Count);
Mcom.Text:=Mcom.Text+s;

if length(Mcom.Text)>500 then Mcom.Clear;

rfid1:=0;
rfid2:=0;
berat1:=0;
berat2:=0;

for i:=1 to length(Mcom.Text) do


begin
if copy(Mcom.Text,i,1)='(' then
begin
if i>rfid1 then rfid1:=i;
end;

if copy(Mcom.Text,i,1)=')' then
begin
if i>rfid2 then rfid2:=i;
end;

if copy(Mcom.Text,i,1)='*' then
begin
if i>berat1 then berat1:=i;
end;

if copy(Mcom.Text,i,1)='/' then
begin
if i>berat2 then berat2:=i;
end;

//if copy(Mcom.Text,i,1)='(' then rfid:=copy(Mcom.Text,i+1,8);


end;

rfid:=copy(Mcom.Text,rfid1+1,rfid2-rfid1-1);
berat:=copy(Mcom.Text,berat1+1,berat2-berat1-1);

with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas WHERE kdrfid='+QuotedStr(rfid);
Open;
end;

if DM.Qcari1.RecordCount=0 then
begin
Erfid.Text:=rfid;
Esopir.Clear;
Enopol.Clear;
Eberat.Text:=berat;
Btnsave.Caption:='&SAVE';
end else
begin
Erfid.Text:=rfid;
Esopir.Text:=DM.Qcari1.FieldValues['sopir'];
Enopol.Text:=DM.Qcari1.FieldValues['nopol'];
Eberat.Text:=FloatToStr(DM.Qcari1.FieldValues['kosong']);
Btnsave.Caption:='&EDIT';
end;
Esopir.SetFocus;
end;

procedure TFregistrasi.BtnsaveClick(Sender: TObject);


var
i,hsl: integer;
berat: string;
begin
if (Erfid.Text='') or (Esopir.Text='') or (Enopol.Text='') or (Eberat.Text='') then
begin
MessageDlg('Data Tidak Lengkap!',mtWarning,[mbOK],0);
Esopir.SetFocus;
end else
begin
berat:=Eberat.Text;
hsl:=0;
for i:=1 to length(berat) do
begin
if (ord(berat[i])<=47) or (ord(berat[i])>=58) then hsl:=hsl+1;
end;

if hsl>0 then
begin
MessageDlg('BERAT TRUCK Tidak Normal!',mtError,[mbOK],0);
end else
begin
if MessageDlg('Yakin Data Sudah
Benar?',mtConfirmation,[mbYes,mbNo],0)=mryes then
begin
if Btnsave.Caption='&SAVE' then
begin
with DM.Qidentitas do
begin
Open;
Append;
FieldValues['kdrfid']:=Erfid.Text;
FieldValues['sopir']:=Esopir.Text;
FieldValues['nopol']:=Enopol.Text;
FieldValues['kosong']:=StrToFloat(Eberat.Text);
Post;
end;
end else
begin
with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='UPDATE identitas SET sopir='+QuotedStr(Esopir.Text)
+', nopol='+QuotedStr(Enopol.Text)
+' WHERE kdrfid='+QuotedStr(Erfid.Text);
Execute;
end;
end;

with DM.Qidentitas do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas ORDER BY sopir ASC';
Open;
end;
MessageDlg('Data Telah Tersimpan',mtInformation,[mbOK],0);
com.WriteStr('A');
end;
end;
end;
end;

procedure TFregistrasi.btndelClick(Sender: TObject);


begin
if (Erfid.Text='') or (Esopir.Text='') or (Enopol.Text='') then
begin
MessageDlg('Tidak Ada Data yang Dihapus!',mtWarning,[mbOK],0);
end else
begin
if MessageDlg('Yakin Menghapus Data
ini?',mtConfirmation,[mbYes,mbNo],0)=mryes then
begin
with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='DELETE FROM identitas WHERE
kdrfid='+QuotedStr(Erfid.Text);
Execute;
end;

MessageDlg('Data Telah Dihapus',mtInformation,[mbOK],0);


btncariClick(nil);
end;
end;
end;

end
Coding Menu Setting
unit Usetting;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, CPort, CPortCtl, Mask, DBCtrls;

type
TFsetting = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
CBport: TComComboBox;
ComPort1: TComPort;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
CBbaud: TComComboBox;
CBdtbits: TComComboBox;
CBstopbits: TComComboBox;
CBparity: TComComboBox;
CBflow: TComComboBox;
btnsave: TBitBtn;
btncancel: TBitBtn;
GBdata: TGroupBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
btnsetting: TBitBtn;
btnclose: TBitBtn;
DBport: TDBEdit;
DBbaud: TDBEdit;
DBdtbits: TDBEdit;
DBstopbits: TDBEdit;
DBparity: TDBEdit;
DBflow: TDBEdit;
procedure btncancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btncloseClick(Sender: TObject);
procedure btnsettingClick(Sender: TObject);
procedure btnsaveClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Fsetting: TFsetting;

implementation

uses UDM, Uni, DB, MemDS, DBAccess;

{$R *.dfm}

procedure TFsetting.btncancelClick(Sender: TObject);


begin
GBdata.Top:=56;
GBdata.Left:=48;
GBdata.Visible:=True;
end;

procedure TFsetting.FormCreate(Sender: TObject);


begin
GBdata.Top:=56;
GBdata.Left:=48;
GBdata.Visible:=True;
end;

procedure TFsetting.FormActivate(Sender: TObject);


begin
with DM.Qcomalat do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM comalat';
Open;
end;
end;

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


begin
DM.Qcomalat.Close;
end;

procedure TFsetting.btncloseClick(Sender: TObject);


begin
Close;
end;

procedure TFsetting.btnsettingClick(Sender: TObject);


begin
CBport.Text:=DBport.Text;
CBbaud.Text:=DBbaud.Text;
CBdtbits.Text:=DBdtbits.Text;
CBstopbits.Text:=DBstopbits.Text;
CBparity.Text:=DBparity.Text;
CBflow.Text:=DBflow.Text;
GBdata.Visible:=False;
end;

procedure TFsetting.btnsaveClick(Sender: TObject);


begin
if MessageDlg('Yakin Semua Data Sudah
Benar?',mtConfirmation,[mbYes,mbNo],0)=mryes then
begin
with DM.Qcomalat do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM comalat';
Open;
end;

if DM.Qcomalat.RecordCount=0 then
begin
with DM.Qcomalat do
begin
Open;
Append;
FieldValues['port']:=CBport.Text;
FieldValues['baud']:=CBbaud.Text;
FieldValues['dtbits']:=CBdtbits.Text;
FieldValues['stopbits']:=CBstopbits.Text;
FieldValues['parity']:=CBparity.Text;
FieldValues['flow']:=CBflow.Text;
Post;
end;
end else
begin
with DM.Qcomalat do
begin
SQL.Clear;
SQL.Text:='UPDATE comalat SET port='+QuotedStr(CBport.Text)
+', baud='+QuotedStr(CBbaud.Text)
+', dtbits='+QuotedStr(CBdtbits.Text)
+', stopbits='+QuotedStr(CBstopbits.Text)
+', parity='+QuotedStr(CBparity.Text)
+', flow='+QuotedStr(CBflow.Text);
Execute;
end;
end;

MessageDlg('Data Telah Tersimpan',mtInformation,[mbOK],0);


with DM.Qcomalat do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM comalat';
Open;
end;
btncancelClick(nil);
end;
end;
end.
Coding Menu Timbang
unit Utimbang;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, DBGridEhGrouping, GridsEh, DBGridEh, Buttons,
ComCtrls, CPort, ToolCtrlsEh, EhLibVCL;

type
TFtimbang = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Erfid: TEdit;
Label2: TLabel;
Esopir: TEdit;
Label3: TLabel;
Enopol: TEdit;
Label4: TLabel;
Ebruto: TEdit;
Label5: TLabel;
Ekosong: TEdit;
Label6: TLabel;
Enetto: TEdit;
Btnsave: TBitBtn;
btncancel: TBitBtn;
DBG: TDBGridEh;
Ltanggal: TLabel;
DTPskrg: TDateTimePicker;
T1: TTimer;
com: TComPort;
Mcom: TMemo;
btnclear: TBitBtn;
T2: TTimer;
Eiddata: TEdit;
btnhapus: TBitBtn;
procedure btncancelClick(Sender: TObject);
procedure T1Timer(Sender: TObject);
procedure DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnsaveClick(Sender: TObject);
procedure btnclearClick(Sender: TObject);
procedure T2Timer(Sender: TObject);
procedure comRxChar(Sender: TObject; Count: Integer);
procedure btnhapusClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Ftimbang: TFtimbang;
hitung: integer;
masuk,keluar,netto: double;

implementation

uses UDM, Uni, DB, MemDS, DBAccess;

{$R *.dfm}

procedure TFtimbang.btncancelClick(Sender: TObject);


begin
Close;
end;

procedure TFtimbang.T1Timer(Sender: TObject);


begin
Ltanggal.Caption:=FormatDateTime('dd-mm-yyyy hh:nn:ss',Now);
DTPskrg.Date:=Now;
end;

procedure TFtimbang.DBGDrawColumnCell(Sender: TObject;


const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if DBG.DataSource.DataSet.RecNo>0 then
begin
if Column.Title.Caption='No' then

DBG.Canvas.TextOut(Rect.Left+2,Rect.Top,IntToStr(DBG.DataSource.DataSet.
RecNo));
end;
end;

procedure TFtimbang.FormActivate(Sender: TObject);


begin
with DM.Qcomalat do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM comalat';
Open;
end;

com.Port:=DM.Qcomalat.FieldValues['port'];
com.BaudRate:=StrToBaudRate(DM.Qcomalat.FieldValues['baud']);
com.DataBits:=StrToDataBits(DM.Qcomalat.FieldValues['dtbits']);
com.StopBits:=StrToStopBits(DM.Qcomalat.FieldValues['stopbits']);
com.Parity.Bits:=StrToParity(DM.Qcomalat.FieldValues['parity']);

com.FlowControl.FlowControl:=StrToFlowControl(DM.Qcomalat.FieldValues['fl
ow']);
com.Open;
Mcom.Clear;

with DM.Qtimbang do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM timbang WHERE
tanggal='+QuotedStr(FormatDateTime('yyyy-mm-dd',Now))
+' ORDER BY IDtimbang ASC';
Open;
end;

Eiddata.Clear;
Erfid.Clear;
Esopir.Clear;
Enopol.Clear;
Ebruto.Text:='0';
Ekosong.Text:='0';
Enetto.Text:='0';
T2.Enabled:=False;
hitung:=0;
//kddaftar:=0;
end;

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


begin
com.Close;
end;

procedure TFtimbang.BtnsaveClick(Sender: TObject);


var
i,hsl: integer;
berat: string;
begin
berat:=Enetto.Text;
hsl:=0;
for i:=1 to length(berat) do
begin
if (ord(berat[i])<=47) or (ord(berat[i])>=58) then hsl:=hsl+1;
end;

if hsl<50 then
begin
MessageDlg('BERAT TRUCK MELEBIHI
KAPASITAS',mtError,[mbOK],0);
end else
if (Erfid.Text<>'') and (Esopir.Text<>'') and (Enetto.Text<>'0') and (hsl=0) then
begin
with DM.Qtimbang do
begin
Open;
Append;
FieldValues['IDdata']:=1;
FieldValues['kdrfid']:=Erfid.Text;
FieldValues['sopir']:=Esopir.Text;
FieldValues['nopol']:=Enopol.Text;
FieldValues['bruto']:=masuk;
FieldValues['kosong']:=keluar;
FieldValues['netto']:=netto;
FieldValues['tanggal']:=DTPskrg.Date;
FieldValues['jam']:=FormatDateTime('hh:nn:ss',Now);
Post;

SQL.Clear;
SQL.Text:='SELECT * FROM timbang WHERE
tanggal='+QuotedStr(FormatDateTime('yyyy-mm-dd',Now))
+' ORDER BY IDtimbang ASC';
Open;
end;

com.WriteStr('A');
MessageDlg(' Data Tersimpan',mtInformation,[mbOK],0)
end;
end;

procedure TFtimbang.btnclearClick(Sender: TObject);


begin
Eiddata.Clear;
Erfid.Clear;
Esopir.Clear;
Enopol.Clear;
Ebruto.Text:='0';
Ekosong.Text:='0';
Enetto.Text:='0';
end;
procedure TFtimbang.T2Timer(Sender: TObject);
begin
hitung:=hitung+1;

if hitung=1 then BtnsaveClick(nil);

if hitung=5 then
begin
T2.Enabled:=False;
hitung:=0;
btnclearClick(nil);
end;
end;

procedure TFtimbang.comRxChar(Sender: TObject; Count: Integer);


var
s,rfid,berat,hsl: string;
i,rfid1,rfid2,berat1,berat2: integer;
begin
com.ReadStr(s,Count);
Mcom.Text:=Mcom.Text+s;

if length(Mcom.Text)>500 then Mcom.Clear;

rfid1:=0;
rfid2:=0;
berat1:=0;
berat2:=0;

for i:=1 to length(Mcom.Text) do


begin
if copy(Mcom.Text,i,1)='(' then
begin
if i>rfid1 then rfid1:=i;
end;

if copy(Mcom.Text,i,1)=')' then
begin
if i>rfid2 then rfid2:=i;
end;

if copy(Mcom.Text,i,1)='*' then
begin
if i>berat1 then berat1:=i;
end;

if copy(Mcom.Text,i,1)='/' then
begin
if i>berat2 then berat2:=i;
end;
end;

rfid:=copy(Mcom.Text,rfid1+1,rfid2-rfid1-1);
berat:=copy(Mcom.Text,berat1+1,berat2-berat1-1);

if length(rfid)=8 then
begin
with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas WHERE kdrfid='+QuotedStr(rfid);
Open;
end;
end;

if (DM.Qcari1.RecordCount=0) and (length(rfid)=8) then


begin
Erfid.Clear;
Esopir.Clear;
Enopol.Clear;
Ebruto.Text:='0';
Ekosong.Text:='0';
Enetto.Text:='0';
MessageDlg('ID TIDAK TERDAFTAR! SILAHKAN MELAKUKAN
REGISTRASI !',mtError,[mbOK],0);
// MessageDlg('SILAHKAN MELAKUKAN REGISTRASI
!',mtError,[mbOK],0);

end;
if (DM.Qcari1.RecordCount<>0) and (length(rfid)=8) then
begin
Erfid.Text:=rfid;
Esopir.Text:=DM.Qcari1.FieldValues['sopir'];
Enopol.Text:=DM.Qcari1.FieldValues['nopol'];
hsl:='';
for i:=1 to length(berat) do
begin
if (ord(berat[i])>47) or (ord(berat[i])<58) then hsl:=hsl+copy(berat,i,1);
end;

Ebruto.Text:=berat;
Ekosong.Text:=hsl;
masuk:=StrToFloatDef(hsl,10);
keluar:=DM.Qcari1.FieldValues['kosong'];
netto:=masuk-keluar;

Ebruto.Text:=FloatToStr(masuk);
Ekosong.Text:=FloatToStr(keluar);
Enetto.Text:=FloatToStr(netto);

//BtnsaveClick(nil); //OTOMATIS SIMPAN


T2.Enabled:=True;
end;
end;

procedure TFtimbang.btnhapusClick(Sender: TObject);


var
idtimbang: integer;
begin
if DM.Qtimbang.RecordCount=0 then
MessageDlg('Tidak Ada Data yang Dihapus!',mtError,[mbOK],0)
else begin
if MessageDlg('Yakin Hapus Data
ini?',mtConfirmation,[mbYes,mbNo],0)=mryes then
begin
idtimbang:=DM.Qtimbang.FieldValues['IDtimbang'];
with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='DELETE FROM timbang WHERE IDtimbang='
+QuotedStr(IntToStr(idtimbang));
Execute;
end;

MessageDlg('Data Telah Dihapus',mtInformation,[mbOK],0);


with DM.Qtimbang do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM timbang WHERE
tanggal='+QuotedStr(FormatDateTime('yyyy-mm-dd',Now))
+' ORDER BY IDtimbang ASC';
Open;
end;
end;
end;
end;

end.
.
Lampiran 4 Dokumentasi Wawancara
Lampiran 5 Dokumentasi Observasi

You might also like