Perangkat Penghitung Waktu Kerja dan Penentuan Antrian.
Universitas Kristen Maranatha
PERANGKAT PENGHITUNG WAKTU KERJA
DAN PENENTUAN ANTRIAN
Disusun oleh :
Nama : Roki Fernando
NRP : 0422078
Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha,
Jl. Prof.Drg.Suria Sumantri, MPH no.65, Bandung, Indonesia,
email : roki_fernando@yahoo.com
ABSTRAK
Penghitungan waktu kerja akan dibutuhkan untuk perbaikan di masa yang
akan datang. Kebutuhan akan hal tersebut dapat digunakan pada bengkel-bengkel
sepeda motor.
Pada tugas akhir ini, telah dirancang dan direalisasikan perangkat untuk
mengatur sistem antrian dan penghitung waktu pengerjaan yang dilakukan
mekanik bengkel. Perangkat yang dibuat menggunakan sensor
infrared
GP2D12
yang dikendalikan oleh pengontrol mikro untuk mendeteksi jarak yang kemudian
dikonversi menjadi data waktu. Data waktu akan menjadi tolok ukur untuk
pengaturan antrian dan penghitungan waktu penyelesaian pengerjaan yang
dilakukan mekanik bengkel. Data dikirim ke komputer menggunakan komunikasi
serial RS-232 dengan tampilan berbentuk
form
dua dimensi yang dibuat
menggunakan Microsoft
Visual Basic
6.0.
Dari hasil percobaan menunjukkan proses pengiriman data waktu dari
pengontrol mikro ketampilan
Visual Basic
berhasil dan perangkat penghitung
waktu pengerjaan yg dilakukan oleh mekanik bengkel telah berhasil dibuat
dengan baik.
Kata Kunci : Sensor
infrared
GP2D12, Pengontrol Mikro ATmega16 dan
Microsoft
Visual Basic
.
(2)
Universitas Kristen Maranatha
WORK TIME COUNTER DEVICE AND
QUEUING DETERMINATION
Composed By :
Nama : Roki Fernando
NRP : 0422078
Electrical Engineering, Faculty of Engineering, Maranatha Christian University
,
Jl. Prof.Drg.Suria Sumantri, MPH no.65, Bandung, Indonesia,
email: roki_fernando@yahoo.com
ABSTRACT
Time counter of work will be required for improvement in the future. The
need for it is can be used in motorcycle workshops.
In this final project, has been designed and realized a device to regulate the
queuing system and processing time by a mechanics. The device is made by using
an infrared GP2D12 censor which controlled by micro controller to detect the
distance and then converted into time data. The data will be a benchmarks for
setting queues and counting the time to completion of work on the mechanical
workshop. The data will be sent to a computer using RS-232 series
communication in two dimension form which is made with Microsoft Visual
Basic 6.0.
The results of the experiments, shows that transmission of the data from
micro controllers to the Visual Basic appearance managed and the time counter
device for mechanical workshop were successful made it well.
Keywords : Infrared Censor GP2D12, ATmega16 Microcontroller and Microsof
Visual Basic.
(3)
Universitas Kristen Maranatha
DAFTAR ISI
Halaman
ABSTRAK ...
i
ABSTRACT ...
ii
KATA PENGANTAR ...
iii
DAFTAR ISI ...
v
DAFTAR TABEL ...
viii
DAFTAR GAMBAR ...
ix
BAB I
PENDAHULUAN
I.1 Latar Belakang ...
1
I.2 Identifikasi Masalah ...
2
I.3 Perumusan Masalah ...
2
I.4 Tujuan ...
2
I.5 Pembatasan Masalah ...
2
I.6 Spesifikasi Alat ...
2
I.7 Sistematika Penulisan ...
3
BAB II LANDASAN TEORI
II.1 Antrian ...
4
II.1.1 Karakteristik Sistem Antrian ...
4
II.1.1.1 Pola Kedatangan ...
4
II.1.1.2 Antrian ...
5
II.1.1.3 Fasilitas Pelayanan ...
5
II.2 Sensor ...
8
II.2.1 Sensor
Infrared
...
8
II.3 Pengontrol Mikro ...
10
II.3.1 Pengontrol Mikro ATmega16 ...
10
II.3.1.1 Fitur ATmega16 ...
10
(4)
Universitas Kristen Maranatha
II.3.1.3 Diagram Blok ATmega16 ...
14
II.3.1.4
General Purpose Register
ATmega16 ...
15
II.3.1.5 Peta Memori ATmega16 ...
16
II.3.2. Pemrograman pada AVR ATmega 16 ...
18
II.4 Visual Basic ...
18
II.4.1 Pengaksesan dengan Menggunakan Kontrol MSComm
pada Visual Basic ...
22
II.5 Tata Cara Komunikasi Data Serial ...
22
II.5.1 Alasan Penggunaan Port Serial ...
23
II.5.2 Pengenalan Antarmuka RS-232 ...
23
BAB III PERANCANGAN DAN REALISASI
III.1 Perancangan Aplikasi Alat Penghitung Waktu ...
26
III.2 Perancangan dan Realisasi Aplikasi Alat Penghitung
Waktu Kerja ...
27
III.2.1 Perancangan dan Realisasi Rangkaian Sensor ...
28
III.3 Pengontrol Mikro ...
29
III.3.1 Skematik Pengontrol Berbasis Pengontrol Mikro ATmega16 ...
29
III.3.2 Antarmuka Komunikasi Serial RS-232 ...
32
III.4 Perangkat Lunak pada Pengontrol Mikro ...
32
III.5 Perancangan Antar Muka Pemakai (
User Interface
) ...
35
BAB IV DATA PENGAMATAN DAN ANALISA
IV.1 Pengujian Perangkat Lunak ...
38
IV.2 Pengujian Simulasi Sistem ...
41
BAB V KESIMPULAN DAN SARAN
V.1 Kesimpulan ...
46
V.2 Saran ...
46
(5)
Universitas Kristen Maranatha
LAMPIRAN A FOTO PERANGKAT ALAT
LAMPIRAN B PROGRAM PADA PENGONTROL MIKRO ATMEGA16
LAMPIRAN C PROGRAM PADA MICROSOFT VISUAL BASIC 6.0
(6)
Universitas Kristen Maranatha
DAFTAR TABEL
Halaman
Tabel 2.1 Fungsi Khusus Port B ...
13
Tabel 2.2 Fungsi Khusus Port C ...
13
Tabel 2.3 Fungsi Khusus Port D ...
14
Tabel 2.4 Konfigurasi Pin dan Nama Sinyal Konektor Serial ...
24
(7)
Universitas Kristen Maranatha
DAFTAR GAMBAR
Halaman
Gambar 2.1 Single Channel, Single Server ...
6
Gambar 2.2 Single Channel, Multi Server ...
6
Gambar 2.3 Multi Channel, Single Server ...
7
Gambar 2.4 Multi Channel, Multi Server ...
7
Gambar 2.5 Bentuk Sensor
Infrared
...
9
Gambar 2.6 Pengaruh Jarak Terhadap Besarnya Sudut ...
9
Gambar 2.7 Konfigurasi Pin ATmega16 ...
12
Gambar 2.8 Diagram Blok ATmega16 ...
15
Gambar 2.9
General Purpose Register
ATmega16 ...
16
Gambar 2.10 Peta Memori Program ATmega16 ...
17
Gambar 2.11 Peta Memori Data ATmega16...
17
Gambar 2.12 Tampilan Microsoft Visual Basic 6.0 ...
19
Gambar 2.13 Konektor Serial DB-9
Male
pada Bagian Belakang CPU ....
23
Gambar 2.14 Konektor Serial DB-9
Female
pada Bagian Belakang
CPU ...
24
Gambar 3.1 Diagram Blok Sistem Antrian ...
26
Gambar 3.2 Dimensi Perangkat Tampak Atas ...
27
Gambar 3.3 Dimensi Perangkat Tampak Depan ...
28
Gambar 3.4 Alokasi Pin Sensor
Infrared
...
29
Gambar 3.5 Skematik Pengontrol Berbasis Mikro ATmega16 ...
31
Gambar 3.6 Skematik Antarmuka RS-232...
32
Gambar 3.7 Diagram Alir Perangkat Lunak pada Pengontrol Mikro ...
33
Gambar 3.8 Diagram Alir
Subroutine
Sensor
Infrared
GP2d12...
34
Gambar 3.9 Diagram Alir
Subroutine
Waktu ...
34
Gambar 3.10 Tampilan Awal
Form
pada MS-Visual Basic ...
35
Gambar 3.11 Tampilan
Form
Data Pekejaan pada MS-Visual Basic ...
36
Gambar 3.12 Tampilan
Form
Data Pendaftaran pada MS-Visual Basic ..
36
(8)
Universitas Kristen Maranatha
Gambar 4.1 Tampilan Form Menu Utama ...
38
Gambar 4.2 Input Data Pekerjaan A ...
39
Gambar 4.3 Input Data Pekerjaan B ...
39
Gambar 4.4 Tampilan Form Pendaftaran A ...
40
Gambar 4.5 Tampilan Form Pendaftaran B ...
40
Gambar 4.6 Tampilan Form Antrian ...
41
Gambar 4.7 Tampilan Ketika Sepeda Motor Antrian
Terakhir yaitu Antrian Kelima Keluar dari Pit A...
42
Gambar 4.8 Tampilan Segala Aktivitas
Service
...
42
Gambar 4.9 Tampilan Ketika Sepeda Motor Antrian
Terakhir yaitu Antrian Kelima Keluar dari Pit A...
43
Gambar 4.10 Tampilan Segala Aktivitas
Service
...
44
Gambar 4.11 Tampilan Ketika Sepeda Motor Antrian
Terakhir yaitu Antrian Kelima Keluar dari Pit A...
45
(9)
LAMPIRAN A
(10)
A-1
(11)
A-2
(12)
A-3
(13)
LAMPIRAN B
PROGRAM PADA PENGONTROL MIKRO
ATMEGA 16
(14)
B-1
Program Utama
/***************************************************** This program was produced by the
CodeWizardAVR V1.25.3 Standard Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com
Project : Version :
Date : 23/01/2011 Author : F4CG Company : F4CG Comments:
Chip type : ATmega16 Program type : Application Clock frequency : 11,095200 MHz Memory model : Small
External SRAM size : 0 Data Stack size : 256
*****************************************************/
#include <mega16.h> #include <stdio.h> #include <delay.h> #include <math.h>
// Alphanumeric LCD Module functions #asm
.equ __lcd_port=0x15 ;PORTC #endasm
#include <lcd.h>
#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits // of the AD conversion result
unsigned char read_adc(unsigned char adc_input) {
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Start the AD conversion
(15)
B-2
ADCSRA|=0x40;// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10; return ADCH; }
// Declare your global variables here char text[16];
char text1[16]; char text2[16]; char text4[16];
unsigned int dl,sl,dr,sr,t1,t2;
/*
void sensor(void) {
// sensor 1 sr=read_adc(1); if(sr<30) sr=20;
dr=2141.72055*(pow(sr,-1.078867));
if(dr<30) t1++; lcd_clear();
sprintf(text,"j1=%3dcm/%7dj2=%3dcm/%7d",dr,t1,dl,t2); lcd_puts(text);
delay_ms(50);
// sensor 2 sl=read_adc(2); if(sl<30) sl=20;
dl=2141.72055*(pow(sl,-1.078867));
if(dl<30) //t1++; lcd_clear();
//sprintf(text,"j1=%3dcm/%7dj2=%3dcm/%7d",dr,t1,dl,t2); lcd_puts(text);
(16)
B-3
delay_ms(50);}
*/
void sensor_infrared(void) {
sr=read_adc(1); if(sr<30) sr=20;
dr=2141.72055*(pow(sr,-1.078867)); sprintf(text,"In1=%3u",dr);
sl=read_adc(2); if(sl<30) sl=20;
dl=2141.72055*(pow(sl,-1.078867)); sprintf(text1,"In2=%3u",dl);
lcd_clear(); lcd_gotoxy(0,0); lcd_puts(text); lcd_gotoxy(9,0); lcd_puts(text1);
delay_ms(50);
}
void timer_1(void) {
t1++; lcd_clear();
sprintf(text2,"t1=%4d",t1);
lcd_gotoxy(0,1); lcd_puts(text2); delay_ms(50);
(17)
B-4
}void timer_2(void) {
t2++; lcd_clear();
sprintf(text4,"t2=%4d",t2); lcd_gotoxy(0,1);
lcd_puts(text4); delay_ms(50); }
void timer_bareng(void)
{ t1++; lcd_clear();
sprintf(text4,"t2=%4d",t1); lcd_gotoxy(0,1);
lcd_puts(text4);
t2++;
sprintf(text4,"t2=%4d",t2); lcd_gotoxy(0,1);
lcd_puts(text2);
delay_ms(50);
}
void reset(void) {
t1=1;
lcd_clear(); lcd_gotoxy(0,1); lcd_puts(text2);
t2=1;
(18)
B-5
lcd_puts(text4);delay_ms(50); }
void main(void) {
// Declare your local variables here
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0xff;
DDRD=0xff;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00;
TCNT0=0x00; OCR0=0x00;
(19)
B-6
// Clock source: System Clock// Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off
// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;
TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// Analog Comparator initialization // Analog Comparator: Off
(20)
B-7
ACSR=0x80;SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 693,450 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: None // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84;
// LCD module initialization lcd_init(16);
lcd_putsf("INFRARED"); delay_ms(2000);
while (1) {
// Place your code here // sr=read_adc(1); // if(sr<30) // sr=20;
// dr=2141.72055*(pow(sr,-1.078867)); // sprintf(text,"Infrared1=%3u",dr); //
// // // ukur timer ---// // //
// // if (c>=300) // // {
// // t1++; // // lcd_clear();
// // sprintf(text,"j1=%3dcm/%7dj2=%3dcm/%7d",a/10,t1,x/10,t2); // // sprintf(komp,"$%3d/%7d!%3d/%7d",a/10,t1,x/10,t2); // //
// // lcd_puts(text);
// // puts(komp); //tampilkan pesan dan ganti baris // // putchar('');
// //
// // delay_us(20); //
// // ---// // // sensor 2 ---//
(21)
B-8
//// sl=read_adc(2); // if(sl<30) // sl=20;
// dl=2141.72055*(pow(sl,-1.078867)); // sprintf(text1,"Infrared2=%3u",dl); //
// lcd_clear(); // lcd_gotoxy(0,0); // lcd_puts(text); // lcd_gotoxy(0,1); // lcd_puts(text1); //
// delay_ms(40);
sensor_infrared();
if(dl <= 30 && dr <= 30) { PORTD.0=1; PORTD.2=1; PORTD.4=1; PORTD.6=1; PORTD.1=1; PORTD.3=1; PORTD.5=1; PORTD.7=1; timer_bareng(); }
else if(dr <= 30) { PORTD.1=0; PORTD.3=0; PORTD.5=0; PORTD.7=0; PORTD.0=1; PORTD.2=1; PORTD.4=1; PORTD.6=1; timer_1(); //delay_ms(100); }
(22)
B-9
{PORTD.0=0; PORTD.2=0; PORTD.4=0; PORTD.6=0; PORTD.1=1; PORTD.3=1; PORTD.5=1; PORTD.7=1; timer_2(); //delay_ms(100); }
else reset();
}; }
(23)
LAMPIRAN C
PROGRAM PADA MICROSOFT
VISUAL BASIC 6.0
(24)
C-1
Program Antrian
Dim onLock1 As Boolean, onLock2 As Boolean, oSW1 As Integer, oSW2 As Integer Dim Init1 As Boolean, Init2 As Boolean, BufT2 As String, BufT1 As String
Dim tmpID1 As String, tmpID2 As String
Private Sub Command1_Click() Dim ts As String
If Command1.Caption = "Run" Then Timer1.Enabled = True
Command1.Caption = "Stop"
ElseIf Command1.Caption = "Stop" Then Timer1.Enabled = False
Command1.Caption = "Run" End If
onLock1 = False onLock2 = False oSW1 = 0 oSW2 = 0 End Sub
Sub LoadAntrian(krit As String) With DE.Commands("QSelect")
.CommandText = "SELECT * FROM t_service " & IIf(krit = "", "", krit) Set RSTp = .Execute
If Not RSTp.BOF Then RSTp.MoveFirst LsAntre.Clear
LVID.Clear Do Until RSTp.EOF
LVID.AddItem RSTp.Fields(0) LsAntre.AddItem RSTp.Fields(5) RSTp.MoveNext
Loop
' JR = CDbl(RSTp.RecordCount)
' fr.SB.Panels(1).Text = CStr(RSTp.RecordCount) & " Record(s)" End With
End Sub
(25)
C-2
Dim LL As ListBox, LR As ListBox, rsLOC As New ADODB.Recordset, LB As Label Dim Lind As ListBox
Dim TotTime As Integer
If pit = "A" Then Set LL = JD1 Set LR = AVT1 Set LB = TAT1 Set Lind = ListA1 ElseIf pit = "B" Then Set LL = JD2 Set LR = AVT2 Set LB = TAT2 Set Lind = ListB1 End If
With DE.Commands("QSelect")
.CommandText = "SELECT * FROM t_detservice WHERE idsvc = '" & kyt & "'" Set rsLOC = .Execute
If Not rsLOC.BOF Then rsLOC.MoveFirst LL.Clear
LR.Clear TotTime = 0 Do Until rsLOC.EOF
LL.AddItem rsLOC.Fields(2) LR.AddItem rsLOC.Fields(3)
TotTime = TotTime + rsLOC.Fields(3) rsLOC.MoveNext
Loop
LB.Caption = TotTime Lind.AddItem TotTime ' JR = CDbl(RSTp.RecordCount)
' fr.SB.Panels(1).Text = CStr(RSTp.RecordCount) & " Record(s)" End With
End Sub
Sub RecordData(pit As String)
Dim LTL As ListBox, LTR As ListBox, rsLOC As New ADODB.Recordset, LBT As Label Dim LBS As ListBox
(26)
C-3
If pit = "A" ThenSet LTL = ListA2 Set LTR = ListA3 Set LBT = TAT1 Set LBS = ListA1 ElseIf pit = "B" Then Set LTL = ListB2 Set LTR = ListB3 Set LBT = TAT2 Set LBS = ListB1 End If
If LBS.ListCount = 0 Then Exit Sub
If pit = "A" Then LTL.AddItem BufT1
' Eft = (CDbl(BufT1) / CDbl(LBT.Caption)) * 100 Eft = CDbl(LBT.Caption) - CDbl(BufT1) ElseIf pit = "B" Then
LTL.AddItem BufT2
' Eft = (CDbl(BufT2) / CDbl(LBT.Caption)) * 100 Eft = CDbl(LBT.Caption) - CDbl(BufT2) End If
LTR.AddItem Round(Eft, 3)
'--- Save ke Database ---
Call UpdateTable("t_service", "jamservice = '" & Format(Time, "hh:mm:ss") & _ "', pit = '" & pit & "', tavt = " & LBS.List(0) & ", totaltime = " & _
IIf(pit = "A", CStr(CInt(BufT1)), CStr(CInt(BufT2))) & ", selisih = " & _ Replace(Round(Eft, 3), ",", ".", , , vbTextCompare) & _
" WHERE idsvc = '" & IIf(pit = "A", tmpID1, tmpID2) & "'")
End Sub
Private Sub Command2_Click() Call LoadAntrian("WHERE pit = ''")
If LsAntre.ListCount > 0 Then Command1.Enabled = True
(27)
C-4
"Pastikan Device dalam Posisi ON sebelum klik RUN" End SubPrivate Sub Form_Load() Dim j As Integer
MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.InputLen = 0
MSComm1.PortOpen = True
onLock1 = False onLock2 = False Init1 = True Init2 = True
Call LoadAntrian(" WHERE pit is null")
End Sub
Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False
End Sub
Private Sub TBuf1_Timer()
End Sub
Private Sub TBuf2_Timer() End Sub
Private Sub TBuf_Timer() BufT2 = T2.Text BufT1 = T1.Text End Sub
Private Sub Timer1_Timer()
Dim sf1 As String, sf2 As String, sf3 As String, sf4 As String, sf5 As String, sf6 As String, v As Integer Dim ambil As String, pck As String
(28)
C-5
On Error GoTo ConError
status.Caption = "ON-LINE"
hasil = MSComm1.Input
If hasil = "" Then GoTo ConError
sf1 = Replace(hasil, Chr(10), "", , , vbTextCompare) sf2 = Replace(sf1, Space(1), "0", , , vbTextCompare)
For t = 1 To Len(hasil) If Mid(sf2, t, 1) <> "" Then
If Asc(Mid(sf2, t, 1)) > 47 And Asc(Mid(sf2, t, 1)) < 58 Then pck = pck & Mid(Trim(sf2), t, 1)
End If
If Asc(Mid(sf2, t, 1)) = 47 Then pck = pck & Mid(Trim(sf2), t, 1) End If
If Asc(Mid(sf2, t, 1)) = 33 Then pck = pck & Mid(Trim(sf2), t, 1) End If
If Asc(Mid(sf2, t, 1)) = 36 Then pck = pck & Mid(Trim(sf2), t, 1) End If
End If Next t
If Len(Trim(pck)) >= 24 Then ambil = Left(Trim(pck), 32) End If
List1.AddItem ambil
Text1.Text = ambil
part = Split(ambil, "$")
(29)
C-6
If LBound(pecah) = 0 ThenSen1 = Split(pecah(0), "/") J1.Text = Sen1(0) T1.Text = Sen1(1) End If
If UBound(pecah) = 1 Then If Len(pecah(1)) = 11 Then Sen2 = Split(pecah(1), "/") J2.Text = Sen2(0) T2.Text = Sen2(1) End If
End If
If J1.Text = "" Or J2.Text = "" Then Exit Sub
If Init1 = True And CInt(J1.Text) <> 0 Then NOA1.Caption = LsAntre.List(0) ListA.AddItem LsAntre.List(0) tmpID1 = LVID.List(0)
Call FillDetails("A", LVID.List(0))
LsAntre.RemoveItem 0 LVID.RemoveItem 0
Init1 = False End If
If Init2 = True And CInt(J2.Text) <> 0 Then NOA2.Caption = LsAntre.List(0) ListB.AddItem LsAntre.List(0) tmpID2 = LVID.List(0)
Call FillDetails("B", LVID.List(0))
LsAntre.RemoveItem 0 LVID.RemoveItem 0
Init2 = False End If
(30)
C-7
If CInt(J1.Text) < 30 And CInt(T1.Text) <> 0 And ListA.ListCount <> ListA2.ListCount Then LS1.ForeColor = vbRed
LS1.Caption = "IN" Timer3.Enabled = True
ElseIf CInt(J1.Text) > 30 And CInt(T1.Text) = 0 Then LS1.ForeColor = vbGreen
LS1.Caption = "OUT" End If
If CInt(J2.Text) < 30 And CInt(T2.Text) <> 0 And ListB.ListCount <> ListB2.ListCount Then LS2.ForeColor = vbRed
LS2.Caption = "IN" Timer2.Enabled = True
ElseIf CInt(J2.Text) > 30 And CInt(T2.Text) = 0 Then LS2.ForeColor = vbGreen
LS2.Caption = "OUT" End If
If onLock1 = True And LS2.Caption = "OUT" Then If CInt(T2.Text) = 0 And oSW1 = 0 Then Call RecordData("B")
If LsAntre.ListCount <> 0 Then NOA2.Caption = LsAntre.List(0) ListB.AddItem LsAntre.List(0) tmpID2 = LVID.List(0)
Call FillDetails("B", LVID.List(0)) LsAntre.RemoveItem 0
LVID.RemoveItem 0 Else
If ListA.ListCount = ListA2.ListCount Then JD2.Clear
AVT2.Clear TAT2.Caption = "" NOA2.Caption = "" LS2.Caption = "" Label5.Caption = "" Timer1.Enabled = False End If
End If
(31)
C-8
oSW1 = 1onLock1 = False End If
Else oSW1 = 0 End If
If onLock2 = True And LS1.Caption = "OUT" Then If CInt(T1.Text) = 0 And oSW2 = 0 Then Call RecordData("A")
If LsAntre.ListCount <> 0 Then NOA1.Caption = LsAntre.List(0) ListA.AddItem LsAntre.List(0) tmpID1 = LVID.List(0)
Call FillDetails("A", LVID.List(0)) LsAntre.RemoveItem 0
LVID.RemoveItem 0 Else
If ListB.ListCount = ListB2.ListCount Then JD1.Clear
AVT1.Clear TAT1.Caption = "" NOA1.Caption = "" LS1.Caption = "" Label6.Caption = "" Timer1.Enabled = False End If
End If
Label6.Caption = "" oSW2 = 1
onLock2 = False End If
Else oSW2 = 0 End If
Exit Sub ConError: If hasil = "" Then
(32)
C-9
status.Caption = "OFF-LINE - No Data Received" Elsestatus.Caption = "OFF-LINE" & " " & Err.Description End If
J1.Text = "000" T1.Text = "0000000" J2.Text = "000" T2.Text = "0000000" LS1.Caption = "" LS2.Caption = "" Label5.Caption = "" Label6.Caption = ""
End Sub
Private Sub Timer2_Timer()
If CInt(T2.Text) > 50 And ListB.ListCount <> ListB2.ListCount Then onLock1 = True
Label5.Caption = "WORKING" Timer2.Enabled = False End If
End Sub
Private Sub Timer3_Timer()
If CInt(T1.Text) > 50 And ListA.ListCount <> ListA2.ListCount Then onLock2 = True
Label6.Caption = "WORKING" Timer3.Enabled = False End If
(33)
C-10
Program Pendaftaran
Dim Mode As Integer, TotBeli As Double, onKlik As Boolean, RPO As Integer Dim tmKDB As String, tmKDS As String, onsdet As Boolean
Function CekBasket(kn As String) As Boolean Dim i As Integer
CekBasket = True For i = 1 To GRB.Rows - 1 If GRB.TextMatrix(i, 0) = kn Then CekBasket = False
Exit For End If Next i End Function
Sub DisplayDetail(ky As String) pnDet.Visible = False
With DE.Commands("QSelect")
.CommandText = "select a.idsvc, b.nojob, b.jobname, b.averagetime from " & _ "t_detservice a inner join t_jobS b on a.nojob=b.nojob where a.idsvc = '" & ky & "'" Set rsdt = .Execute
Set GRDT.DataSource = rsdt GRDT.Columns(0).Width = 1200 GRDT.Columns(2).Width = 900 GRDT.Columns(3).Width = 1000 End With
pnDet.Visible = True End Sub
Private Sub B1_Click() Mode = 1
I1.Text = NewKeys("t_service", "idsvc", "S") Call KunciTeks(0, True)
Call AturTombol(FDaftar, "00110")
I9.Text = AutoUrut("t_service")
End Sub
(34)
C-11
Dim rsLOC As New ADODB.RecordsetWith DE.Commands("QSelect")
.CommandText = "SELECT stokakhir from t_barang WHERE id_barang = '" & ky & "'" Set rsLOC = .Execute
If rsLOC.RecordCount = 0 Then GetStok = 0
Else
GetStok = rsLOC.Fields(0) End If
Set rsLOC = Nothing End With
End Function
Private Sub B10_Click() Dim subttl As Double With GRB
.TextMatrix(RPO, 0) = tmKDB .TextMatrix(RPO, 1) = I3.Text .TextMatrix(RPO, 2) = I6.Text
Call SumGrid
TBELI.Caption = Format(TotBeli, "###,###,###") Call Bersih(1)
B10.Enabled = False B7.Enabled = False B2.Enabled = False B8.Enabled = False Mode = 1
I3.SetFocus
End With End Sub
Private Sub B2_Click() Dim y As Integer Mode = 2
tmKDB = GRB.TextMatrix(GRB.Row, 0) For y = 0 To I3.ListCount - 1
If GRB.TextMatrix(GRB.Row, 1) = I3.List(y) Then I3.ListIndex = y
(35)
C-12
Exit ForEnd If Next y
I5.Text = GRB.TextMatrix(GRB.Row, 0) I6.Text = GRB.TextMatrix(GRB.Row, 2) ' I6.Text = GRB.TextMatrix(GRB.Row, 4) B8.Enabled = False
B10.Enabled = True B2.Enabled = False B7.Enabled = False End Sub
'Function CekKodeNIP() As Boolean 'Dim rsLOC As New ADODB.Recordset 'With DE.Commands("QSelect")
' .CommandText = "SELECT nip from pembelian WHERE nip = '" & _ ' I1.Text & "'"
' Set rsLOC = .Execute
' If rsLOC.RecordCount = 0 Then ' CekKodeNIP = True
' Else
' CekKodeNIP = False ' End If
'End With 'End Function
Private Sub B3_Click()
Dim j As Integer, cStok As Double If GRB.Rows = 1 Then
MsgBox "Keranjang masih kosong", vbExclamation, "Validasi" Exit Sub
End If
If I8.Text = "" Or I9.Text = "" Then
MsgBox "Masih ada yang kosong", vbExclamation, "Validasi" Exit Sub
End If
'If Mode = 1 Then
' If CekKodeNIP = False Then
(36)
C-13
' Exit Sub' End If 'End If
If Mode = 1 Then
Call InsertTable("t_service", "idsvc, tglservice, jamservice, nostnk, pit, noantri," & _ "tavt, totaltime, efisiensi", "'" & _
I1.Text & "','" & Format(Date, "dd/mm/yyyy") & "','','" & I8.Text & "',''," & I9.Text & _ ",0,0,0")
For j = 1 To GRB.Rows - 1
Call InsertTable("t_detservice", "idsvc, nojob, jobname, averagetime", "'" & _ I1.Text & "','" & GRB.TextMatrix(j, 0) & "','" & GRB.TextMatrix(j, 1) & "'," & _ GRB.TextMatrix(j, 2))
Next j
End If Mode = 0 TotBeli = 0
' Call PreviewNota(I1.Text)
Call DisplayData(FDaftar, "t_service", "") Set GRD.DataSource = RSTp
Call Bersih(0)
Call KunciTeks(0, False) Call KunciTeks(1, False)
Call AturTombol(FDaftar, IIf(JR = 0, "10000", "10001"))
End Sub
Private Sub B4_Click() Mode = 0
Call Bersih(0)
Call KunciTeks(0, False) Call KunciTeks(1, False)
Call AturTombol(FDaftar, IIf(JR = 0, "10000", "10001")) End Sub
(37)
C-14
Private Sub B5_Click()If MsgBox("Hapus PO dengan Nomor PO " & RSTp.Fields(0) & "?", _ vbQuestion + vbYesNo, "Hapus") = vbNo Then Exit Sub
With DE.Commands("QInsert")
.CommandText = "DELETE FROM po WHERE no_po='" & RSTp.Fields(0) & "'" .Execute
.CommandText = "DELETE FROM po_detail WHERE no_po='" & RSTp.Fields(0) & "'" .Execute
End With Mode = 0
Call DisplayData(FDaftar, "po", "") Set GRD.DataSource = RSTp
Call AturTombol(FDaftar, IIf(JR = 0, "10000", "10001"))
End Sub
Private Sub Command5_Click() Unload Me
End Sub
Private Sub B6_Click() Unload Me
End Sub
Private Sub B7_Click()
Dim pgl() As String, subttl As Double, cStok As Double
If CekBasket(tmKDB) = False Then
MsgBox "Pekerjaan sudah ditambahkan", vbExclamation, "Validasi" Exit Sub
End If
With GRB
pgl = Split(LV2.List(I3.ListIndex), "#")
.AddItem pgl(0) & vbTab & I3.Text & vbTab & I6.Text End With
(38)
C-15
TBELI.Caption = Format(TotBeli, "###,###,###")Call KunciTeks(0, False) Call Bersih(1)
I3.SetFocus End Sub
Sub SumGrid() Dim e As Integer TotBeli = 0
For e = 1 To GRB.Rows - 1
TotBeli = TotBeli + CDbl(GRB.TextMatrix(e, 2)) Next e
End Sub
Private Sub B8_Click() If GRB.Rows <> 1 Then
TotBeli = TotBeli - GRB.TextMatrix(GRB.Rows - 1, 2) GRB.Rows = GRB.Rows - 1
Call SumGrid
TBELI.Caption = Format(TotBeli, "###,###,###")
B8.Enabled = False Mode = 1
B2.Enabled = False If GRB.Rows = 1 Then B10.Enabled = False End If
End If End Sub
Private Sub bBersih_Click()
If MsgBox("Hapus Semua Transaksi ?", _
vbQuestion + vbYesNo, "Hapus") = vbNo Then Exit Sub With DE.Commands("QInsert")
.CommandText = "DELETE FROM t_service" .Execute
.CommandText = "DELETE FROM t_detservice" .Execute
(39)
C-16
End WithMode = 0
Call DisplayData(FDaftar, "t_service", "") Set GRD.DataSource = RSTp
pnDet.Visible = False
Call AturTombol(FDaftar, IIf(JR = 0, "10000", "10001"))
End Sub
Private Sub bHapus_Click()
If MsgBox("Hapus Transaksi dengan Nomor : " & RSTp.Fields(0) & "?", _ vbQuestion + vbYesNo, "Hapus") = vbNo Then Exit Sub
With DE.Commands("QInsert")
.CommandText = "DELETE FROM t_service WHERE idsvc='" & RSTp.Fields(0) & "'" .Execute
.CommandText = "DELETE FROM t_detservice WHERE idsvc='" & RSTp.Fields(0) & "'" .Execute
End With Mode = 0
Call DisplayData(FDaftar, "t_service", "") Set GRD.DataSource = RSTp
pnDet.Visible = False
Call AturTombol(FDaftar, IIf(JR = 0, "10000", "10001"))
End Sub
Private Sub Command6_Click() If Cari.ListIndex < 0 Then Exit Sub With RSTp
If Not .BOF Then .MoveFirst
.Find Cari.Text & "='" & Tcr.Text & "'", , adSearchForward, 0 If .EOF Then
MsgBox "Data Tidak Ditemukan", vbExclamation, "Cari" Exit Sub
End If Tcr.Text = ""
(40)
C-17
End WithEnd Sub
Private Sub Form_Activate() Mode = 0
onKlik = False onsdet = False
tgl.Caption = Format(Date, "dd mmmm yyyy") Call SetupGrid
Call RaiseData(1)
Call DisplayData(FDaftar, "t_service", " ORDER BY idsvc") Set GRD.DataSource = RSTp
GRD.Columns(0).Width = 600 GRD.Columns(1).Width = 1000 GRD.Columns(2).Width = 900 GRD.Columns(3).Width = 1000 GRD.Columns(4).Width = 600 GRD.Columns(5).Width = 800 GRD.Columns(6).Width = 800 GRD.Columns(7).Width = 800 GRD.Columns(8).Width = 800
GRD.Columns(3).NumberFormat = "Rp###,###,###"
B7.Enabled = False If onCash = 1 Then Label20.Enabled = False I15.Enabled = False End If
Call AturTombol(FDaftar, IIf(JR = 0, "10000", "10001")) End Sub
Sub IsiEdit() With RSTp
I1.Text = .Fields(0) I2.Text = .Fields(1) I3.Text = .Fields(2) I2.SetFocus End With End Sub
(41)
C-18
Sub Bersih(md As Integer)If md = 0 Then I1.Text = "" I3.ListIndex = -1 I5.Text = "" I6.Text = "0" I8.Text = "" I9.Text = ""
pnBarang.Visible = False
TotBeli = 0
TBELI.Caption = "0" GRB.Rows = 1 ElseIf md = 1 Then I3.ListIndex = -1 I5.Text = "" I6.Text = "0" End If End Sub
Sub KunciTeks(md As Integer, ak As Boolean) If md = 0 Then
I8.Enabled = ak
If ak = True Then I8.SetFocus Else
I3.Enabled = ak I5.Enabled = ak End If
End Sub
Private Sub Form_Load() Dim j As Integer
Call KunciTeks(0, False) Call KunciTeks(1, False) End Sub
Sub RaiseData(ix As Integer, Optional krit As String)
Dim tbl As String, rsLOC As New ADODB.Recordset, sqle As String Dim cmb As ComboBox, Ls As ListBox
(42)
C-19
Select Case ixCase 1
tbl = "t_barang" Set cmb = I3 Set Ls = LV2
sqle = "SELECT * FROM t_jobs ORDER BY nojob" Case 2
tbl = "t_pelanggan" Set cmb = I7 Set Ls = Lv3
sqle = "SELECT * FROM t_pelanggan order by id_pelanggan" End Select
With DE.Commands("QSelect") .CommandText = sqle Set rsLOC = .Execute
If rsLOC.RecordCount = 0 Then Exit Sub cmb.Clear
JKel = CStr(rsLOC.RecordCount) Ls.Clear
Do Until rsLOC.EOF If ix = 1 Then
cmb.AddItem rsLOC.Fields(1)
Ls.AddItem rsLOC.Fields(0) & "#" & rsLOC.Fields(2) Else
cmb.AddItem rsLOC.Fields(1)
Ls.AddItem rsLOC.Fields(0) & "#" & rsLOC.Fields(2) & "#" & rsLOC.Fields(3) End If
rsLOC.MoveNext Loop
End With
End Sub
Sub SetupGrid() On Error Resume Next With GRB
.FixedCols = 0 .FixedRows = 1 .Cols = 3 .Rows = 1
(43)
C-20
.TextMatrix(0, 0) = "No Job".TextMatrix(0, 1) = "Nama Pekerjaan"
.TextMatrix(0, 2) = "Average" & vbCrLf & "Time(ms)"
.ColWidth(1) = 2700 .ColWidth(2) = 1400 End With
End Sub
Private Sub GRB_Click() onKlik = True
End Sub
Private Sub GRB_RowColChange() If onKlik = False Then Exit Sub RPO = GRB.Row
B2.Enabled = True B7.Enabled = False B8.Enabled = True End Sub
Private Sub GRD_Click() onsdet = True
End Sub
Private Sub GRD_RowColChange(LastRow As Variant, ByVal LastCol As Integer) If RSTp.RecordCount = 0 Then Exit Sub
If onsdet = True Then bHapus.Enabled = True
Call DisplayDetail(RSTp.Fields(0)) End If
End Sub
Private Sub I11_Change()
If I11.Text = "" Then I11.Text = "0" If TotBeli = 0 Then Exit Sub
Dim tem As Double
tem = TotBeli - CDbl(I11.Text) PPN.Caption = Round(tem * 0.1, 2)
(44)
C-21
NETTO.Caption = CStr(tem + CDbl(PPN.Caption)) End SubFunction CekisPO(kp As String) As Boolean Dim rsLOC As New ADODB.Recordset With DE.Commands("QSelect")
.CommandText = "SELECT no_ro from po WHERE no_ro = '" & kp & "'" Set rsLOC = .Execute
If rsLOC.RecordCount = 0 Then CekisPO = True
Else
CekisPO = False End If
End With End Function
Private Sub I2_Click()
If I2.ListIndex < 0 Then Exit Sub Dim ptg() As String
ptg = Split(Lv1.List(I2.ListIndex), "#")
tmKDS = ptg(0)
If CekisPO(tmKDS) = False Then
MsgBox "Request Order telah terdaftar pada Purchase Order", vbExclamation, "Validasi" Exit Sub
End If
I7.Text = ptg(1) I8.Text = ptg(2) I9.Text = ptg(3) I10.Text = ptg(4)
pnBarang.Visible = True Call RaiseData(1, ptg(0)) End Sub
Private Sub I3_Click()
If I3.ListIndex < 0 Then Exit Sub Dim ptg() As String
(45)
C-22
ptg = Split(LV2.List(I3.ListIndex), "#")tmKDB = ptg(0)
I5.Text = ptg(0) I6.Text = ptg(1)
If Mode = 1 Then B7.SetFocus End Sub
Private Sub I5_Change() If Mode = 2 Then Exit Sub
If I5.Text = "" Or I6.Text = "" Then B7.Enabled = False
Else
B7.Enabled = True End If
End Sub
Private Sub I6_Change() If Mode = 2 Then Exit Sub
If I5.Text = "" Or I6.Text = "" Then B7.Enabled = False
Else
B7.Enabled = True End If
End Sub
Private Sub I7_Click()
If I7.ListIndex < 0 Then Exit Sub Dim ptg() As String
ptg = Split(Lv3.List(I7.ListIndex), "#") tmKDS = ptg(0)
I8.Text = ptg(2) I9.Text = ptg(1)
pnBarang.Visible = True Call KunciTeks(1, True)
(46)
C-23
I3.SetFocusEnd Sub
Private Sub I8_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then
pnBarang.Visible = True Call KunciTeks(1, True) I3.SetFocus
End If End Sub
Private Sub Tcr_Change() pnDet.Visible = False onsdet = False End Sub
(47)
C-24
Program Data Pekerjaan
Dim Mode As Integer
Private Sub B1_Click() Mode = 1
I1.Text = NewKeys("t_jobs", "nojob", "J") Call KunciTeks(True)
Call AturTombol(FJob, "00110") End Sub
Private Sub B2_Click() Mode = 2
Call KunciTeks(True)
Call AturTombol(FJob, "00110") Call IsiEdit
End Sub
Function CekKunci() As Boolean Dim rsLOC As New ADODB.Recordset With DE.Commands("QSelect")
.CommandText = "SELECT nojob from t_jobs WHERE nojob = '" & _ I1.Text & "'"
Set rsLOC = .Execute
If rsLOC.RecordCount = 0 Then CekKunci = True
Else
CekKunci = False End If
End With End Function
Function CekNama() As Boolean Dim rsLOC As New ADODB.Recordset With DE.Commands("QSelect")
.CommandText = "SELECT Jobname from t_jobs WHERE jobname = '" & _ I2.Text & "'"
Set rsLOC = .Execute
If rsLOC.RecordCount = 0 Then CekNama = True
(48)
C-25
CekNama = FalseEnd If End With End Function
Private Sub B3_Click()
If I1.Text = "" Or I2.Text = "" Or I3.Text = "" Then
MsgBox "Masih ada yang belum terisi", vbExclamation, "Validasi" Exit Sub
End If
If Not IsNumeric(I3.Text) Then
MsgBox "Waktu Rata2 Pekerjaan harus dengan Angka", vbExclamation, "Validasi" Exit Sub
End If
If Mode = 1 Then If CekKunci = False Then
MsgBox "No Pekerjaan sudah terdaftar", vbExclamation, "Error" Exit Sub
End If
If CekNama = False Then
MsgBox "Nama Pekerjaan sudah terdaftar", vbExclamation, "Error" Exit Sub
End If End If
If Mode = 1 Then
Call InsertTable("t_jobs", "nojob, jobname, " & _ "averagetime", "'" & I1.Text & "','" & I2.Text & _ "','" & I3.Text & "'")
ElseIf Mode = 2 Then
Call UpdateTable("t_jobs", "jobname = '" & I2.Text & _ "',averagetime = '" & I3.Text & _
"' WHERE nojob='" & I1.Text & "'") End If
Mode = 0
Call DisplayData(FJob, "t_jobs", "") Set GRD.DataSource = RSTp
(49)
C-26
Call BersihCall KunciTeks(False)
Call AturTombol(FJob, IIf(JR = 0, "10000", "10001"))
End Sub
Private Sub B4_Click() Mode = 0
Call Bersih
Call KunciTeks(False)
Call AturTombol(FJob, IIf(JR = 0, "10000", "10001")) End Sub
Private Sub B5_Click()
If MsgBox("Hapus Pekerjaan dengan Nama " & RSTp.Fields(1) & "?", _ vbQuestion + vbYesNo, "Hapus") = vbNo Then Exit Sub
With DE.Commands("QInsert")
.CommandText = "DELETE FROM t_jobs WHERE nojob='" & RSTp.Fields(0) & "'" .Execute
End With Mode = 0
Call DisplayData(FJob, "t_jobs", "") Set GRD.DataSource = RSTp
Call AturTombol(FJob, IIf(JR = 0, "10000", "10001"))
End Sub
Private Sub Command5_Click() Unload Me
End Sub
Private Sub B6_Click() Unload Me
End Sub
Private Sub Command6_Click() If Command6.Caption = "Cari" Then If Cari.ListIndex < 0 Then Exit Sub
Call DisplayData(FJob, "t_jobs", " WHERE " & Cari.Text & " LIKE '%" & Tcr.Text & "%'") Set GRD.DataSource = RSTp
(50)
C-27
MsgBox "Data Tidak Ditemukan", vbExclamation, "Cari" Exit SubEnd If Tcr.Text = ""
Call AturTombol(FJob, "11001") Command6.Caption = "Refresh"
ElseIf Command6.Caption = "Refresh" Then Call AturTombol(FJob, "11001")
Command6.Caption = "Cari" Cari.ListIndex = -1
Call DisplayData(FJob, "t_jobs", "") Set GRD.DataSource = RSTp End If
End Sub
Private Sub Form_Activate() Mode = 0
Call DisplayData(FJob, "t_jobs", "") Set GRD.DataSource = RSTp
Call AturTombol(FJob, IIf(JR = 0, "10000", "10001")) End Sub
Sub IsiEdit() With RSTp
I1.Text = .Fields(0) I2.Text = .Fields(1) I3.Text = .Fields(2) I2.SetFocus End With End Sub
Sub Bersih() I1.Text = "" I2.Text = "" I3.Text = "" End Sub
Sub KunciTeks(ak As Boolean) I1.Enabled = ak
I2.Enabled = ak I3.Enabled = ak
(51)
C-28
If ak = True Then I2.SetFocusEnd Sub
Private Sub Form_Load() Call KunciTeks(False) End Sub
Private Sub GRD_Click() onKlik = True
Call AturTombol(FJob, "11001") End Sub
(52)
C-29
Program Menu Utama
Sub SwitchMenus(sets As String) M1.Enabled = KonvBool(Mid(sets, 1, 1)) M2.Enabled = KonvBool(Mid(sets, 2, 1)) M3.Enabled = KonvBool(Mid(sets, 3, 1)) bOK.Visible = Not KonvBool(Mid(sets, 3, 1)) PD.Enabled = Not KonvBool(Mid(sets, 3, 1)) UN.Enabled = Not KonvBool(Mid(sets, 3, 1)) End Sub
Private Sub bOK_Click() If UN.Text = "admin" Then If PD.Text = "987123" Then Call SwitchMenus("111") Else
MsgBox "Password Salah" End If
Else
MsgBox "UserID Salah" End If
End Sub
Private Sub Form_Load() Call SwitchMenus("000")
End Sub
Private Sub M01_Click() End
End Sub
Private Sub M1_Click() FJob.Show
End Sub
Private Sub M2_Click() FDaftar.Show End Sub
(53)
C-30
FAntre.ShowEnd Sub
Private Sub PD_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then bOK_Click
End Sub
Private Sub UN_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then PD.SetFocus
(54)
LAMPIRAN D
DATASHEET
(55)
1
Universitas Kristen MaranathaBAB I
PENDAHULUAN
Pada bab ini berisi tentang latar belakang, identifikasi masalah, perumusan
masalah, tujuan, pembatasan masalah, spesifikasi alat, dan sistematika penulisan
laporan tugas akhir.
I.1
Latar Belakang
Setiap layanan jasa mengutamakan pelayanan yang memuaskan untuk
pelanggan. Baik itu dari segi waktu antrian, pelayanan keluhan, waktu tunggu
selama pelayanan, dan hasil yang ingin dicapai oleh pelanggan. Kepuasan
pelanggan dalam memperoleh pelayanan adalah tujuan akhir yang ingin dicapai
dari setiap perusahaan jasa.
Perusahaan yang mengutamakan kepuasan pelayanan untuk pelanggan
harus membuat sistem yang efektif.
1.
Dari segi pelayanan pelanggan.
2.
Sistem dapat memberikan layanan yang memuaskan.
3.
Dalam proses pengerjaan keluhan pelanggan, dapat meminimalisasi
kesalahan.
Perusahaan yang mengutamakan antrian yang efektif salah satu contohnya
adalah bengkel perbaikan sepeda motor. Keterkaitan sistem antrian yang dibuat
agar pelanggan memperoleh layanan yang memuaskan, dapat dilihat dari
pengerjaan mekanik bengkel yang dapat mengerjakan pekerjaan dengan cepat dan
efektif, serta ditunjang dengan pelayanan yang baik juga.
Pada tugas akhir ini, dibuat sebuah sistem antrian yang mengutamakan
kepuasan pelanggan dari segi waktu antrian. Sistem dapat memberikan estimasi
waktu yang dibutuhkan selama proses pengerjaan.
(56)
BAB I PENDAHULUAN
Universitas Kristen Maranatha
2
I.2
Identifikasi Masalah
Identifikasi masalah pada tugas akhir ini adalah kebutuhan perhitungan
sistem antrian dari segi waktu layanan untuk kepuasan pelanggan.
1.3
Perumusan Masalah
Bagaimana merealisasikan sistem dan program untuk menghitung lama
waktu pengerjaan mekanik bengkel?
I.4
Tujuan
Tujuan dari Tugas Akhir ini adalah membuat perangkat lunak untuk
penghitungan waktu mekanik bengkel dan penentuan antrian pelanggan berbasis
pengontrol mikro AVR dan menggunakan bahasa pemrograman
Visual Basic
.
I.5
Pembatasan Masalah
Pembatasan masalah pada tugas akhir ini dibatasi oleh :
1.
Sistem antrian yang dibuat hanya dua kanal antrian.
2.
Masukan diperoleh dari komputer admin secara manual.
3.
Keluaran berupa informasi yang ditunjukkan oleh tampilan berupa nomor
urut antrian berikutnya dan hasil penghitungan waktu.
4.
Sistem antrian berdasarkan disiplin antrian FIFO (
First In First Out).
5.
Data keluaran yang diperoleh hanya untuk komputer admin saja, tidak dapat
dipublikasikan.
6.
Tampilan
Visual Basic
di komputer disesuaikan dengan kebutuhan admin.
I.6
Spesifikasi Alat yang digunakan
Spesifikasi alat yang digunakan adalah :
1.
Sistem dapat secara otomatis mendeteksi waktu apabila ada kendaraan yang
masuk dalam sistem.
(57)
BAB I PENDAHULUAN
Universitas Kristen Maranatha
3
3.
Berbentuk perangkat keras yang menggunakan dua buah sensor jarak
infrared
GP2D12 untuk mendeteksi kendaraan yang masuk berupa sepeda
motor dengan cara mengukur jaraknya.
4.
Tampilan pada komputer admin menggunakan Microsoft
Visual Basic
6.0
sebagai program untuk menampilkan hasil penghitungan waktu dan antrian
pada layar komputer.
I.7
Sistematika Penulisan
Laporan terdiri dari beberapa bab dengan garis besar sebagai berikut :
BAB I PENDAHULUAN
Pada bab ini berisi tentang latar belakang, identifikasi masalah, perumusan
masalah, tujuan, pembatasan masalah, spesifikasi alat, serta sistematika penulisan
laporan tugas akhir.
BAB II LANDASAN TEORI
Pada bab ini dijelaskan mengenai teori-teori penunjang yang diperlukan dalam
merealisasikan tugas akhir yaitu berupa teori tentang antrian FIFO, cara kerja
sensor jarak, pengontrol mikro,
serial port
yang digunakan untuk komunikasi dari
komputer ke pengontrol mikro, dan bahasa pemograman Microsoft
Visual Basic
6.0
untuk tampilan serta pengaturan antrian.
BAB III PERANCANGAN DAN REALISASI
Pada bab ini diuraikan tentang perancangan aplikasi dan realisasi perangkat
penghitung waktu. Diagram blok, cara kerja alat penghitung waktu mekanik
bengkel, perangkat keras (ATmega16 dan sensor jarak). serta perangkat lunak
yang dilengkapi dengan diagram alir.
BAB IV ANALISA DAN DATA PENGAMATAN
Pada bab ini dijelaskan proses pengambilan data pengamatan yang dilakukan oleh
sistem antrian dan analisanya.
BAB V KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan dari tugas akhir dan saran yang diperlukan untuk
perbaikan di masa mendatang.
(58)
Universitas Kristen Maranatha
46
BAB V
KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan dari Tugas Akhir dan saran-saran yang
perlu dilakukan untuk perbaikan di masa mendatang.
V.1
Kesimpulan
Dalam
Perancangan alat penghitung waktu kerja, dapat disimpulkan
beberapa hal seperti berikut :
1.
Dari hasil tiga kali percobaan dengan memasukkan lima buah data antrian,
menunjukkan proses pengiriman data waktu dari pengontrol mikro
ketampilan
Visual Basic
berhasil.
2.
Perangkat dapat menghitung waktu pengerjaan yg dilakukan oleh mekanik
bengkel dengan baik.
V.2
Saran
Saran-saran yang dapat diberikan untuk perbaikan dan pengembangan
Tugas Akhir ini di masa mendatang adalah :
(59)
Universitas Kristen Maranatha Universitas Kristen Maranatha
47
DAFTAR PUSTAKA
1.
Adrian, A.,
Laporan Tugas Akhir : Aplikasi Perintah Suara untuk
Menggerakkan Robot,
Teknik Elektro, Universitas Kristen Maranatha,
Bandung, 2009.
2.
Andrianto, H.,
Buku Panduan : Pelatihan Mikrokontroler AVR ATmega16
,
2008.
3.
Budiharto, W.,
Panduan Praktikum : Mikrokontroler AVR Atmega16
, Jakarta :
Gramedia, 2008.
4.
Sembiring, F.,
Laporan Tugas Akhir : Aplikasi Sensor Kompas untuk Pencatat
Rute Perjalanan,
Teknik Elektro, Universitas Kristen Maranatha, Bandung,
2010.
5.
Setiadi, A.,
Laporan Tugas Akhir : Robot Humanoid,
Teknik Elektro,
Universitas Kristen Maranatha, Bandung, 2009.
6.
http://www.atmel.com
7.
http://www.mikron123.com/index.php/vmchk/Jarak/View-all-products.html
8.
http://www.sutanto.staff.uns.ac.id/files/2009/03/bab10a.pdf
(1)
LAMPIRAN D
DATASHEET
(2)
1 Universitas Kristen Maranatha
BAB I
PENDAHULUAN
Pada bab ini berisi tentang latar belakang, identifikasi masalah, perumusan masalah, tujuan, pembatasan masalah, spesifikasi alat, dan sistematika penulisan laporan tugas akhir.
I.1 Latar Belakang
Setiap layanan jasa mengutamakan pelayanan yang memuaskan untuk pelanggan. Baik itu dari segi waktu antrian, pelayanan keluhan, waktu tunggu selama pelayanan, dan hasil yang ingin dicapai oleh pelanggan. Kepuasan pelanggan dalam memperoleh pelayanan adalah tujuan akhir yang ingin dicapai dari setiap perusahaan jasa.
Perusahaan yang mengutamakan kepuasan pelayanan untuk pelanggan harus membuat sistem yang efektif.
1. Dari segi pelayanan pelanggan.
2. Sistem dapat memberikan layanan yang memuaskan.
3. Dalam proses pengerjaan keluhan pelanggan, dapat meminimalisasi kesalahan.
Perusahaan yang mengutamakan antrian yang efektif salah satu contohnya adalah bengkel perbaikan sepeda motor. Keterkaitan sistem antrian yang dibuat agar pelanggan memperoleh layanan yang memuaskan, dapat dilihat dari pengerjaan mekanik bengkel yang dapat mengerjakan pekerjaan dengan cepat dan efektif, serta ditunjang dengan pelayanan yang baik juga.
Pada tugas akhir ini, dibuat sebuah sistem antrian yang mengutamakan kepuasan pelanggan dari segi waktu antrian. Sistem dapat memberikan estimasi waktu yang dibutuhkan selama proses pengerjaan.
(3)
BAB I PENDAHULUAN
Universitas Kristen Maranatha 2
I.2 Identifikasi Masalah
Identifikasi masalah pada tugas akhir ini adalah kebutuhan perhitungan sistem antrian dari segi waktu layanan untuk kepuasan pelanggan.
1.3 Perumusan Masalah
Bagaimana merealisasikan sistem dan program untuk menghitung lama waktu pengerjaan mekanik bengkel?
I.4 Tujuan
Tujuan dari Tugas Akhir ini adalah membuat perangkat lunak untuk penghitungan waktu mekanik bengkel dan penentuan antrian pelanggan berbasis pengontrol mikro AVR dan menggunakan bahasa pemrograman Visual Basic.
I.5 Pembatasan Masalah
Pembatasan masalah pada tugas akhir ini dibatasi oleh : 1. Sistem antrian yang dibuat hanya dua kanal antrian. 2. Masukan diperoleh dari komputer admin secara manual.
3. Keluaran berupa informasi yang ditunjukkan oleh tampilan berupa nomor urut antrian berikutnya dan hasil penghitungan waktu.
4. Sistem antrian berdasarkan disiplin antrian FIFO (First In First Out).
5. Data keluaran yang diperoleh hanya untuk komputer admin saja, tidak dapat dipublikasikan.
6. Tampilan Visual Basic di komputer disesuaikan dengan kebutuhan admin.
I.6 Spesifikasi Alat yang digunakan
Spesifikasi alat yang digunakan adalah :
1. Sistem dapat secara otomatis mendeteksi waktu apabila ada kendaraan yang masuk dalam sistem.
(4)
BAB I PENDAHULUAN
Universitas Kristen Maranatha 3
3. Berbentuk perangkat keras yang menggunakan dua buah sensor jarak infrared GP2D12 untuk mendeteksi kendaraan yang masuk berupa sepeda motor dengan cara mengukur jaraknya.
4. Tampilan pada komputer admin menggunakan Microsoft Visual Basic 6.0 sebagai program untuk menampilkan hasil penghitungan waktu dan antrian pada layar komputer.
I.7 Sistematika Penulisan
Laporan terdiri dari beberapa bab dengan garis besar sebagai berikut : BAB I PENDAHULUAN
Pada bab ini berisi tentang latar belakang, identifikasi masalah, perumusan masalah, tujuan, pembatasan masalah, spesifikasi alat, serta sistematika penulisan laporan tugas akhir.
BAB II LANDASAN TEORI
Pada bab ini dijelaskan mengenai teori-teori penunjang yang diperlukan dalam merealisasikan tugas akhir yaitu berupa teori tentang antrian FIFO, cara kerja sensor jarak, pengontrol mikro, serial port yang digunakan untuk komunikasi dari komputer ke pengontrol mikro, dan bahasa pemograman Microsoft Visual Basic 6.0 untuk tampilan serta pengaturan antrian.
BAB III PERANCANGAN DAN REALISASI
Pada bab ini diuraikan tentang perancangan aplikasi dan realisasi perangkat penghitung waktu. Diagram blok, cara kerja alat penghitung waktu mekanik bengkel, perangkat keras (ATmega16 dan sensor jarak). serta perangkat lunak yang dilengkapi dengan diagram alir.
BAB IV ANALISA DAN DATA PENGAMATAN
Pada bab ini dijelaskan proses pengambilan data pengamatan yang dilakukan oleh sistem antrian dan analisanya.
BAB V KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan dari tugas akhir dan saran yang diperlukan untuk perbaikan di masa mendatang.
(5)
Universitas Kristen Maranatha 46
BAB V
KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan dari Tugas Akhir dan saran-saran yang perlu dilakukan untuk perbaikan di masa mendatang.
V.1 Kesimpulan
Dalam Perancangan alat penghitung waktu kerja, dapat disimpulkan beberapa hal seperti berikut :
1. Dari hasil tiga kali percobaan dengan memasukkan lima buah data antrian, menunjukkan proses pengiriman data waktu dari pengontrol mikro ketampilan Visual Basic berhasil.
2. Perangkat dapat menghitung waktu pengerjaan yg dilakukan oleh mekanik bengkel dengan baik.
V.2 Saran
Saran-saran yang dapat diberikan untuk perbaikan dan pengembangan Tugas Akhir ini di masa mendatang adalah :
(6)
Universitas Kristen Maranatha
Universitas Kristen Maranatha
47
DAFTAR PUSTAKA
1. Adrian, A., Laporan Tugas Akhir : Aplikasi Perintah Suara untuk
Menggerakkan Robot, Teknik Elektro, Universitas Kristen Maranatha,
Bandung, 2009.
2. Andrianto, H., Buku Panduan : Pelatihan Mikrokontroler AVR ATmega16, 2008.
3. Budiharto, W., Panduan Praktikum : Mikrokontroler AVR Atmega16, Jakarta : Gramedia, 2008.
4. Sembiring, F., Laporan Tugas Akhir : Aplikasi Sensor Kompas untuk Pencatat Rute Perjalanan, Teknik Elektro, Universitas Kristen Maranatha, Bandung, 2010.
5. Setiadi, A., Laporan Tugas Akhir : Robot Humanoid, Teknik Elektro, Universitas Kristen Maranatha, Bandung, 2009.
6. http://www.atmel.com
7. http://www.mikron123.com/index.php/vmchk/Jarak/View-all-products.html 8. http://www.sutanto.staff.uns.ac.id/files/2009/03/bab10a.pdf