• Tidak ada hasil yang ditemukan

Perangkat Penghitung Waktu Kerja dan Penentuan Antrian.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perangkat Penghitung Waktu Kerja dan Penentuan Antrian."

Copied!
59
0
0

Teks penuh

(1)

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.

(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.

(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

(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

(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);

(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);

(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);

(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);

//

// // ---//

(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

(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" Then

Set 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 Sub

Private 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 Then

Sen1 = 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

(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 = 1

onLock1 = 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:

(32)

C-9

status.Caption = "OFF-LINE - No Data Received"

Else

status.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.Recordset

With 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

(35)

C-12

Exit For

End 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"))

(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"

(39)

C-16

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 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 With

End 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

(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

(42)

C-19

Select Case ix

Case 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)

(44)

C-21

NETTO.Caption = CStr(tem + CDbl(PPN.Caption))

End Sub

Function 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

(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

(46)

C-23

I3.SetFocus

End 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

(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 = False

End 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", "")

(49)

C-26

Call Bersih

Call 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 Sub

End 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

(51)

C-28

If ak = True Then I2.SetFocus

End Sub

Private Sub Form_Load()

Call KunciTeks(False)

End Sub

Private Sub GRD_Click()

onKlik = True

Call AturTombol(FJob, "11001")

(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.Show

End 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

(55)

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.

(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

(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

Referensi

Dokumen terkait

tersebut, maka dapat disimpulkan antara PT LSI dengan Terdakwa tidak ada pertemuan kesepahaman atau meeting of mind sehubungan dengan bantuan

Sistem ini menggunakan Visual Basic 6.0 yang diharapkan dapat membantu mempermudah dalam pembuatan laporan pencatatan penjualan dan pembelian makanan ayam dan

Anak domba jantan memiliki bobot sapih lebih tinggi dibandingkan betina, seperti terlihat pada hasil penelitian ini rata-rata bobot sapih individual jantan pada

Fasilitas meeting seperti : White board, LCD + Screen, Mike, Block Note + Pensil, Sound System, Flip

[r]

Upaya diplomasi yang dilakukan oleh Indonesia dalam meningkatkan pariwisata Indonesia di dunia internasional ini bertujuan untuk mempromosikan potensi pariwisata

Dalam Rencana Kerja 2015 Badan Pelaksana Penyuluhan Pertanian Periakanan Kehutanan dan Ketahanan Pangan Kabupaten Pasaman Barat akan melaksanakan 30 (tiga puluh)

Kegiatan pengabdian kepada masyarakat (PPM) ini bertujuan untuk meningkatkan pengalaman dan pemahaman guru SMA Negeri 1 Jogonalan Klaten dalam membangun e-learning