• Tidak ada hasil yang ditemukan

Proses Cetak Tiket dengan Perangkat Keras Printer

BAB IV HASIL PENGAMATAN DAN PEMBAHASAN

4.3. Analisa dan Pembahasan Perangkat Lunak

4.3.2. Aplikasi Visual Basic

4.3.2.4. Proses Cetak Tiket dengan Perangkat Keras Printer

Proses pencetakan tiker masuk yang akan diterima oleh client saat akan masuk ke area parkir mobil dicetak melalui perangkat keras printer. Jenis tulisan yang akan tercetak pada struk parkir Times New Roman sehingga perintah berisi „Printer.Font = "Times New Roman"‟. Perintah printer.currentX dan printer.currentY merupakan perintah pada Visual Basic untuk menentukan posisi tulisan yang akan tercetak nanti atau sebagai koordinat X dan If parkir(2) < 15 And parkir(0) = 15 And parkir(1) = 15 And parkir(4) = 15 Then

Call garis For i = 0 To 3

If PC(i) = False Then

Form1.PC(i).FillColor = &HC000&

Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.C" & i + 1 GoTo tampil4

Y. „Printer.FontSize = 10‟ adalah untuk ukuran tulisan yang akan tercetak. Tulisan yang akan tercetak pada kertas dilakukan dengan perintah „Printer.Print‟. Tiket yang tercetak berisi

ucapan “Selamat Datang” dan pesan informasi yang dituju untuk client yang berisi alamat blok parkir yang akan masih kosong dan terdekat yang terdapat pada form1 Visual Basic di menu toolbox text. Printer.Endcoc merupakan perintah untuk minta diakhiri untuk dicetak sehingga sistem tidak berulang terus untuk mencetak tiket.

Sub cetak()

Printer.Font = "Times New Roman" Printer.CurrentX = 0

Printer.CurrentY = 0 Printer.FontSize = 10

Printer.Print Tab(4); " Selamat Datang " Printer.Print Tab(2); "================" Printer.Print Tab(2); Form1.Text1

Printer.EndDoc End Sub

BAB V

KESIMPULAN DAN SARAN

5.1.

Kesimpulan

Dari hasil pengujian serta pengambilan data pada aplikasi penampil visual basic untuk optimasi ketersediaan tempat parkir mobil, dapat diambil kesimpulan:

1. Lokasi parkir yang telah terisi mobil dan lokasi yang belum terisi mobil dapat terdeteksi oleh sensor dan dapat ditampilkan pada penampil Visual Basic di komputer.

2. Metode optimasi dengan algoritma dijkstra untuk pencarian jalur terpendek dapat berfungsi sesuai rancangan dan sesuai dengan teori. Sistem berhasil mendeteksi jalur yang terdekat sesuai dengan kondisi mobil yang terdeteksi oleh sensor cahaya.

3. Sistem parkir mobil ini mempunyai fasilitas untuk mencetak tiket berupa informasi lokasi parkir yang dituju.

5.2.

Saran

Saran-saran bagi pengembangan selanjutnya adalah:

1. Komunikasi antara mikrokontroler dan PC dikembangkan dengan sistem

wirelessbluetooth sehingga sistem dapat menjadi lebih praktis dan efisien. 2. Karcis parkir yang diterima ditambahkan dengan waktu masuk parkir dan

nomor plat mobil yang dapat dideteksi dengan sensor kamera untuk meningkatkan keamanan.

3. Menambahkan sistem kode batang (barcode) pada karcis untuk pembayaran otomatis dengan mengakulasi waktu datang dengan waktu keluar sesuai dengan biaya yang ditentukan sesuai kebijakan.

DAFTAR PUSTAKA

[1] Ardiana, f., 2011, Sistem Ketersediaan Parkir Mobil Menggunakan SMS (Short Message Service), Institut Bisnis dan Informatika STIKOM Surabaya.

[2] ---,2009.Pengembangan Sistem Pakar Menggunakan Visual Basic. Yogyakarta:Andi Offset.

[3] ---, 2012, Bab III Dasar Teori LDR, STIKOM, Surabaya.

[4] ---, 2014, Data sheet Mikrokontroler Atmega8535, Atmel

[5] Bejo, A., 2008, C dan AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler ATMEGA32, 1st ed, GRAHA ILMU, Yogyakarta.

[6] Winoto, A., 2002, Mikrokontroler AVR ATEMEGA8/32/8535 dan Pemrogramannya dengan Bahasa C pada WinAVR, INFORMATIKA, Bandung.

[7] Heryanto M.A., ST., Ir. Wisni Adi P., 2008, Pemrograman Bahasa C untuk Mikrokontroler ATMEGA32, 1st ed, C.V ANDI OFFSET, Yogyakarta.

[8] Adrianto, H., 2008, Pemrograman Mikrokontroler AVR ATMEGA 16, 1st ed, INFORMATIKA, Bandung.

[9] Sumbodo, W., 2008, Jilid 3, Teknik Produksi Mesin Industri, Direktorat Pembinaan Sekolah Menengah Kejuruan, Dirjen Manajemen Pendidikan Dasar dan Menengah, Hak Cipta Depdiknas.

[10] Zuhal, dan Zhanggischan, 2004, Prinsip Dasar Elektroteknik, PT Gramedia Pustaka Utama, Jakarta.

[11] http://www.fairchildsemi.com/regulator7805, diakses 29 Oktober 2015.

[12] Honeycutt, R.A., 1988, Op Amps and Linear Integrated Circuits, Delmar Publishers Inc., New York.

[13] Fathoni, 2010, Unjuk Kerja Catu Daya 12 Volt 2A dengan Pass Element Transistor NPN dan PNP, Politeknik Negeri Malang.

[14] Suarga,M.Sc.,M.Math.,Ph.D., 2012, Algoritma dan Pemrograman, 2nd ed, C.V ANDI OFFSET, Yogyakarta.

[15] Suryadi,H.s,1996, "Teori Graf Dasar", Gunadarma, Jakarta.

Rangkaian Regulator

Rangkaian Light Dependent Resistor

Rangkaian Komparator

GUI Visual Basic Form 1

GUI Visual Basic Form 1 (Keadaan Parkir Penuh)

Listing Program CVAVR

/***************************************************** Chip type : ATmega32A

Program type : Application

AVR Core Clock frequency: 11.059200 MHz Memory model : Small

External RAM size : 0 Data Stack size : 512

*****************************************************/

#include <mega32a.h> #include <stdio.h> #include <stdlib.h>

#define P_A (~PINC.0*1+~PINC.1*2+~PINC.2*4+~PINC.3*8) #define P_B (~PINC.4*1+~PINC.5*2+~PINC.6*4+~PINC.7*8) #define P_C (~PINA.0*1+~PINA.1*2+~PINA.2*4+~PINA.3*8) #define P_D (~PINB.0*1+~PINB.1*2+~PINB.2*4+~PINB.3*8) #define P_E (~PINB.4*1+~PINB.5*2+~PINB.6*4+~PINB.7*8)

unsigned char cek, parkirA, parkirB, parkirC, parkirD, parkirE;

void cek_parkir() { parkirA=P_A; parkirB=P_B; parkirC=P_C; parkirD=P_D; parkirE=P_E; } void main(void) { DDRA=0x00; PORTA=0xFF; DDRB=0x00; PORTB=0xFF; DDRC=0x00; PORTC=0xFF; DDRD.0=0; PORTD.0=1; DDRD.1=1; PORTD.1=1; // USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On

// USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00;

UCSRB=0x18; UCSRC=0x06; UBRRH=0x00; UBRRL=0x47;

while (1) {

cek=getchar(); // terima data dari serial

if(cek=='M') // apakah data di terima sama dengan M?

{

cek_parkir(); // panggil fungsi cek keadaan parkir

printf("* %d %d %d %d %d #\n",parkirA, parkirB, parkirC, parkirD, parkirE); //

kirim keadaan parkir melalui serial

} } }

Listing Program GUI VISUAL BASIC Dim a, awal, akhir As String

Dim spasi(6), i, k As Byte Dim parkir(5) As Byte Dim waktu, j, x As Byte

Dim PA(4), PB(4), PC(4), PD(4), PE(4) As Boolean

Sub cetak()

Printer.Font = "Times New Roman" Printer.CurrentX = 0

Printer.CurrentY = 0 Printer.FontSize = 10

Printer.Print Tab(4); " Selamat Datang " Printer.Print Tab(2); "================" Printer.Print Tab(2); Form1.Text1

Printer.EndDoc End Sub Function parsing() k = 0 For i = 1 To Len(a) If Mid(a, i, 1) = " " Then spasi(k) = i k = k + 1 End If Next i

parkir(0) = Val(Mid(a, spasi(0), spasi(1) - spasi(0))) 'pakir a parkir(1) = Val(Mid(a, spasi(1), spasi(2) - spasi(1))) 'parkir b parkir(2) = Val(Mid(a, spasi(2), spasi(3) - spasi(2))) 'parkir c parkir(3) = Val(Mid(a, spasi(3), spasi(4) - spasi(3))) 'parkir d parkir(4) = Val(Mid(a, spasi(4), spasi(5) - spasi(4))) 'parkir e End Function

j = x biner = "" For i = 0 To 3 If (j Mod 2) = 1 Then Select Case k Case 0 PA(i) = True Form1.PA(i).FillColor = &H0& Case 1 PB(i) = True Form1.PB(i).FillColor = &H0& Case 2 PC(i) = True Form1.PC(i).FillColor = &H0& Case 3 PD(i) = True Form1.PD(i).FillColor = &H0& Case 4 PE(i) = True Form1.PE(i).FillColor = &H0& End Select Else: Select Case k Case 0 PA(i) = False Form1.PA(i).FillColor = &HFFFFFF Case 1 PB(i) = False Form1.PB(i).FillColor = &HFFFFFF Case 2 PC(i) = False Form1.PC(i).FillColor = &HFFFFFF Case 3 PD(i) = False Form1.PD(i).FillColor = &HFFFFFF Case 4 PE(i) = False Form1.PE(i).FillColor = &HFFFFFF End Select End If j = j \ 2 Next i End Function Function warna() For k = 0 To 4 x = parkir(k) Call konversi(x) Next k

End Function Function garis() For i = 0 To 4 Form1.Line1(i).Visible = Flase Next i End Function Function mencari_parkir() If parkir(0) < 15 Then Call garis For i = 0 To 3

If PA(i) = False Then

Form1.PA(i).FillColor = &HC000&

Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.A" & i + 1 GoTo tampil1 End If Next i tampil1: cetak Form1.Line1(0).Visible = True End If

If parkir(1) < 15 And parkir(0) = 15 Then Call garis

For i = 0 To 3

If PB(i) = False Then

Form1.PB(i).FillColor = &HC000&

Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.B" & i + 1 GoTo tampil2 End If Next i tampil2: cetak Form1.Line1(1).Visible = True End If

If parkir(4) < 15 And parkir(0) = 15 And parkir(1) = 15 Then Call garis

For i = 0 To 3

If PE(i) = False Then

Form1.PE(i).FillColor = &HC000&

Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.E" & i + 1 GoTo tampil3 End If Next i tampil3: cetak Form1.Line1(1).Visible = True Form1.Line1(2).Visible = True End If

If parkir(2) < 15 And parkir(0) = 15 And parkir(1) = 15 And parkir(4) = 15 Then Call garis

For i = 0 To 3

If PC(i) = False Then

Form1.PC(i).FillColor = &HC000&

Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.C" & i + 1 GoTo tampil4 End If Next i tampil4: cetak Form1.Line1(0).Visible = True Form1.Line1(3).Visible = True End If

If parkir(3) < 15 And parkir(0) = 15 And parkir(1) = 15 And parkir(4) = 15 And parkir(2) = 15 Then

Call garis For i = 0 To 3

If PD(i) = False Then

Form1.PD(i).FillColor = &HC000&

Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.D" & i + 1 GoTo tampil5 End If Next i tampil5: cetak Form1.Line1(4).Visible = True End If End Function

Private Sub Cek_Click() waktu = 0 serial.Output = "M" a = "" Do USD = DoEvents() INSTRING$ = serial.Input a = a + INSTRING$ awal = Left(a, 1) akhir = Right(a, 1)

If awal = "*" And akhir = "#" Then

Call parsing ' memanggil fungsi untuk memisahkan data serial Call warna

If parkir(0) = 15 And parkir(1) = 15 And parkir(2) = 15 And parkir(3) = 15 And parkir(4) = 15 Then

Label1(1).Visible = True Label2.Visible = False Timer1.Enabled = True Else:

Form1.Visible = True Call mencari_parkir Timer1.Enabled = True End If

End If

Loop Until INSTRING$ = Chr$(13) End Sub

Private Sub Form_Load() Timer1.Enabled = False Label1(1).Visible = Flase Label2.Visible = True Form1.Visible = False serial.CommPort = 5 serial.Settings = "9600,N,8,1" serial.InputLen = 1 serial.PortOpen = True End Sub

Private Sub Timer1_Timer() If waktu < 6 Then

If parkir(0) = 15 And parkir(1) = 15 And parkir(2) = 15 And parkir(3) = 15 And parkir(4) = 15 Then

Label1(1).Visible = True Label2.Visible = False Else: Form1.Visible = True End If Else Label1(1).Visible = False Label2.Visible = True Form1.Visible = False Timer1.Enabled = False End If waktu = waktu + 1 End Sub

Listing Program Algoritma Dijkstra Pencarian Jalur Terpendek di Visual Basic Private Sub Command1_Click()

Dim panjang(5), panjangA(4), panjangB(3), panjangE(2), panjangD(1) As Integer Dim Min As Integer, i As Integer

Dim LA, LB, LD, LAB, LAC, LBE, LED, LDC As Integer

LA = Val(Text6(0).Text) LB = Val(Text7(2).Text) LD = Val(Text12(6).Text) LAB = Val(Text13(4).Text) LAC = Val(Text8(3).Text) LBE = Val(Text9(7).Text) LED = Val(Text11(5).Text) LDC = Val(Text10(1).Text) panjang(0) = LA 'LA panjang(1) = LB 'LB panjang(2) = 99 'LC panjang(3) = LD 'LD panjang(4) = 99 'LE

panjangA(0) = LAB 'LAB panjangA(1) = LAC 'LAC panjangA(2) = 99 'LAD panjangA(3) = 99 'LAE

panjangB(0) = 99 'LBC panjangB(1) = 99 'LBD panjangB(2) = LBE 'LBE

panjangE(0) = 99 'LEC panjangE(1) = LED 'LED

panjangD(0) = LDC 'LDC

MinA = 32767 'nilai maksimal untuk integer

'mencari minimal a For i = 0 To 4

If panjang(i) < MinA Then MinA = panjang(i) Else

MinA = MinA End If

'cari min bcde For i = 0 To 3

If panjang(i + 1) < panjangA(i) + panjang(0) Then Min = panjang(i + 1)

Else

Min = panjangA(i) + panjang(0) End If

panjang(i + 1) = Min Next i

MinB = 32767 'nilai maksimal untuk integer

'mencari minimal b For i = 1 To 4

If panjang(i) < MinB Then MinB = panjang(i) Else

MinB = MinB End If

Next i

'cari min cde For i = 0 To 2

If panjang(i + 2) < panjangB(i) + panjang(1) Then Min = panjang(i + 2)

Else

Min = panjangB(i) + panjang(1) End If

panjang(i + 2) = Min Next i

MinC = 32767 'nilai maksimal untuk integer

'mencari minimal e For i = 2 To 4

If panjang(i) < MinC Then MinC = panjang(i) Else MinC = MinC End If Next i 'cari min cd For i = 0 To 1

If panjang(i + 2) < panjangE(i) + panjang(4) Then Min = panjang(i + 2)

Else

Min = panjangE(i) + panjang(4) End If

panjang(i + 2) = Min Next i

MinD = 32767 'nilai maksimal untuk integer

'mencari min c For i = 2 To 3

If panjang(i) < MinD Then MinD = panjang(i) Else MinD = MinD End If Next i 'cari min d

If panjang(3) < panjangD(0) + panjang(2) Then MinD = panjang(3)

Else

MinD = panjangD(0) + panjang(2) End If panjang(3) = MinD If a = 1 Then panjang(0) = 99 End If Text1.Text = panjang(0) Text2.Text = panjang(1) Text3.Text = panjang(2) Text4.Text = panjang(3) Text5.Text = panjang(4) End Sub

Dokumen terkait