TUGAS AKHIR
KALKULATOR UNTUK PERHITUNGAN DALAM BENTUK SATUAN WAKTU DENGAN VISUAL BASIC 6
Diajukan Guna Melengkapi Sebagian Syarat Dalam Mencapai Gelar Sarjana Strata Satu (S1)
Disusun Oleh : Nama N.I.M Program Studi Peminatan Pembimbing
: Irfansyah : 41405110138 : Teknik Elektro : Elektronika : Ir. Eko Ihsanto M.Eng.
PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS MERCU BUANA JAKARTA 2009
i
LEMBARPERNYATAAN Yang bertanda tangan di bawah ini : Nama N.I.M Program Studi Fakultas
: Irfansyah : 41405110138 : Teknik Elektro : Tekonologi Industri
Skripsi dengan judul: KALKULATOR UNTUK PERHITUNGAN DALAM BENTUK SATUAN WAKTU DENGAN VISUAL BASIC 6 Dengan ini menyatakan bahwa hasil penulisan Skripsi yang telah saya buat ini merupakan hasil karya sendiri dan benar keasliannya. Apabila ternyata di kemudian hari penulisan Skripsi ini merupakan hasil plagiat atau penjiplakan terhadap karya orang lain, maka saya bersedia mempertanggungjawabkan sekaligus bersedia menerima sanksi berdasarkan aturan tata tertib di Universitas Mercu Buana. Demikian, pernyataan ini saya buat dalam keadaan sadar dan tidak dipaksakan.
Penulis,
(Irfansyah)
ii
LEMBAR PENGESAHAN
KALKULATOR UNTUK PERHITUNGAN DALAM BENTUK SATUAN WAKTU DENGAN VISUAL BASIC 6
Disusun Oleh : Nama N.I.M Jurusan Peminatan Pembimbing
: Irfansyah : 41405110138 : Teknik Elektro : Elektronika : Ir. Eko Ihsanto M.Eng.
Mengetahui Pembimbing
Koordinator Tuga Akhir
(Ir. Eko Ihsanto M.Eng.)
(Jaja Kustija MSc)
Ketua Program Studi Teknik Elektro
(Yudhi Gunardhi ST.MT)
iii
ABSTRAK KALKULATOR UNTUK PERHITUNGAN DALAM BENTUK SATUAN WAKTU DENGAN VISUAL BASIC 6 Mesin hitung atau kalkulator adalah alat untuk menghitung dari perhitungan sederhana seperti penjumlahan, pengurangan, perkalian dan pembagian sampai kepada kalkulator sains yang dapat menghitung rumus matematika tertentu. Pada perkembangannya sekarang ini, kalkulator sering dimasukkan sebagai fungsi tambahan daripada komputer, handphone, bahkan sampai jam tangan. Kalkulator yang akan dibuat dalam tugas akhir ini yaitu Time Code Kalkulator yang berfungsi untuk menghitung penjumlahan dan pengurangan dua buah serial time (serial waktu) atau dalam dunia broadcast (penyiaran) biasa disebut dengan Time Code (TC) menggunakan bahasa pemrograman Visual Basic 6. Bentuk penulisan dari serial time atau Time Code adalah sebagai berikut 23:59:59:24. Angka-angka tersebut masing-masing mewakili satuan waktu yaitu 23 Jam : 59 Menit : 59 Detik 24 Frame. Khusus untuk frame terdapat dua piihan yaitu 25 frames (PAL) dan 29.97 frames (NTSC). Selain aplikasi Time Code Kalkulator, dalam tugas akhir ini disertai juga dengan aplikasi program conversions yaitu sebuah program yang mengubah suatu nilai satuan waktu ke nilai satuan waktu lainnya. Program conversions tersebut terdiri dari program serial to single, single to serial, dan conversions. Dan untuk mencatat hasil proses perhitungan penjumlahan dan pengurangan maka dibuat form log files. Tujuan dari pembuatan kalkulator ini diharapkan dapat membantu operator on air dalam menghitung durasi waktu pada waktu siaran dilakukan secara manual karena terjadi error sistem atau kegagalan fungsi dalam program automation.
iv
KATA PENGANTAR
Alhamdulillahi Rabbilallamin. Puji syukur kehadiran Allah SWT, berkat taufik dan hidayah-Nya serta tidak lupa pula kepada junjungan Nabi Muhammad SAW, yang telah melimpahkan kepada Penulis sehingga Penulis dapat menyelesaikan Tugas Akhir ini dengan judul “Kalkulator Pada Perhitungan Matematika Dalam Bentuk Satuan Waktu Dengan Visual Basic 6”. Adapun tujuan dari pada penyusunan Tugas Akhir ini adalah untuk memenuhi salah satu syarat guna memperoleh gelar sarjana strata satu (S1) pada Fakultas Teknologi Industri, Jurusan Teknik Elektro, Universitas Mercu Buana. Penulis
menyadari
meskipun
telah
berusaha
untuk
menyajikan
pembahasan sebaik mungkin, namun masih terdapat kekurangan dalam Tugas Akhir ini, hal ini terjadi dikarenakan masih terbatasnya kemampuan dan pengetahuan Penulis. Penulis mengharapkan kritik dan saran yang membangun untuk menyempurnakan Tugas Akhir ini. Pada kesempatan ini, Penulis tidak lupa mengucapkan banyak terima kasih pada pihak-pihak yang telah banyak memberikan bimbingan dan pengarahan dalam penyusunan Tugas Akhir ini hingga selesai, yaitu kepada : 1. Yudhi Gunardhi ST.MT, selaku Ketua Jurusan Teknik Elektro, Universitas Mercu Buana. 2. Ir. Eko Ihsanto M.Eng., selaku Dosen Pembimbing yang telah memberikan kesempatan, waktu, saran, pikiran, dan tenaganya yang tak terhingga yang tak tergantikan oleh apapun dalam penyusunan Tugas Akhir ini.
v
3. Mama, Papa, Devie istriku, Irsyad anakku, dan adik-adikku tercinta (Ulfa, Indah, dan Ferina) yang telah memberikan dukungan baik moril maupun spiritual yang sangat membantu Penulis dalam menyelesaikan Tugas Akhir ini. 4. Aris Suyudi dan Bambang yang telah membantu dalam hal pembuatan program. Y. Didik, terima kasih untuk printer-nya Gan! 5. Rekan-rekan mahasiswa Teknik Elektro. 6. Semua pihak yang telah membantu dan mendukung Penulis dalam penyusunan Tugas Akhir ini, yang tidak dapat disebutkan satu persatu.
Akhirnya, penulis berharap semoga Tugas Akhir ini dapat bermanfaat bagi para Pembaca, khususnya Mahasiswa Teknik Elektro Universitas Mercu Buana dan semoga dapat diterima bagi para Pembaca.
Jakarta, 9 September 2009
Penulis
vi
DAFTAR ISI Lembar Judul.................................................................................................
i
Lembar Pernyataan.......................................................................................
ii
Lembar Pengesahan.......................................................................................
iii
Abstrak ..........................................................................................................
iv
Kata Pengantar............................................................................................
v
Daftar Isi........................................................................................................
vii
Daftar Gambar...............................................................................................
ix
Daftar Tabel...................................................................................................
x
Daftar Lampiran...........................................................................................
xi
BAB I.
BAB II.
PENDAHULUAN 1.1. Latar Belakang Masalah.................................................
1
1.2. Pembatasan Masalah......................................................
2
1.3.Tujuan Penulisan …........................................................
2
1.4. Metodologi Penelitian...….............................................
3
1.5. Sistematika Penulisan.....................................................
3
DASAR TEORI 2.1. Automation Program......................................................
5
2.2. Time Code......................................................................
6
2.3. Teori Perhitungan...........................................................
7
2.3.1. Penjumlahan........................................................
8
2.3.2. Pengurangan........................................................
10
2.4. Teori Konversi................................................................
12
vii
BAB III.
BAB IV.
2.4.1. Program Time Conversions..................................
12
2.4.2. Program Serial To Single......................................
13
2.4.3. Program Single To Serial......................................
13
2.5. Mengenal Visual Basic 6.0.............................................
14
2.6. Interface (Antar Muka) Visual Basic 6.0………………
16
2.7. Object, Perintah, Dan Fungsi Dalam Visual Basic…….
18
2.8. Membuat Project Baru…………………………………
22
PERANCANGAN PEMROGRAMAN 3.1. Program Time Code Calculator………………………..
28
3.2. Program Serial To Single Conversions………………...
38
3.3. Program Single To Serial Conversions………………...
41
3.4. Program Time Conversions…………………………….
45
3.5. Form Log File………………………………………….
48
3.6. Form Help……………………………………………...
49
3.7. Form About……………………………………………
49
IMPLEMENTASI 4.1. Hasil Uji Implementasi Perhitungan Pada Program…..
BAB V.
50
KESIMPULAN 4.1. Kesimpulan……………………………………………
55
4.2. Saran…………………………………………………..
55
DAFTAR PUSTAKA…………………………………………………….
56
LAMPIRAN………………………………………………………………
57
viii
DAFTAR GAMBAR
Gambar 2.1. Tampilan Program Automation Acube
5
Gambar 2.2. Interface (antar muka) Visual Basic 6.0Gambar
16
Gambar 2.3. Komponen standar dalam Toolbox Gambar
17
Gambar 2.4. Layar pemilihan jenis project
23
Gambar 2.5. Jendela Form
25
Gambar 2.6. Jendela Kode
25
Gambar 2.7. Cara mengambil label dari Toolbox
26
Gambar 2.8. Layout pada form
27
Gambar 2.9. Hasil program
27
Gambar 3.1. Tampilan Program Time Code Calculator
28
Gambar 3.2. Tampilan Program Serial To Single Conversions
39
Gambar 3.3. Tampilan Program Single To Serial Conversions
42
Gambar 3.4 Tampilan Program Time Conversions
46
Gambar 3.5. Form Log Files
48
Gambar 3.6 Tampilan Form Help
49
Gambar 3.7. Tampilan Form About
49
Gambar 4.1. Log File Penjumlahan Time Code
51
Gambar 4.2. Log File Pengurangan Time Code
52
ix
DAFTAR TABEL
Tabel 2.1. Konversi Waktu
12
Tabel 2.2. Operator Aritmatika
19
Tabel 2.3. Operator Relasi/Perbandingan
19
Tabel 2.4. Operator Logika
20
Tabel 2.5. Type Data
21
Tabel 3.1. Property Main Program Time Code Calculator
30
Tabel 3.2. Property Main Program Serial To Single Conversions
39
Tabel 3.3. Property Main Program Single To Serial Conversions
42
Tabel 3.4. Property Main Program Time Conversions
46
Tabel 4.1. Hasil Perhitungan Penjumlahan Time Code
50
Tabel 4.2. Hasil Perhitungan Penjumlahan Time Code Dengan Program
50
Tabel 4.3. Hasil Perhitungan Pengurangan Time Code
51
Tabel 4.4. Hasil Perhitungan Pengurangan Time Code Dengan Program
51
Tabel 4.5. Hasil Perhitungan Serial To Single Conversions
52
Tabel 4.6. Hasil Perhitungan Serial To Single Conversions Dengan Program 53 Tabel 4.7. Hasil Perhitungan Single To Serial Conversions
53
Tabel 4.8. Hasil Perhitungan Single To Serial Conversions Dengan Program 53 Tabel 4.9. Hasil Perhitungan Time Conversions
54
Tabel 4.10. Hasil Perhitungan Time Conversions Dengan Program
54
x
DAFTAR LAMPIRAN
LAMPIRAN 1 SOURCE CODE FORM TIME CODE CALCULATOR LAMPIRAN 2 SOURCE CODE FORM SERIAL TO SINGLE LAMPIRAN 3 SOURCE CODE FORM SINGLE TO SERIAL LAMPIRAN 4 SOURCE CODE FORM CONVERSIONS
xi
BAB I PENDAHULUAN
1.1. Latar Belakang Masalah Automation program merupakan perungkat lunak (software) yang digunakan untuk mengendalikan perangkat-perangkat elektronik pendukung jalannya operasional siaran televisi yang terdapat di dalam ruangan master control. Program automation tersebut bekerja berdasarkan durasi waktu yang telah ditentukan dan berjalan secara berurutan sesuai dengan urutan masing-masing klip. Program automation ini juga rentan mengalami error sistem yang mengakibatkan operator on air yang bertugas dituntut untuk melakukan perhitungan durasi yakni penjumlahan dan pengurangan time code, dan pengontrolan peralatan yakni VTR dan switcher yang sebelumnya dilakukan oleh komputer, kini dilakukan dengan cara manual. Selama siaran manual operator on air menjadi lebih ekstra bekerja, karena dituntut untuk melakukan perhitungan durasi yang tepat supaya penayangan jam tayang masing-masing program acara tepat sesuai dengan pola acara yang telah dibuat. Dari kejadian tersebut, maka dibuatlah aplikasi pemrograman kalkulator dengan menggunakan bahasa pemrograman Visual Basic 6 dengan maksud untuk mempermudah operator on air dalam hal melakukan perhitungan penjumlahan dan pengurangan time code, Kalkulator tersebut menghitung penjumlahan dan pengurangan dalam bentuk satuan waktu yaitu jam, menit, detik, dan frame. Atau biasa ditulis dalam bentuk Time Code (TC) yaitu Jam:Menit:Detik:Frame
1
2
(23:59:59:24). Khusus untuk satuan waktu frame ada dua pilhan yaitu 25 frames (PAL) dan 29.97 frames (NTSC)
1.2. Pembatasan Masalah Dari keseluruhan pembuatan program Time Code Calculator ini, Penulis akan membahas tentang teori perhitungan, algoritma program dan tampilan Graphic User Interface (GUI).
1.3. Tujuan Penulisan Dengan pembuatan program Time Code Kalkulator akan mempermudah tugas operator on air dalam hal melakukan perhitungan penjumlahan dan pengurangan time code. Proses hasil perhitungan dapat dicatat dalam bentuk log file dan disimpan kedalam bentuk file txt (notepad) sehingga proses perhitungan dapat dilihat kembali sewaktu-waktu apabila diperlukan. Selain pemrograman Time Code Kalkulator, dibuat juga aplikasi tambahan yaitu aplikasi pemrograman konversi yang digunakan untuk mengubah suatu nilai satuan waktu ke nilai satuan waktu lainnya. Semua tampilan pemrograman akan ditampilkan dalam bentuk GUI (Graphic
User
Interface)
sehingga
menggunakannya (user friendly).
pengguna
dapat
dengan
mudah
3
1.4. Metodologi Penulisan Metode yang digunakan pada penulisan Tugas Akhir ini : 1. Metode Study Literature Metode ini dilakukan dengan cara mempelajari dan berusaha memahami buku-buku literature, laporan-laporan, pencarian di internet dan bentuk penulisan lain yang berhubungan dengan pnulisan ini. 2. Pembuatan Algoritma dan Perancangan Graphic User Interface (GUI). Metode ini merupakan tahap awal dalam pembuatan algoritma program dan tindak lanjut dari tahap perancangan GUI, yaitu untuk merealisasikan program sesuai dengan tujuannya.
1.5. Sistematika Penulisan Untuk memudahkan pembahasan, sistematika penulisan dibagi atas beberapa bab. Adapun sistematika penulisan tersebut sebagai berikut :
BAB I.
PENDAHULUAN
Bab ini berisi latar belakang, tujuan penulisan, pembatasan masalah, tujuan penulisan, metodologi penulisan, dan sistematika penulisan.
BAB II
DASAR TEORI
Bab ini berisi teori dasar yang berhubungan dengan perancangan program, teori time code, penjumlahan dan pengurangan time code, teori konversi waktu, dan visual basic 6
4
BAB III
PERANCANGAN PEMROGRAMAN
Bab ini membahas mengenai perancangan algoritma program, tampilan grafis user interface, dan penulisan program di bahasa program visual basic 6.
BAB IV
IMPLEMENTASI
Bab ini berisi data hasil uji implementasi perhitungan pada program dengan hasil perhitungan manual.
BAB V
KESIMPULAN
Bab ini berisi kesimpulan dari keseluruhan bab yang dibahas dan saran-saran
BAB II LANDASAN TEORI
2.1. Automation Program Automation program merupakan perungkat lunak (software) yang digunakan untuk mengendalikan perangkat-perangkat elektronik pendukung jalannya operasional siaran televisi yang terdapat di dalam ruangan master control. Adapun perangkat-perangkat yang dapat dikendalikan oleh automation program yaitu VTR, video server, dan master switcher. Untuk skripsi ini penulis mengambil contoh automation program yaitu ACUBE yang digunakan oleh Stasiun TV Swasta TRANS7. Program tersebut bekerja berdasarkan durasi waktu atau time code yang telah ditentukan dan berjalan secara berurutan sesuai dengan urutan masing-masing klip (sequencial). Berikut ini tampilan program automation Acube tersebut:
Gambar 2.1. Tampilan Program Automation Acube
5
6
Program automation Acube ini cukup rentan mengalami error sistem atau gangguan sistem yang mengakibatkan operator on air yang bertugas harus melakukan siaran secara manual tanpa kendali dari automation program. Selama siaran manual, operator on air dituntut untuk lebih berkonsentrasi terhadap siaran karena yang sebelumnya semua pengontrolan dan perhitungan dilakukan oleh komputer kini semuanya harus dilakukan oleh operator on air secara manual seperti perhitungan untuk penjumlahan dan pengurangan Time Code sebagai acuan utama jalannya siaran, pengontrolan VTR dan switcher. Selama siaran manual operator on air menjadi lebih ekstra bekerja, karena dituntut untuk melakukan perhitungan durasi yang tepat supaya penayangan jam tayang masingmasing program acara tepat sesuai dengan pola acara yang telah dibuat.
2.2. Time Code Time code atau yang disingkat menjadi TC adalah kode atau tanda waktu yang dinyatakan dalam bentuk real time pada peralatan VTR (Video Tape Recorder). yang didasarkan pada waktu 24 jam, dan ditampilkan dengan sistem satuan waktu yaitu jam:menit:detik:frame seperti berikut 10 (jam): 10 (menit): 10 (detik): 10 (frame). Nilai time code dimulai dari 00:00:00:00 dan terus bertambah frame per frame hingga ke 23:59:59:24. Fungsi dari Time Code (TC) adalah sebagai berikut: •
Untuk mempermudah pencarian gambar pada saat editing ataupun playback.
•
Untuk mengetahui masa putar atau durasi.
•
Untuk keperluan editing Off Line Editing.
7
Jenis time code dilihat dari sistem teknologi pertelevisian ada dua macam yaitu: 1. Sistem PAL (Phase Alternating Line): - 625 baris, 50 Hz refresh rate - Digunakan di sebagian besar Eropa Barat. - Frame rate 25 fps - Menggunakan format YUV. 2. Sistem NTSC (National Television System(s) Committee) - 525 baris, 60 Hz refresh rate. - Digunakan di Amerika, Korea, Jepang, dan Canada. - Frame rate 30 fps - Menggunakan format YIQ
2.3. Teori Perhitungan Perhitungan dari penjumlahan dan pengurangan time code berdasarkan pada nilai batas maksimal masing-masing bagian time code yaitu : • Frame nilai batas maksimalnya 25 (00 – 24) untuk sistem PAL. • Frame nilai batas maksimalnya 30 (00 – 29) untuk sistem NTSC. • Detik nilai batas maksimalnya 60 (00 – 59) • Menit nilai batas maksimalnya 60 (00 – 59) • Jam nilai batas maksimalnya 24 (00 – 23) Teori perhitungan penjumlahan dan pengurangan time code ini sama dengan perhitungan matematika desimal seperti biasanya. Yang membedakan hanya pada nilai batas maksimalnya. Jika pada perhitungan matematika desimal nilai batas
8
maksimalnya adalah nilai 10 (sepuluh) maka untuk perhitungan time code ini nilai batas maksimalnya sudah ditentukan masing-masing perwakilan waktu seperti yang tertera di atas. 2.3.1. Penjumlahan Berikut ini contoh penjumlahan yang hasilnya kurang dari nilai batas maksimal masing-masing waktu yaitu 24:60:60:25. Contoh: 10:15:25:13 + 05:20:30:07
10 : 15 : 25 : 13 05 : 20 : 30 : 07 + 15 : 35 : 55 : 20 Pada penjumlahan di atas dapat kita lihat pembahasannya sebagai berikut: •
Untuk penjumlahan frame 13 + 07 = 20. Dan karena nilai 20 < 25 maka hasil akhir dari penjumlahan frame 13 + 07 = 20 frame.
•
Untuk penjumlahan detik 25 + 30 = 55. Dan karena nilai 55 < 60 maka hasil akhir dari penjumlahan detik 25 + 30 = 55 detik.
•
Untuk penjumlahan menit 15 + 20 = 35. Dan karena nilai 35 < 60 maka hasil akhir dari penjumlahan menit 15 + 20 = 35 menit.
•
Untuk penjumlahan jam 10 + 05 = 15. Dan karena nilai 15 < 24 maka hasil akhir dari penjumlahan jam 10 + 05 = 15 jam.
Jadi total hasil akhir dari penjumlahan: 10:15:25:13 + 05:20:30:07 = 15:35:55:20.
9
Berikut ini contoh penjumlahan yang hasilnya melebihi nilai batas maksimal masing-masing 23:59:59:24, contoh : 15:20:25:15 + 10:50:55:20 15 : 20 : 25 : 15 10 : 50 : 55 : 20 + 25 : 70 : 80 : 35 Pada penjumlahan di atas dapat kita lihat pembahasannya sebagai berikut: •
Untuk penjumlahan frame 15 + 20 = 35. Dan karena nilai 35 >= 25 maka nilai 35 dikurangi dengan 25, yaitu 35 - 25 = 10 dan hasil akhir dari penjumlahan frame 15 + 20 = 10 frame. Kemudian hasil penjumlahan detik mendapat tambahan nilai 1.
•
Untuk penjumlahan detik 25 + 55 = 80. Dan karena nilai 80 >= 60 maka nilai 80 dikurangi dengan 60, yaitu 80 - 60 = 20 maka hasil akhir dari penjumlahan detik dimana mendapat tambahan nilai 1 menjadi 1 + 20 = 21 detik. Kemudian hasil penjumlahan menit mendapat tambahan nilai 1.
•
Untuk penjumlahan menit 20 + 50 = 70. Dan karena nilai 70 >= 60 maka nilai 70 dikurangi dengan 60, yaitu 70 - 60 = 10 maka hasil akhir dari penjumlahan menit dimana mendapat tambahan nilai 1 menjadi 1 + 10 = 11 menit. Kemudian hasil penjumlahan jam mendapat tambahan nilai 1.
•
Untuk penjumlahan jam 15 + 10 = 25. Dan karena nilai 25 >= 24 maka nilai 25 dikurangi dengan 24, yaitu 25 - 24 = 01 maka hasil akhir dari penjumlahan jam dimana mendapat tambahan nilai 1 menjadi 1 + 01 = 02 jam. Hal ini berarti penjumlahan menjadi maju satu hari (Day 01).
10
Jadi total hasil akhir dari penjumlahan: 15:20:25:15 + 10:50:55:20 = DAY 01 02:11:21:10 15 : 20 : 25 : 15 10 : 50 : 55 : 20 + 25 : 70 : 80 : 35
→
15 : 20 : 25 : 15 10 : 50 : 55 : 20 + Day 01 02 : 11 : 21 : 10
2.3.2. Pengurangan
Berikut ini contoh pengurangan yang hasilnya lebih besar dari atau sama dengan nilai batas minimal masing-masing waktu yaitu 00:00:00:00. Contoh: 10:35:40:13 - 05:20:30:07 10 : 35 : 40 : 13 05 : 20 : 30 : 07 − 05 : 15 : 10 : 06 Pada pengurangan di atas dapat kita lihat pembahasannya sebagai berikut: •
Untuk pengurangan frame 13 - 07 = 06. Dan karena nilai 06 >= 00 maka hasil akhir dari pengurangan frame 13 – 07 = 06 frame.
•
Untuk pengurangan detik 40 - 30 = 10. Dan karena nilai 10 >= 00 maka hasil akhir dari pengurangan detik 40 - 30 = 10 detik.
•
Untuk pengurangan menit 35 - 20 = 15. Dan karena nilai 15 >= 00 maka hasil akhir dari pengurangan menit 35 - 20 = 15 menit.
•
Untuk pengurangan jam 10 - 05 = 05. Dan karena nilai 05 >= 00 maka hasil akhir dari pengurangan jam 10 - 05 = 05 jam.
Jadi total hasil akhir dari penjumlahan: 10:35:40:13 - 05:20:30:07 = 05:15:10:06.
11
Dan berikut ini contoh pengurangan yang hasilnya kurang dari nilai batas minimal masing-masing waktu yaitu 00:00:00:00 Contoh: 07:30:25:15 - 10:50:55:20 07 : 30 : 25 : 15 10 : 50 : 55 : 20 − − 03 : −20 : −30 : −05 Pada pengurangan di atas dapat kita lihat pembahasannya sebagai berikut: •
Untuk pengurangan frame 15 - 20 = -05. Dan karena nilai -05 < 00 maka nilai -05 ditambah dengan 25, yaitu -05 + 25 = 20 dan hasil akhir dari pengurangan frame 15 - 20 = 20 frame. Kemudian hasil pengurangan detik dikurangi dengan nilai 1.
•
Untuk pengurangan detik 25 - 55 = -30. Dan karena nilai -30 < 00 maka nilai 30 ditambah dengan 60, yaitu -30 + 60 = 30 maka hasil akhir dari pengurangan detik dimana hasilnya mendapat pengurangan nilai 1 menjadi 30 – 1 = 29 detik. Kemudian hasil pengurangan menit dikurangai dengan nilai 1.
•
Untuk pengurangan menit 30 - 50 = -20. Dan karena nilai -20 < 00 maka nilai 20 ditambah dengan 60, yaitu -20 + 60 = 40 maka hasil akhir dari pengurangan menit dimana hasilnya mendapat pengurangan nilai 1 menjadi 40 – 1 = 39 menit. Kemudian hasil pengurangan jam dikurangi dengan nilai 1.
•
Untuk pengurangan jam 07 - 10 = -03. Dan karena nilai -20 < 00 maka nilai 03 ditambah dengan 24, yaitu -03 + 24 = 21 maka hasil akhir dari pengurangan jam dimana hasilnya mendapat pengurangan nilai 1 menjadi 21 1 = 20 jam. Hal ini berarti pengurangan menjadi mundur kebelakang 1 hari (Day -01).
12
Jadi total hasil akhir dari pengurangan: 07:30:25:15 - 10:50:55:20 = DAY -01 20:39:29:20 07 : 30 : 25 : 15 10 : 50 : 55 : 20 − − 03 : −20 : −30 : −05
→
07 : 30 : 25 : 15 10 : 50 : 55 : 20 + Day − 01 20 : 39 : 29 : 20
2.4. Teori Konversi
Konversi nilai dari masing-masing waktu adalah sebagai berikut: Tabel 2.1. Konversi Waktu Ke
Frame Hari
Dari
Jam
Menit
Detik 25
30
1 Hari
1
24
1440
86400 2160000
2592000
1 Jam
0,0417
1
60
3600
90000
108000
1 Menit
6,94.10-4
0,0167
1
60
1500
1800
1 Detik
1,16.10-5
2,78.10-4 0,0167
1
25
30
25
4,63.10-7
1,11.10-5 6,67.10-4 0,04
30
3,86.10-7
9,26.10-6 5,56.10-4 0,03
1 Frame
1 1
Dari tabel 1.5 menjadi acuan untuk pembuatan program Time Conversions, Serial To Single Time, dan Single To Serial 2.4.1. Program Time Conversions
Program Time Conversions adalah sebuah program untuk mengubah nilai dari satu satuan waktu ke satuan waktu yang lainnya, seperti dari satuan waktu hari di ubah ke satuan jam, menit atau detik begitu juga sebaliknya.
13
Contoh: 3 hari = … jam 1 hari = 24 jam. Jadi 3 hari = (3 x 24) jam = 72 jam Contoh: 300 detik = … menit 1 detik = 0,0167 menit. Jadi 300 detik = (300 x 0,0167) menit = 5 menit 2.4.2. Program Serial To Single Time
Program Serial To Single Time adalah sebuah program yang mengubah bentuk serial time (00:00:00:00) ke dalam bentuk single time (00 jam/menit/detik/frame), dimana untuk satuan waktunya disesuaikan dengan kebutuhan. Contoh: 01:01:01:01 = … frame (25 – PAL) Perhitungannya 01:01:01:01 = (1x90000) + (1x1500) + (1x25) + (1x1) = 90000 + 1500 + 25 + 1 = 91526 frame 2.4.3. Progam Single To Serial Time
Progam Single To Serial Time adalah sebuah program yang mengubah bentuk single time (00 jam/menit/detik/frame) ke dalam bentuk serial time (00:00:00:00). Program ini adalah kebalikan dari program Serial To Single Time. Contoh: 91526 frame = … : ... :… :… Perhitungannya: Jam = 91526 : 90000 = 1 jam sisa 1526 frame Menit = 1526 : 1500 = 1 menit sisa 26 frame Detik = 26 : 25 = 1 detik sisa 1 frame Frame = 1 frame Jadi 91526 frame = 01:01:01:01 Teori-teori perhitungan program-program di atas menjadi acuan untuk pembuatan
14
algoritma suatu program pada Bab berikutnya.
2.5. Mengenal Visual Basic 6.0
Bahasa Basic pada dasarnya adalah bahasa yang mudah dimengerti sehingga pemrograman di dalam bahasa Basic dapat dengan mudah dilakukan meskipun oleh orang yang baru belajar membuat program. Hal ini lebih mudah lagi setelah hadirnya Microsoft Visual Basic, yang dibangun dari ide untuk membuat bahasa yang sederhana dan mudah dalam pembuatan scriptnya (simple scripting language) untuk graphic user interface yang dikembangkan dalam
sistem operasi Microsoft Windows. Visual Basic merupakan bahasa pemrograman yang sangat mudah dipelajari, dengan teknik pemrograman visual yang memungkinkan penggunanya untuk berkreasi lebih baik dalam menghasilkan suatu program aplikasi. Ini terlihat dari dasar pembuatan dalam visual basic adalah FORM, dimana pengguna dapat mengatur tampilan form kemudian dijalankan dalam script yang sangat mudah. Ledakan pemakaian Visual Basic ditandai dengan kemampuan Visual Basic untuk dapat berinteraksi dengan aplikasi lain di dalam sistem operasi Windows dengan komponen ActiveX Control. Dengan komponen ini memungkinkan penguna untuk memanggil dan menggunakan semua model data yang ada di dalam sistem operasi Windows. Hal ini juga ditunjang dengan teknik pemrograman di dalam Visual Basic yang mengadopsi dua macam jenis pemrograman yaitu Pemrograman Visual dan Object Oriented Programming (OOP).
15
Visual Basic 6.0 sebetulnya perkembangan dari versi sebelumnya dengan beberapa penambahan komponen yang sedang tren saat ini, seperti kemampuan pemrograman internet dengan DHTML (Dynamic HyperText Mark Language), dan beberapa penambahan fitur database dan multimedia yang semakin baik. Sampai saat buku ini ditulis bisa dikatakan bahwa Visual Basic 6.0 masih merupakan pilih pertama di dalam membuat program aplikasi yang ada di pasar perangkat
lunak nasional. Hal ini disebabkan oleh kemudahan dalam
melakukan proses development dari aplikasi yang dibuat.
16
2.6. Interface (Antar Muka) Visual Basic 6.0
Interface (antar muka) Visual Basic 6.0, berisi menu, toolbar, toolbox, form, project explorer dan property seperti terlihat pada gambar 2.2. berikut: Menu
Toolbox
Tempat Form
Toolbar
Project Explorer
Property
Gambar 2.2. Interface (antar muka) Visual Basic 6.0 Pembuatan program aplikasi menggunakan Visual Basic dilakukan dengan membuat tampilan aplikasi pada form, kemudian diberi script program di dalam komponen-komponen yang diperlukan. Form disusun oleh komponenkomponen yang berada di [Toolbox], dan setiap komponen yang dipakai harus diatur propertinya lewat jendela [Property]. Menu pada dasarnya adalah operasional standar di dalam sistem operasi windows, seperti membuat form baru, membuat project baru, membuka project dan menyimpan project. Di samping itu terdapat fasilitas-fasilitas pemakaian
17
visual basic pada menu. Untuk lebih jelasnya Visual Basic menyediakan bantuan yang sangat lengkap dan detail dalam MSDN. Toolbox berisi komponen-komponen yang bisa digunakan oleh suatu project aktif, artinya isi komponen dalam toolbox sangat tergantung pada jenis project yang dibangun. Komponen standar dalam toolbox dapat dilihat pada gambar 2.3 berikut ini. Pointer Arrow
Picture
Label
Text Box
Frame
Command Button
Check Box
Radio Button
Combo Box
List Box
Horizontal Slider
Vertical Slider
Timer
Drive List Box
Dir List Box
File List Box
Shape
Line
Image
Data Control
OLE
Gambar 2.3. Komponen standar dalam Toolbox
18
2.7. Object, Perintah, Dan Fungsi Dalam Visual Basic Object (Objek) adalah kombinasi kode dan data yang bisa disebut sebagai. Suatu
objek dapat merupakan bagian dari aplikasi, seperti kontrol atau form. Property (property) adalah atribut suatu objek yang mendefinisikan satu dari
karakteristik objek, seperti ukuran, warna, atau lokasi layer. Untuk merubah karakteristik suatu objek, Anda harus mengubah nilai yang dimiliki property. Sintaks: object.JenisProperti Method (Metode) adalah prosedur yang dikerjakan pada suatu objek. Metode
merupakan suatu tindakan di mana objek dapat dibentuk. Event adalah tindakan yang diketahui objek, seperti mengklik mouse, menekan
tombol, mengklik command button, memotong (cut) objek, menempelkan (paste) objek, menggeser mouse, dan sebagainya. Event merupakan suatu tindakan yang bisa dipanggil oleh form atau kontrol. Sintaks:
Private Sub Form_JenisEvent () Private Sub object_JenisEvent([index As Integer])
Class merupakan definisi formal dari suatu objek. Class bertindak sebagai
template dari suatu objek yang dibuat pada run time. Class merupakan property dari objek dan metode yang digunakan untuk mengontrol tindakan objek. Statement adalah suatu perintah/instruksi untuk menjalankan operasi pada
komputer. Statement dapat mengekspresikan jenis tindakan, deklarasi atau definisi. Function, tidak seperti halnya statement yang bersifat perintah, function/fungsi
lebih bersifat mengubah atau mengonversikan suatu nilai menjadi nilai lainnya.
19
Operator adalah penghubung antara dua/lebih variable atau nilai,. Terdapat tiga
jenis operator yaitu operator aritmatika, operator perbandingan, dan operator logika. Tabel 2.2. Operator Aritmatika Operator
Keterangan
^
Pangkat
*
Perkalian
/
Pembagian
\
Pembagian, hasil bulat
Mod
Sisa pembagian
+
Pertambahan
-
Pengurangan
&
Penggabungan dua ekspresi
Tabel 2.3. Operator Relasi/Perbandingan Operaotr
Keterangan
<
Lebih kecil dari
>
Lebih besar dari
<=
Lebih kecil sama dengan
>=
Lebih besar sama dengan
<>
Tidak sama dengan
=
Sama dengan
Is
Membandingkan 2 object. Sintaks: Hasil=Object1 Is Object2
Like
Membandingkan 2 string. Sintaks: Hasil=String Like PolaString
20
Tabel 2.4. Operator Logika Operator
Keterangan
And
Menghubungkan dua ekspresi
Eqv
Menyapadankan dua ekspresi
Imp
Melibatkan dua ekspresi
Or
Memisahkan dua ekspresi
Xor
Menunggalkan dua ekspresi. Sintaks: Hasil = Ekspresi1 And Ekspresi2 Eqv Imp Or Xor
Not
Penyanggahan suatu ekspresi. Sintaks: Hasil = Not Ekspresi
Variabel adalah nama atau symbol yang digunakan untuk mewakili suatu nilai.
Sutau variabel mempunyai nama dan menyimpan type data yang merupakan jenis data variabel. Aturan penamaan variabel (berlaku untuk konstanta, prosedur, dan argumen) adalah sebagai berikut: •
Harus dimulai dengan sebuah huruf.
•
Tidak lebih dari 255 karakter.
•
Tidak boleh sama dengan nama statement, fungsi, metode, objek, dan sebagainya yang merupakan bahasa dari Visual Basic.
•
Tidak boleh ada spasi, tanda titik (.), tanda seru (!), atau karakter @, &, $, dan #.
Konstanta adalah suatu nilai konstan yang tidak berubah. Seperti halnya variabel,
konstanta dapat diberi nama di mana aturan penamaannya sama dengan variabel.
21
Terdapat dua sumber konstanta Intrinsic, atau konstanta system-defined yang berada pada class constant dalam daftar Object Browser dan konstanta Symbolic atau konstanta user-defined yang dideklarasikan oleh statement Const. Type data adalah jenis yang disimpan dalam variabel. Tipe data untuk Visual
Basic adalah sebagai berikut: Tabel 2.5. Type Data Type Data
Ukuran
Range
Byte
1 byte
0 - 255
Boolean
2 byte
True atau False
Integer
2 byte
-32,768 sampai 32,767
Long (long integer)
4 byte
-2,147,483,648 sampai 2,147,483,647
Single (singleprecision floating-point)
4 byte
-3.402823E38 sampai -1.401298E-45; 1.401298E-45 sampai 3.402823E38
8 byte
-1.79769313486232E308 sampai -4.94065645841247E-324; 4.94065645841247E-324 sampai 1.79769313486232E308
Double (doubleprecision floating-point)
Currency (scaled 8 byte integer)
-922,337,203,685,477,5808 sampai 922,337,203,685,477,5807
Decimal
14 byte
+/-79,228,162,514,264,337,593,543,950,335; +/-7.9228162514264337593543950335 (28 digit); bilangan terkecilnya +/0.0000000000000000000000000001
Date
8 byte
January 1, 100 to Decmber 31, 9999
Object
4 byte
Setiap referensi Object
String (variblelength)
10 byte + panjang
0 – 2.000.000.000
22
string String (fixedlength)
Panjang string
1 – 65,400
Variant (dengan bilangan )
16 byte
Setiap nilai numerik di atas range Double
Variant (dengan karakter )
22 byte + string length
Sama dengan String variable-length
User-defined (menggunakan type)
Nomor yang diperlukan oleh elemen
Range setiap elemen = range type data
Jenis File Program Aplikasi, dalam pembuatan aplikasi program terdapat tiga
jenis file yang bisa dibuat dalam Visual Basic, yaitu: file desing-time, file penunjang, dan file run-time.
2.8. Membuat Project Baru
Untuk memulai pembuatan program aplikasi di dalam Visual Basic, yang dilakukan adalah membuat project baru. Project adalah sekumpulan form, modul, fungsi, data dan laporan yang digunakan dalam suatu aplikasi. Membuat projrct baru dapat dilakukan dengan memilih menu [File] >> [New Project] atau dengan menekan ikon [new project]
pada Toolbar yang terletak di pojok kiri atas.
Setelah itu akan muncul konfirmasi untuk jenis project dari program aplikasi yan akan dibuat seperti terlihat pada gambar 2.4. berikut.
23
Gambar 2.4. Layar pemilihan jenis project Visual Basic 6.0 menyediakan 13 jenis project yang bisa dibuat seperti terlihat pada gambar 2.4. di atas. Ada beberapa project yang biasa digunakan oleh banyak pengguna Visual Basic, antara lain: •
Standard EXE: Project standar dalam Visual Basic dengan komponenkomponen standar. Jenis project ini sangat sederhana, tetapi memiliki keunggulan bahwa semua komponennya dapat diakui oleh semua unit komputer dan semua user meskipun bukan administrator. Pada buku ini akan digunakan project Standard EXE ini, sebagai konsep pemrograman visualnya.
•
ActiveX EXE: Project ini adalah project ActiveX berisi komponen-komponen kemampuan intuk berinteraksi dengan semua aplikasi di sistem operasi windows.
•
ActiveX DLL: Project ini menghasilkan sebuah aplikasi library yang selanjutnya dapat digunakan oleh semua aplikasi di sistem operasi windows.
•
ActiveX Control: Project ini menghasilkan komponen-komponen baru untuk aplikasi Visual Basic yang lain
24
•
VB Application Wizard: Project ini memandu pengguna untuk membuat aplikasi secara mudah tanpa harus pusing-pusing dengan perintah-perintah pemrograman.
•
Addin: Project seperti Standard EXE tetapi dengan berbagai macam komponen tambahan yang memungkinkan kebebasan kreasi dari pengguna.
•
Data project: Project ini melengkapi komponennya dengan komponenkomponen database. Sehingga bisa dikatakan project ini memang disediakan untuk keperluan pembuatan aplikasi database.
•
DHTML Application: Project ini digunakan untuk membuat aplikasi internet pada sisi client (client side) dengan fungsi-fungsi DHTML.
•
IIS Application: Project ini menghasilkan apliaksi internet pada sisi server (server side) dengan komponen-komponen CGI (Common Gateway Interface). Selanjutnya pilih Standard EXE dan tekan [Ok]. Lalu muncul tampilan
dari Standard Exe seperti pada gambar 2.4. Dengan demikian project sudah siap dibuat. Dalam pembuatan project sebelumnya double click pada form yang terbuat maka akan terlihat jendela tersembunyi (hidden windows) yang berupa jendela untuk pembuatan program atau jendela kode (code windows). Hal ini Dapat dilakukan dengan cara memilih ikon jendela form atau jendela kode yang ada di [Project Explorer]. Hal ini dapat dilihat pada gambar 2.5 dan gambar 2.6
25
Jendela Form
Gambar 2.5. Jendela Form
Jendela Kode
Gambar 2.6. Jendela Kode Pada jendela form, pengguna dalam membangun tampilan dari program aplikasi yang akan dibuat dengan mengatur komponen-komponen baik letak, properti dan eventnya. Untuk mengambil suatu komponen dari [Toolbox] dapat dilakukan dengan click komponen tersebut, kemudian clik atau tarik pada posisi yang benar pada form. Sebagai contoh mengambil label dari Toolbox dapat dilakukan
26
dengan cara seperti gambar 2.7 di bawah ini.
1 2
3
Gambar 2.7. Cara mengambil label dari Toolbox Langkah-langkah mengambil label dari toolbox untuk dipasangkan dalam form adalah sebagai berikut: 1. Click ikon [Label] pada [ToolBox]. 2. Pindahkan ke posisi dimana label itu akan diletakkan. 3. Clik dan tarik sampai ukurannya benar lalu lepaskan. Catatan: Jangan lupa untuk mengatur property name dari setiap komponen yang digunakan, karena name merupakan identitas obyek yang akan digunakan dalam menulis program.
Langkah berikutnya adalah memberikan teks pada label, misalkan “Hello world”, maka piliha properti Caption, dan isi dengan Hello world. Hasil tampilan program
27
adalah sebagai berikut:
Gambar 2.8. Layout pada form Dan untuk menjalankan program click ikon Run
pada toolbar atau pilih
menu [Run] >> [Start], atau dengan tekan tombol [F5]. Sehingga hasil program adalah:
Gambar 2.9. Hasil program
BAB III PERANCANGAN PEMROGRAMAN
3.1. Program Time Code Calculator
Program Time Code Calculator ini berfungsi untuk menghitung penjumlahan dan pengurangan dua buah time code dengan dua pilihan untuk tipe frame per seconds yaitu 25 frames per second (PAL) dan 29,97 frames per seconds (NTSC). Berikut ini tahapan untuk membuat program: 1. Buat penampilan program Time Code Calculator seperti pada gambar 3.1. dengan kontrol yang dibutuhkan 13 TextBox, 5 CommandButton, 9 Label, 2 OptionButton, 1frame, 2 Line, Menu Editor dan form. 2. Tampilan user interface dan setting properti program adalah sebagai berikut: 1
2
3
4
5
6
7
24
a
b
c
d
23
a
b
c
d
a
b
c
d
8
25
22 21
20
9
10 11
12
19
13 14
18
15
17
16
Gambar 3.1. Tampilan Program Time Code Calculator
28
29
Tabel 3.1. Property Main Program Time Code Calculator No.
1 2
Kontrol
Jenis Properti
Isi Properti
(Name)
frmMain
Caption
Time Code Calculator
Caption
Day
(Name)
one
Form1 Label1
3a
TextBox1
3b
TextBox2
a. 0 Index
b.1
3c
TextBox3
3d
TextBox4
4
Label2
Caption
HH
5
Label3
Caption
MM
6
Label4
Caption
SS
7
Label5
Caption
FF
8
Line1
(Name)
Line2
(Name)
move
9
CommandButton1 Caption
&Move
(Name)
cmdAdd
Caption
&+
(Name)
cmdMin
Caption
&-
10
11
c. 2 d. 3
CommandButton2
CommandButton3
12a
TextBox1
12b
TextBox2
12c
TextBox3
12d
TextBox4
a. totala (Name)
b. totalb c. totalc d. totald
30
(Name) 13a
TextBox5
13b
TextBox6
13c
TextBox7
13d
TextBox8
14
TextBox9
15
Frame1
16
17
18
19
two a. 0 b.1
Index
c. 2 d. 3
(Name)
txt_remain
(Name)
Frame1
BackColor
&H00000000&
(Name)
bt_exit
Caption
E&xit
(Name)
bt_new
Caption
&New
(Name)
frame_type
Caption
29.97 (NTSC)
Index
1
(Name)
frame_type
Caption
25 (PAL)
Index
0
CommandButton4
CommandButton5
OptionButton1
OptionButton2
20
Label6
Caption
Frames per second
21
Label7
Caption
Total Time:
22
Line2
(Name)
Line1
23
Label8
Caption
Second Time:
24
Label9
Caption
First Time:
25
Menu Editor: Caption
Name
Shortcut
31
&File
mnufile
(None)
&New
New
(None)
-
hyphen
(None)
E&xit
itmExit
(None)
&Help
itmhelp
(None)
Help
helpme
(None)
About
About
(None)
&Tools
itmtools
(None)
Serial To Single Conversion
itmsertosing
Ctrl+F1
Single To Serial Conversion
itmsingtoser
Ctrl+F2
Time Conversions
time_conv
Ctrl+F3
Log File
cmd_log
Ctrl+F4
3. Ketik program untuk Function logMe berikut ini : Function logMe(ByVal sign As String) 'declare and initiate required objects Dim fs As FileSystemObject Dim ts As TextStream Dim type_frame As String If Me.G_TYPE_FRAME = 0 Then type_frame = "25 frames (PAL)" Else type_frame = "29.9 frames (NTSC)" End If Set fs = New FileSystemObject 'To write Set ts = fs.OpenTextFile("log_.txt", ForAppending, True) ts.WriteLine "log time : " & Now & " ===========================" ts.WriteLine "Frames per second : " & type_frame ts.WriteLine "Proses : " & sign ts.WriteLine "1st Time : " & Me.one(0).Text & ":" & Me.one(1).Text & ":" & Me.one(2).Text & ":" & Me.one(3).Text ts.WriteLine "2nd Time : " & Me.two(0).Text & ":" & Me.two(1).Text & ":" & Me.two(2).Text & ":" & Me.two(3).Text ts.WriteLine "Total Time : (" & Me.txt_remain.Text & ") " & Me.totala.Text & ":" &
32
Me.totalb.Text & ":" & Me.totalc.Text & ":" & Me.totald.Text ts.WriteLine "======================================================" ts.WriteLine ts.Close
' ' ' ' ' ' ' '
'To Read If fs.FileExists("log_.txt") Then Set ts = fs.OpenTextFile("log_.txt") Do While Not ts.AtEndOfStream MsgBox ts.ReadLine Loop ts.Close End If
'clear memory used by FSO objects Set ts = Nothing Set fs = Nothing End Function
4. Ketik program untuk Sub addTime berikut ini Sub addTime(ByVal type_frame As Integer) Dim v, w, X, Y As Integer Dim a, b, c, d As Integer Dim o, p, q, r As Integer Dim remain As Integer 'for type_frame = PAL (25) If (type_frame = 0) Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00" End If
33
If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text) a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v+a p=w+b q=X+c r=Y+d remain = 0 If r >= 25 Then r = r - 25 q=q+1 End If If q >= 60 Then q = q - 60 p=p+1 End If If p >= 60 Then p = p - 60 o=o+1 End If If o >= 24 Then o = o - 24 remain = remain + 1 End If End If 'for type_frame = NTSC (29) If (type_frame = 1) Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If
34
If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00" End If If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text) a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v+a p=w+b q=X+c r=Y+d remain = 0 If r >= 30 Then r = r - 30 q=q+1 End If If q >= 60 Then q = q - 60 p=p+1 End If If p >= 60 Then p = p - 60 o=o+1 End If If o >= 24 Then o = o - 24 remain = remain + 1 End If End If totala.Text = make2Digit(CStr(o)) totalb.Text = make2Digit(CStr(p)) totalc.Text = make2Digit(CStr(q)) totald.Text = make2Digit(CStr(r)) txt_remain.Text = make2Digit(CStr(remain))
35
Me.logMe ("+") End Sub
5. Ketik program untuk Sub minusTime berikut ini Sub minusTime(ByVal type_frame As Integer) Dim v, w, X, Y As Integer Dim a, b, c, d As Integer Dim o, p, q, r As Integer Dim remain As Integer 'frame 25 (PAL) If type_frame = 0 Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00" End If If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text) a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v-a p=w-b q=X-c
36
r=Y-d remain = 0 If r < 0 Then r = r + 25 q=q-1 End If If q < 0 Then q = q + 60 p=p-1 End If If p < 0 Then p = p + 60 o=o-1 End If If o < 0 Then o = o + 24 remain = remain - 1 End If End If 'frame 29.97 (NTSC) If type_frame = 1 Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00" End If If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text)
37
a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v-a p=w-b q=X-c r=Y-d remain = 0 If r < 0 Then r = r + 30 q=q-1 End If If q < 0 Then q = q + 60 p=p-1 End If If p < 0 Then p = p + 60 o=o-1 End If If o < 0 Then o = o + 24 remain = remain - 1 End If End If totala.Text = make2Digit(CStr(o)) totalb.Text = make2Digit(CStr(p)) totalc.Text = make2Digit(CStr(q)) totald.Text = make2Digit(CStr(r)) txt_remain.Text = make2Digit(CStr(remain)) Me.logMe ("-") End Sub
6. Pada posisi frmMain, pilih Menu Editor ada menu Tools, kemudian isilah kotak isian sebagai berikut: a. Isi kolom Caption: &File; Name: mnufile. b. Klik tombol 1x (muncul ….), isi Caption: &New; Name: New. c. Klik tombol 1x (muncul ….), isi Caption: -; Name: hyphen.
38
d. Klik tombol 1x (muncul ….), isi Caption: E&xit; Name: itmExit. e. Isi kolom Caption: &Help; Name: itmhelp. f.
Klik tombol 1x (muncul ….), isi Caption: Help; Name: helpme.
g. Klik tombol 1x (muncul ….), isi Caption: About; Name: About. h. Isi kolom Caption: &Tools; Name: itmtools. i.
Klik tombol 1x (muncul ….), isi Caption: Serial To Single Conversion; Name: itmsertosing; Shortcut: Ctrl+F1.
j.
Klik tombol 1x (muncul ….), isi Caption: Single To Serial Conversion; Name: itmsingtoser; Shortcut: Ctrl+F2.
k. Klik tombol 1x (muncul ….), isi Caption: Time Conversions; Name: time_conv; Shortcut: Ctrl+F3. l.
Klik tombol 1x (muncul ….), isi Caption: Log File; Name: cmd_log; Shortcut: Ctrl+F4.
3.2. Program Serial To Single Conversion
Program ini berfungsi untuk mengubah nilai serial time (00:00:00:00) ke dalam bentuk single time (0000 Jam/Menit/Detik/Frame) dimana satuan waktunya seperti jam, menit, detik dan frame (25 atau 29,97) dapat dipilih sesuai dengan kebutuhan. Cara membuka program ini dengan memilih menu Tools pada program Time Code Calculator kemudian pilih sub menu Serial To Single Conversions atau tekan tombol Ctrl+F1 pada keyboard. Berikut ini tahapan untuk membuat program:
39
1. Buat penampilan program Serial To Single Conversions seperti pada gambar 3.2. dengan kontrol yang dibutuhkan 5 TextBox, 2 CommandButton, 8 Label, 2 OptionButton, 1 ComboBox, dan form 2. Tampilan user interface dan setting properti program adalah sebagai berikut: 1
Gambar 3.2. Tampilan Program Serial To Single Conversions
Tabel 3.2. Property Main Program Serial To Single Conversions No.
1
Kontrol
ComboBox
Jenis Properti
(Name)
3. Ketik program untuk Sub Form berikut ini: Private Sub Form_Load() Me.frame_type(0).Value = True Me.GCONVERT_TYPE_FRAME = 0 Dim Waktu(0 To 3), Hasil(0 To 3) Dim I ' Mendeklarasikan variabel AutoSize = True Waktu(0) = "Jam" Waktu(1) = "Menit" Waktu(2) = "Detik" Waktu(3) = "Frame"
'Array
Isi Properti
Combo1
40
Hasil(0) = "1 Jam" Hasil(1) = "1 Menit" Hasil(2) = "1 Detik" Hasil(3) = "1 Frame" For I = 0 To 3 ' Memasukan Waktu Ke Daftar Combo1.AddItem Waktu(I) Next I Combo1.ListIndex = 0 'Menampilkan Waktu yang pertama End Sub
4. Ketik program untuk Sub convert_serial_to_single berikut ini: Public GCONVERT_TYPE_FRAME As Integer Public Sub convert_serial_to_single(ByVal convTo As String) Dim hh, mm, ss, ff As Integer Dim res As Double If IsNumeric(Me.onec.Text) Then If Me.onec.Text = "" Then hh = 0 Else hh = CInt(Me.onec.Text) End If End If If Me.twoc.Text = "" Then mm = 0 Else mm = CInt(Me.twoc.Text) End If If Me.threec.Text = "" Then ss = 0 Else ss = CInt(Me.threec.Text) End If If Me.fourc.Text = "" Then ff = 0 Else ff = CInt(Me.fourc.Text) End If If Me.GCONVERT_TYPE_FRAME = 1 Then Select Case UCase(convTo) Case "JAM" res = (hh * 1) + (mm * 1 / 60) + (ss * 1 / 3600) + (ff * 1 / 107892) Case "MENIT" res = (hh * 60) + (mm * 1) + (ss * 1 / 60) + (ff * 1 / 1798) Case "DETIK" res = (hh * 3600) + (mm * 60) + (ss * 1) + (ff * 1 / 29) Case "FRAME"
41
res = (hh * 107892) + (mm * 1798) + (ss * 29) + (ff * 1) End Select Else Select Case UCase(convTo) Case "JAM" res = (hh * 1) + (mm * 1 / 60) + (ss * 1 / 3600) + (ff * 1 / 90000) Case "MENIT" res = (hh * 60) + (mm * 1) + (ss * 1 / 60) + (ff * 1 / 1500) Case "DETIK" res = (hh * 3600) + (mm * 60) + (ss * 1) + (ff * 1 / 25) Case "FRAME" res = (hh * 90000) + (mm * 1500) + (ss * 25) + (ff * 1) End Select End If Me.txt_result.Text = Round(res, 3) Me.lbl_satuan.Caption = UCase(convTo) End Sub
3.3. Program Single To Serial Conversions
Program ini berfungsi untuk mengubah nilai single time yang mana satuan waktunya seperti jam, menit, detik dan frame (25 atau 29,97) dapat dipilih sesuai dengan kebutuhan ke dalam bentuk serial time. Cara membuka program ini dengan memilih menu Tools pada program Time Code Calculator kemudian pilih sub menu Single To Serial Conversions atau tekan tombol Ctrl+F2 pada keyboard. Berikut ini tahapan untuk membuat program: 1. Buat penampilan program Single To Serial Conversions seperti pada gambar 3.3. dengan kontrol yang dibutuhkan 5 TextBox, 2 CommandButton, 8 Label, 2 OptionButton, 1 ComboBox, dan form
42
2. Tampilan user interface dan setting properti program adalah sebagai berikut: 1
Gambar 3.3. Tampilan Program Single To Serial Conversions
Tabel 3.3. Property Main Program Single To Serial Conversions No.
1
Kontrol
ComboBox
Jenis Properti
(Name)
Isi Properti
Combo1
3. Ketik program untuk Sub Form berikut ini : Private Sub Form_Load() Dim Waktu(0 To 3), Hasil(0 To 3) Dim I ' Mendeklarasikan variabel
'Array
Me.frame_type(0).Value = True Me.GCONVERT_TYPE_FRAME = 0 AutoSize = True Waktu(0) = "Jam" Waktu(1) = "Menit" Waktu(2) = "Detik" Waktu(3) = "Frame" Hasil(0) = "1 Jam" Hasil(1) = "1 Menit" Hasil(2) = "1 Detik" Hasil(3) = "1 Frame" For I = 0 To 3 ' Memasukan Waktu Ke Daftar Combo1.AddItem Waktu(I) Next I Combo1.ListIndex = 0 'Menampilkan Waktu yang pertama End Sub
43
4. Ketik program untuk Sub convert_single_to_single berikut ini : Public Sub convert_single_to_serial(ByVal convTo As String) Dim dd, hh, mm, ss, ff As Double Dim data, sisa, sisa2, sisa3, sisa4, sisa5, frame_temp As Double If Me.GCONVERT_TYPE_FRAME = 1 Then Select Case UCase(convTo) Case "JAM" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 108000 dd = Int(frame_temp / 2592000) sisa = frame_temp Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800) sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 Case "MENIT" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 1800 dd = Int(frame_temp / 2592000) sisa = frame_temp Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800) sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 Case "DETIK" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 30 dd = Int(frame_temp / 2592000) sisa = frame_temp Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800) sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 Case "FRAME" data = Me.txt_data.Text
44
If data = "" Then data = 0 End If dd = Int(data / 2592000) sisa = data Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800) sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 End Select Else Select Case UCase(convTo) Case "JAM" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 90000 dd = Int(frame_temp / 2160000) sisa = frame_temp Mod 2160000 hh = Int(sisa / 90000) sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 Case "MENIT" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 1500 dd = Int(frame_temp / 2160000) sisa = frame_temp Mod 2160000 hh = Int(sisa / 90000) sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 Case "DETIK" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 25 dd = Int(frame_temp / 2160000) sisa = frame_temp Mod 2160000 hh = Int(sisa / 90000)
45
sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 Case "FRAME" data = Me.txt_data.Text If data = "" Then data = 0 End If dd = Int(data / 2160000) sisa = data Mod 2160000 hh = Int(sisa / 90000) sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 End Select End If Me.txt_(0).Text = hh Me.txt_(1).Text = mm Me.txt_(2).Text = ss Me.txt_(3).Text = ff Me.day.Caption = dd End Sub
3.4. Program Time Conversions
Program ini berfungsi untuk mengubah suatu nilai dengan satuan waktu yang dapat dipilih-pilih ke suatu nilai lain dengan satuan waktu yang dapat dipilih-pilih. Cara membuka program ini dengan memilih menu Tools pada program Time Code Calculator kemudian pilih sub menu Time Conversions atau tekan tombol Ctrl+F3 pada keyboard . Berikut ini tahapan pembuatan program : 1. Buat penampilan program Time Conversions seperti pada gambar 3.4. dengan kontrol yang dibutuhkan 1 TextBox, 3 CommandButton, 5 Label, 2 OptionButton, 2 ComboBox, dan form
46
2. Tampilan user interface dan setting properti program adalah sebagai berikut: 1
2
3
4 5
Gambar 3.4 Tampilan Program Time Conversions
Tabel 3.4. Property Main Program Time Conversions No.
Kontrol
Jenis Properti
(Name)
Isi Properti
cb_from Hari
1
ComboBox List
Jam Menit Detik
(Name)
cb_to Hari
2
ComboBox List
Jam Menit Detik
3
(Name)
btn_proses
Caption
&Proses
CommandButton
47
4
Label
(Name)
lb_satuan
5
Label
(Name)
lb_res
3. Ketik program untuk Function convert berikut ini: Public Function convert(ByVal from_ As String, to_ As String, data As Long) As String Dim res As String Select Case from_ Case "Hari" Select Case to_ Case "Hari" res = data Case "Jam" res = data * 24 Case "Menit" res = data * 24 * 60 Case "Detik" res = CDbl(data) * CDbl(86400) End Select 'res = 1 Case "Jam" Select Case to_ Case "Hari" res = Round((data / 24), 3) Case "Jam" res = data Case "Menit" res = data * 60 Case "Detik" res = CDbl(data) * CDbl(3600) End Select Case "Menit" Select Case to_ Case "Hari" res = data / 1440 Case "Jam" res = data / 60 Case "Menit" res = data Case "Detik" res = CDbl(data) * CDbl(60) End Select Case "Detik" Select Case to_ Case "Hari" res = data / 86400 Case "Jam" res = data / 3600 Case "Menit"
48
res = data / 60 Case "Detik" res = data End Select End Select convert = res End Function
3.5. Form Log File
Form Log Files ini berfungsi sebagai catatan proses perhitungan matematika yang telah kita lakukan pada operasi penjumlahan dan pengurangan dua buah time code pada program Time Code Calculator. Cara membuka form ini dengan memilih menu Tools pada program Time Code Calculator kemudian pilih sub menu Log File atau tekan tombol Ctrl+F4 pada keyboard Berikut ini tampilan user interface form log file :
Gambar 3.5. Form Log Files
49
3.6. Form Help
Form Help berfungsi untuk membantu pengguna bagaimana cara menggunakan program Time Code Calculator. Cara membuka form ini dengan memilih menu Help pada program Time Code Calculator kemudian pilih sub menu Help. Berikut ini tampilan user interface form Help :
Gambar 3.6 Tampilan Form Help
3.7. Form About
Form About
yaitu form yang menginformasikan tentang Versi dan
System Info dari komputer pengguna. Cara membuka form ini dengan memilih menu Help pada program Time Code Calculator kemudian pilih sub menu About. Berikut ini tampilan user interface bentuk form About:
Gambar 3.7. Tampilan Form About
BAB IV IMPLEMENTASI
4.1. Hasil Uji Implementasi Perhitungan Pada Program.
Setelah program selesai dibuat berdasarkan teori dan algoritma, maka program perlu dilakukan uji implementasi apakah hasil yang didapat dari perhitungan program sudah sesuai dengan hasil dari perhitungan manual. Berikut ini hasil uji implementasi tersebut: 1. Penjumlahan Time Code. Tabel 4.1. Hasil Perhitungan Penjumlahan Time Code Frames per Second
First Time + Second Time
Total Time
25 (PAL)
23:59:59:24 + 23:59:59:24
Day (01) 23:59:59:23
29,97 (NTSC)
23:59:59:29 + 23:59:59:29
Day (01) 23:59:59:28
Tabel 4.2. Hasil Perhitungan Penjumlahan Time Code Dengan Program Frames per Second
First Time + Second Time
Total Time
25 (PAL)
23:59:59:24 + 23:59:59:24
Day (01) 23:59:59:23
29,97 (NTSC)
23:59:59:29 + 23:59:59:29
Day (01) 23:59:59:28
50
51
Hasil proses perhitungan dengan program dicatat dalam log files:
Gambar 4.1. Log File Penjumlahan Time Code Hasil yang didapat dari perhitungan program dengan perhitungan manual sesuai.
2. Pengurangan Time Code. Tabel 4.3. Hasil Perhitungan Pengurangan Time Code Frames per Second
First Time - Second Time
Total Time
25 (PAL)
11:11:11:11 - 23:59:59:24
Day (-01) 11:11:11:12
29,97 (NTSC)
11:11:11:11 - 23:59:59:29
Day (-01) 11:11:11:12
Tabel 4.4. Hasil Perhitungan Pengurangan Time Code Dengan Program Frames per Second
First Time - Second Time
Total Time
25 (PAL)
11:11:11:11 - 23:59:59:24
Day (-01) 11:11:11:12
29,97 (NTSC)
11:11:11:11 - 23:59:59:29
Day (-01) 11:11:11:12
52
Hasil proses perhitungan dengan program dicatat dalam log files
Gambar 4.2. Log File Pengurangan Time Code Hasil yang didapat dari perhitungan program dengan perhitungan manual sesuai
3. Program Serial To Single Conversions Tabel 4.5. Hasil Perhitungan Serial To Single Conversions Frames per Second
Single Time Serial Time Jam
Menit
Detik
Frame
25 (PAL)
23:59:59:24
23,99999
1439,99933
86399,96
2159999
29,97 (NTSC)
23:59:59:29
23,99999
1439,99944
86399,96667
2591999
53
Tabel 4.6. Hasil Perhitungan Serial To Single Conversions Dengan Program Frames per Second
Single Time Serial Time Jam
Menit
Detik
Frame
25 (PAL)
23:59:59:24
23,99999
1439,99933
86399,96
2159999
29,97 (NTSC)
23:59:59:29
23,99999
1439,99944
86399,96667
2591999
Hasil yang didapat dari perhitungan program dengan perhitungan manual sesuai
4. Program Single To Serial Conversions Tabel 4.7. Hasil Perhitungan Single To Serial Conversions Frames per Second
Single Time Serial Time Jam
Menit
Seconds
Frame
25 (PAL)
23,99999
1439,99933
86399,96
2159999
23:59:59:24
29,97 (NTSC)
23,99999
1439,99944
86399,96667
2591999
23:59:59:29
Tabel 4.8. Hasil Perhitungan Single To Serial Conversions Dengan Program Frames per Second
Single Time Serial Time Jam
Menit
Seconds
Frame
25 (PAL)
23,99999
1439,99933
86399,96
2159999
23:59:59:24
29,97 (NTSC)
23,99999
1439,99944
86399,96667
2591999
23:59:59:29
Hasil yang didapat dari perhitungan program dengan perhitungan manual sesuai
54
5. Time Conversions Tabel 4.9. Hasil Perhitungan Time Conversions Ubah Ke Satuan Dari Satuan Hari
1 Hari
1
Jam
24
Menit
1440
Detik
86400
Tabel 4.10. Hasil Perhitungan Time Conversions Dengan Program Ubah Ke Satuan Dari Satuan Hari
1 Hari
1
Jam
24
Menit
1440
Detik
86400
Semua hasil uji implementasi antara hasil perhitungan program dengan perhitungan manual adalah sesuai. Dengan begitu diharapkan program ini dapat membantu perhitungan dalam bentuk satuan waktu menjadi mudah dan efisiensi serta dengan adanya form log file yang mencatat hasil dari proses perhitungan penjumlahan dan pengurangan time code dapat membantu kita untuk melihat kembali proses perhitungan yang sudah dilakukan.
BAB V KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan dari hasil uji implementasi program maka dapat diambil kesimpulan sebagai berikut : -
Program
Time
Code
Calculator
dapat
mempermudah
perhitungan
penjumlahan dan pengurangan time code menjadi lebih efisien. -
Adanya log file yang mencatat dan menyimpan hasil proses perhitungan penjumlahan dan pengurangan Time Code dapat membantu kita untuk mencek kembali hasil perhitungan sewaktu-waktu.
-
Dengan program conversions dapat membantu kita dalam hal mengubah-ubah suatu nilai satuan waktu ke nilai satuan waktu lainnya.
5.2. Saran
Pengembangan aplikasi Time Code Calculator ini selain penjumlahan dan pengurangan dapat berupa sebagai berikut: -
Dapat ditambahkan operasi perkalian dan pembagian.
-
Dan untuk tampilan program bisa dikembangkan dengan penambahan tomboltombol angka
-
Dapat dikembangkan dengan bahasa pemrograman lainnya seperti: C++, Delphi, Java, dan sejenisnya.
55
DAFTAR PUSTAKA
Ir. Pamungkas. 2000. Tip Dan Trik Microsoft Visual basic 6.0. Jakarta: PT. Elex Media Komputindo http://www.smkti-lmg.com/mirror/04.%20Video.pdf http://id.wikipedia.org/wiki/Mesin_hitung
56
LAMPIRAN
57
LAMPIRAN 1 SOURCE CODE FORM TIME CODE CALCULATOR Option Explicit Public G_TYPE_FRAME As Integer Sub blockText(ByVal objtext As Object) MsgBox (objtext) ' Me.objtext.SelStart = 0 ' Me.objtext.SelLength = 2 End Sub Sub ClearText() one(0).Text = "" one(1).Text = "" one(2).Text = "" one(3).Text = "" two(0).Text = "" two(1).Text = "" two(2).Text = "" two(3).Text = "" totala.Text = "" totalb.Text = "" totalc.Text = "" totald.Text = "" Me.txt_remain.Text = "" End Sub Function logMe(ByVal sign As String) 'declare and initiate required objects Dim fs As FileSystemObject Dim ts As TextStream Dim type_frame As String If Me.G_TYPE_FRAME = 0 Then type_frame = "25 frames (PAL)" Else type_frame = "29.9 frames (NTSC)" End If Set fs = New FileSystemObject 'To write Set ts = fs.OpenTextFile("log_.txt", ForAppending, True) ts.WriteLine "log time : " & Now & " ===========================" ts.WriteLine "Frames per second : " & type_frame ts.WriteLine "Proses : " & sign ts.WriteLine "1st Time : " & Me.one(0).Text & ":" & Me.one(1).Text & ":" & Me.one(2).Text & ":" & Me.one(3).Text ts.WriteLine "2nd Time : " & Me.two(0).Text & ":" & Me.two(1).Text & ":" & Me.two(2).Text & ":" & Me.two(3).Text ts.WriteLine "Total Time : (" & Me.txt_remain.Text & ") " & Me.totala.Text & ":" & Me.totalb.Text & ":" & Me.totalc.Text & ":" & Me.totald.Text ts.WriteLine "======================================================" ts.WriteLine ts.Close 'To Read ' If fs.FileExists("log_.txt") Then
' ' ' ' ' '
Set ts = fs.OpenTextFile("log_.txt") Do While Not ts.AtEndOfStream MsgBox ts.ReadLine Loop ts.Close End If 'clear memory used by FSO objects Set ts = Nothing Set fs = Nothing End Function Sub addTime(ByVal type_frame As Integer) Dim v, w, X, Y As Integer Dim a, b, c, d As Integer Dim o, p, q, r As Integer Dim remain As Integer 'for type_frame = PAL (25) If (type_frame = 0) Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00" End If If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text) a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v+a p=w+b q=X+c r=Y+d remain = 0
If r >= 25 Then r = r - 25 q=q+1 End If If q >= 60 Then q = q - 60 p=p+1 End If If p >= 60 Then p = p - 60 o=o+1 End If If o >= 24 Then o = o - 24 remain = remain + 1 End If End If 'for type_frame = NTSC (29) If (type_frame = 1) Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00" End If If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text) a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v+a p=w+b q=X+c
r=Y+d remain = 0 If r >= 30 Then r = r - 30 q=q+1 End If If q >= 60 Then q = q - 60 p=p+1 End If If p >= 60 Then p = p - 60 o=o+1 End If If o >= 24 Then o = o - 24 remain = remain + 1 End If End If totala.Text = make2Digit(CStr(o)) totalb.Text = make2Digit(CStr(p)) totalc.Text = make2Digit(CStr(q)) totald.Text = make2Digit(CStr(r)) txt_remain.Text = make2Digit(CStr(remain)) Me.logMe ("+") End Sub Sub minusTime(ByVal type_frame As Integer) Dim v, w, X, Y As Integer Dim a, b, c, d As Integer Dim o, p, q, r As Integer Dim remain As Integer 'frame 25 (PAL) If type_frame = 0 Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00" End If
If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text) a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v-a p=w-b q=X-c r=Y-d remain = 0 If r < 0 Then r = r + 25 q=q-1 End If If q < 0 Then q = q + 60 p=p-1 End If If p < 0 Then p = p + 60 o=o-1 End If If o < 0 Then o = o + 24 remain = remain - 1 End If End If 'frame 29.97 (NTSC) If type_frame = 1 Then If one(0).Text = "" Then one(0).Text = "00" End If If one(1).Text = "" Then one(1).Text = "00" End If If one(2).Text = "" Then one(2).Text = "00" End If If one(3).Text = "" Then one(3).Text = "00" End If If two(0).Text = "" Then two(0).Text = "00" End If If two(1).Text = "" Then two(1).Text = "00" End If If two(2).Text = "" Then two(2).Text = "00"
End If If two(3).Text = "" Then two(3).Text = "00" End If v = CInt(one(0).Text) w = CInt(one(1).Text) X = CInt(one(2).Text) Y = CInt(one(3).Text) a = CInt(two(0).Text) b = CInt(two(1).Text) c = CInt(two(2).Text) d = CInt(two(3).Text) o=v-a p=w-b q=X-c r=Y-d remain = 0 If r < 0 Then r = r + 30 q=q-1 End If If q < 0 Then q = q + 60 p=p-1 End If If p < 0 Then p = p + 60 o=o-1 End If If o < 0 Then o = o + 24 remain = remain - 1 End If End If totala.Text = make2Digit(CStr(o)) totalb.Text = make2Digit(CStr(p)) totalc.Text = make2Digit(CStr(q)) totald.Text = make2Digit(CStr(r)) txt_remain.Text = make2Digit(CStr(remain)) Me.logMe ("-") End Sub Function make2Digit(ByVal txt As String) As String If Len(txt) = 2 Then make2Digit = txt Else make2Digit = "0" & txt End If End Function Private Sub About_Click() frmAbout.Show 1 End Sub Private Sub bt_exit_Click()
Dim Msg$ 'Message box message Dim OpVal% 'Option value variable Dim RetVal% 'variable for return value Dim TitleMsg$ 'Title message variable Msg$ = "Are you sure you want to exit?" OpVal% = vbExclamation + vbYesNo + vbDefaultButton2 TitleMsg$ = "Are you sure you want to Exit?" RetVal% = MsgBox(Msg$, OpVal%, TitleMsg$) If RetVal% = vbYes Then Unload Me End If End Sub Private Sub bt_new_Click() Me.ClearText one(0).SetFocus End Sub Private Sub cmd_log_Click() frmLog.Show 1 End Sub Private Sub cmdAdd_Click() Me.addTime (Me.G_TYPE_FRAME) End Sub Private Sub extend_Click() 'eform.Show 'Unload frmMain End Sub Private Sub cmdMin_Click() Me.minusTime (Me.G_TYPE_FRAME) End Sub Private Sub Form_Load() Me.frame_type(0).Value = True Me.G_TYPE_FRAME = 0 End Sub Private Sub helpextend_Click() 'help1.Show End Sub Private Sub frame_type_Click(Index As Integer) Me.G_TYPE_FRAME = Index End Sub Private Sub helpme_Click() frmHelp.Show 1 End Sub Private Sub itmExit_Click() Dim Msg$ 'Message box message Dim OpVal% 'Option value variable
Dim RetVal% 'variable for return value Dim TitleMsg$ 'Title message variable Msg$ = "Are you sure you want to exit?" OpVal% = vbExclamation + vbYesNo + vbDefaultButton2 TitleMsg$ = "Are you sure you want to Exit?" RetVal% = MsgBox(Msg$, OpVal%, TitleMsg$) If RetVal% = vbYes Then Unload Me End If End Sub Private Sub itmsertosing_Click() frmSerialToSingle.Show 1 End Sub Private Sub itmsingtoser_Click() frmSingleToSerial.Show 1 End Sub Private Sub move_Click() one(0).Text = "" one(1).Text = "" one(1).Text = totalb.Text one(0).Text = totala.Text one(2).Text = totalc.Text one(3).Text = totald.Text totala.Text = "" totalb.Text = "" totalc.Text = "" totald.Text = "" two(0).Text = "" two(1).Text = "" two(2).Text = "" two(3).Text = "" txt_remain.Text = "" Me.two(0).SetFocus End Sub Private Sub new_Click() one(0).Text = "" two(0).Text = "" one(1).Text = "" two(1).Text = "" totala.Text = "" totalb.Text = "" End Sub Public Sub blockMe(str As Integer, pos As String) If pos = "atas" Then one(str).SelStart = 0 one(str).SelLength = 2 one(str).SetFocus End If If pos = "bawah" Then two(str).SelStart = 0
two(str).SelLength = 2 two(str).SetFocus End If End Sub Private Sub moveUp(ByVal str As Integer, ByVal pos As String) If pos = "atas" Then one(str).SelStart = 0 one(str).SelLength = 2 one(str).SetFocus End If If pos = "bawah" Then two(str).SelStart = 0 two(str).SelLength = 2 two(str).SetFocus End If End Sub Private Sub moveLeft(ByVal str As Integer, pos As String) one(str).SelStart = 0 one(str).SelLength = 2 one(str).SetFocus End Sub Private Sub moveRight(ByVal str As Integer, pos As String) one(str).SelStart = 0 one(str).SelLength = 2 one(str).SetFocus End Sub Private Sub moveDown(ByVal str As Integer, pos As String) one(str).SelStart = 0 one(str).SelLength = 2 one(str).SetFocus End Sub Private Sub oneb_GotFocus() 'Me.blockText (oneb.Text) End Sub Private Sub one_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer) Select Case Index Case 0 If KeyCode = 37 Then End If If KeyCode = 38 Then 'Me.blockMe Index, "atas" End If If KeyCode = 39 Then Me.blockMe Index + 1, "atas" End If If KeyCode = 40 Then Me.blockMe Index, "bawah" End If
Case 1 If KeyCode = 37 Then Me.blockMe Index - 1, "atas" End If If KeyCode = 38 Then 'Me.blockMe Index, "atas" End If If KeyCode = 39 Then Me.blockMe Index + 1, "atas" End If If KeyCode = 40 Then Me.blockMe Index, "bawah" End If 'backspace If KeyCode = 8 Then Me.blockMe Index - 1, "atas" End If Case 2 If KeyCode = 37 Then Me.blockMe Index - 1, "atas" End If If KeyCode = 38 Then 'Me.blockMe Index, "atas" End If If KeyCode = 39 Then Me.blockMe Index + 1, "atas" End If If KeyCode = 40 Then Me.blockMe Index, "bawah" End If 'backspace If KeyCode = 8 Then Me.blockMe Index - 1, "atas" End If Case 3 If KeyCode = 37 Then Me.blockMe Index - 1, "atas" End If If KeyCode = 38 Then 'Me.blockMe Index, "atas" End If If KeyCode = 39 Then 'Me.blockMe Index + 1, "atas" End If If KeyCode = 40 Then Me.blockMe Index, "bawah" End If 'backspace If KeyCode = 8 Then Me.two(Index).Text = "" Me.blockMe Index - 1, "atas" End If End Select End Sub
Private Sub one_KeyPress(Index As Integer, KeyAscii As Integer) Select Case Index Case 0 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If Case 1 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If Case 2 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If Case 3 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If End Select End Sub Private Sub one_Change(Index As Integer) Select Case Index Case 0 If IsNumeric(one(0).Text) Then If one(0).Text <> "" Then If CInt(one(0).Text) >= 24 Then one(0).Text = "23" End If If CInt(one(0).Text) < 0 Then one(0).Text = "00" End If End If If Len(one(0).Text) = 2 Then one(1).SelStart = 0 one(1).SelLength = 2 one(1).SetFocus End If Else If one(0).Text <> "" Then one(0).Text = "00" End If End If
Case 1 If IsNumeric(one(1).Text) Then If one(1).Text <> "" Then If CInt(one(1).Text) >= 60 Then one(1).Text = "59" End If If CInt(one(1).Text) < 0 Then one(1).Text = "00" End If End If If Len(one(1).Text) = 2 Then one(2).SelStart = 0 one(2).SelLength = 2 one(2).SetFocus End If Else If one(1).Text <> "" Then one(1).Text = "00" End If End If Case 2 If IsNumeric(one(2).Text) Then If one(2).Text <> "" Then If CInt(one(2).Text) >= 60 Then one(2).Text = "59" End If If CInt(one(2).Text) < 0 Then one(2).Text = "00" End If End If If Len(one(2).Text) = 2 Then one(3).SelStart = 0 one(3).SelLength = 2 one(3).SetFocus End If Else If one(2).Text <> "" Then one(2).Text = "00" End If End If Case 3 If IsNumeric(one(2).Text) Then If one(3).Text <> "" Then If Me.G_TYPE_FRAME = 0 Then If CInt(one(3).Text) >= 25 Then one(3).Text = "24" End If End If If Me.G_TYPE_FRAME = 1 Then If CInt(one(3).Text) >= 30 Then one(3).Text = "29" End If End If If CInt(one(3).Text) < 0 Then one(3).Text = "00"
End If End If If Len(one(3).Text) = 2 Then two(0).SelStart = 0 two(0).SelLength = 2 two(0).SetFocus End If Else If one(3).Text <> "" Then one(3).Text = "00" End If End If End Select End Sub Private Sub time_conv_Click() frmConversions.Show 1 End Sub Private Sub two_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer) 'MsgBox (KeyCode) Select Case Index Case 0 If KeyCode = 37 Then Me.blockMe Index, "bawah" End If If KeyCode = 38 Then Me.blockMe Index, "atas" End If If KeyCode = 39 Then Me.blockMe Index + 1, "bawah" End If 'backspace If KeyCode = 8 Then Me.blockMe 3, "atas" End If Case 1 If KeyCode = 37 Then Me.blockMe Index - 1, "bawah" End If If KeyCode = 38 Then Me.blockMe Index, "atas" End If If KeyCode = 39 Then Me.blockMe Index + 1, "bawah" End If 'backspace If KeyCode = 8 Then Me.blockMe Index - 1, "bawah" End If Case 2 If KeyCode = 37 Then Me.blockMe Index - 1, "bawah" End If If KeyCode = 38 Then
Me.blockMe Index, "atas" End If If KeyCode = 39 Then Me.blockMe Index + 1, "bawah" End If 'backspace If KeyCode = 8 Then Me.blockMe Index - 1, "bawah" End If Case 3 If KeyCode = 37 Then Me.blockMe Index - 1, "bawah" End If If KeyCode = 38 Then Me.blockMe Index, "atas" End If 'backspace If KeyCode = 8 Then Me.two(Index).Text = "" Me.blockMe Index - 1, "bawah" End If End Select End Sub Private Sub two_KeyPress(Index As Integer, KeyAscii As Integer) Select Case Index Case 0 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If Case 1 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If Case 2 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If Case 3 If KeyAscii = 43 Then Me.addTime (Me.G_TYPE_FRAME) End If If KeyAscii = 45 Then Me.minusTime (Me.G_TYPE_FRAME) End If End Select
End Sub Private Sub two_Change(Index As Integer) Select Case Index Case 0 If IsNumeric(two(0).Text) Then If two(0).Text <> "" Then If CInt(two(0).Text) >= 24 Then two(0).Text = "23" End If If CInt(two(0).Text) < 0 Then two(0).Text = "00" End If End If If Len(two(0).Text) = 2 Then two(1).SelStart = 0 two(1).SelLength = 2 two(1).SetFocus End If Else If two(1).Text <> "" Then two(1).Text = "00" End If End If Case 1 If IsNumeric(two(1).Text) Then If two(1).Text <> "" Then If CInt(two(1).Text) >= 60 Then two(1).Text = "59" End If If CInt(two(1).Text) < 0 Then two(1).Text = "00" End If End If If Len(two(1).Text) = 2 Then two(2).SelStart = 0 two(2).SelLength = 2 two(2).SetFocus End If Else If two(1).Text <> "" Then two(1).Text = "00" End If End If Case 2 If IsNumeric(two(2).Text) Then If two(2).Text <> "" Then If CInt(two(2).Text) >= 60 Then two(2).Text = "59" End If If CInt(two(2).Text) < 0 Then two(2).Text = "00" End If End If If Len(two(2).Text) = 2 Then
two(3).SelStart = 0 two(3).SelLength = 2 two(3).SetFocus End If Else If two(2).Text <> "" Then two(2).Text = "00" End If End If Case 3 If two(3).Text <> "" Then If Me.G_TYPE_FRAME = 0 Then If CInt(two(3).Text) >= 25 Then two(3).Text = "24" End If End If If Me.G_TYPE_FRAME = 1 Then If CInt(two(3).Text) >= 30 Then two(3).Text = "29" End If End If If CInt(two(3).Text) < 0 Then two(3).Text = "00" End If End If End Select End Sub
LAMPIRAN 2 SOURCE CODE FORM SERIAL TO SINGLE Public GCONVERT_TYPE_FRAME As Integer Public Sub convert_serial_to_single(ByVal convTo As String) Dim hh, mm, ss, ff As Integer Dim res As Double If IsNumeric(Me.onec.Text) Then If Me.onec.Text = "" Then hh = 0 Else hh = CInt(Me.onec.Text) End If End If If Me.twoc.Text = "" Then mm = 0 Else mm = CInt(Me.twoc.Text) End If If Me.threec.Text = "" Then ss = 0 Else ss = CInt(Me.threec.Text) End If If Me.fourc.Text = "" Then ff = 0 Else ff = CInt(Me.fourc.Text) End If If Me.GCONVERT_TYPE_FRAME = 1 Then Select Case UCase(convTo) Case "JAM" res = (hh * 1) + (mm * 1 / 60) + (ss * 1 / 3600) + (ff * 1 / 108000) Case "MENIT" res = (hh * 60) + (mm * 1) + (ss * 1 / 60) + (ff * 1 / 1800) Case "DETIK" res = (hh * 3600) + (mm * 60) + (ss * 1) + (ff * 1 / 30) Case "FRAME" res = (hh * 108000) + (mm * 1800) + (ss * 30) + (ff * 1) End Select Else Select Case UCase(convTo) Case "JAM" res = (hh * 1) + (mm * 1 / 60) + (ss * 1 / 3600) + (ff * 1 / 90000) Case "MENIT" res = (hh * 60) + (mm * 1) + (ss * 1 / 60) + (ff * 1 / 1500) Case "DETIK" res = (hh * 3600) + (mm * 60) + (ss * 1) + (ff * 1 / 25) Case "FRAME" res = (hh * 90000) + (mm * 1500) + (ss * 25) + (ff * 1) End Select End If Me.txt_result.Text = Round(res, 5) Me.lbl_satuan.Caption = UCase(convTo)
End Sub Private Sub cmdExitSerial_Click() Unload Me End Sub Private Sub Command1_Click() convert_serial_to_single (Me.Combo1.Text) End Sub Private Sub cmdNew_Click() Me.onec.Text = "" Me.twoc.Text = "" Me.threec.Text = "" Me.fourc.Text = "" Me.onec.SetFocus End Sub Private Sub Combo1_Click() convert_serial_to_single (Me.Combo1.Text) End Sub Private Sub Form_Load() Me.frame_type(0).Value = True Me.GCONVERT_TYPE_FRAME = 0 Dim Waktu(0 To 3), Hasil(0 To 3) 'Array Dim I ' Mendeklarasikan variabel AutoSize = True Waktu(0) = "Jam" Waktu(1) = "Menit" Waktu(2) = "Detik" Waktu(3) = "Frame" Hasil(0) = "1 Jam" Hasil(1) = "1 Menit" Hasil(2) = "1 Detik" Hasil(3) = "1 Frame" For I = 0 To 3 ' Memasukan Waktu Ke Daftar Combo1.AddItem Waktu(I) Next I Combo1.ListIndex = 0 'Menampilkan Waktu yang pertama End Sub Private Sub fourc_Change() If IsNumeric(fourc.Text) Then If fourc.Text <> "" Then If Me.GCONVERT_TYPE_FRAME = 1 Then If CInt(fourc.Text) >= 30 Then fourc.Text = "29" End If If CInt(fourc.Text) < 0 Then fourc.Text = "00" End If Else If CInt(fourc.Text) >= 25 Then fourc.Text = "24"
End If If CInt(fourc.Text) < 0 Then fourc.Text = "00" End If End If End If Else If fourc.Text <> "" Then fourc.Text = "00" End If End If convert_serial_to_single (Me.Combo1.Text) If Len(Me.fourc.Text) = 2 Then Me.Combo1.SetFocus End If End Sub Private Sub frame_type_Click(Index As Integer) If Index = 1 Then Me.GCONVERT_TYPE_FRAME = 1 Else Me.GCONVERT_TYPE_FRAME = 0 End If convert_serial_to_single (Me.Combo1.Text) End Sub Private Sub onec_Change() If IsNumeric(onec.Text) Then If onec.Text <> "" Then If CInt(onec.Text) >= 24 Then onec.Text = "23" End If If CInt(onec.Text) < 0 Then onec.Text = "00" End If End If If Len(onec.Text) = 2 Then twoc.SelStart = 0 twoc.SelLength = 2 twoc.SetFocus End If Else If onec.Text <> "" Then onec.Text = "00" End If End If convert_serial_to_single (Me.Combo1.Text) End Sub Private Sub threec_Change() If IsNumeric(threec.Text) Then If threec.Text <> "" Then If CInt(threec.Text) >= 60 Then threec.Text = "59" End If
If CInt(threec.Text) < 0 Then threec.Text = "00" End If End If If Len(threec.Text) = 2 Then fourc.SelStart = 0 fourc.SelLength = 2 fourc.SetFocus End If Else If threec.Text <> "" Then threec.Text = "00" End If End If convert_serial_to_single (Me.Combo1.Text) End Sub Private Sub twoc_Change() If IsNumeric(twoc.Text) Then If twoc.Text <> "" Then If CInt(twoc.Text) >= 60 Then twoc.Text = "59" End If If CInt(twoc.Text) < 0 Then twoc.Text = "00" End If End If If Len(twoc.Text) = 2 Then threec.SelStart = 0 threec.SelLength = 2 threec.SetFocus End If Else If twoc.Text <> "" Then twoc.Text = "00" End If End If convert_serial_to_single (Me.Combo1.Text) End Sub
LAMPIRAN 3 SOURCE CODE FORM SINGLE TO SERIAL Public GCONVERT_TYPE_FRAME As Double Private Sub cmdExitSingle_Click() Unload Me End Sub Public Sub convert_single_to_serial(ByVal convTo As String) Dim dd, hh, mm, ss, ff As Double Dim data, sisa, sisa2, sisa3, sisa4, sisa5, frame_temp As Double If Me.GCONVERT_TYPE_FRAME = 1 Then Select Case UCase(convTo) Case "JAM" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 108000 dd = Int(frame_temp / 2592000) sisa = frame_temp Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800) sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 Case "MENIT" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 1800 dd = Int(frame_temp / 2592000) sisa = frame_temp Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800) sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 Case "DETIK" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 30 dd = Int(frame_temp / 2592000) sisa = frame_temp Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800)
sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 Case "FRAME" data = Me.txt_data.Text If data = "" Then data = 0 End If dd = Int(data / 2592000) sisa = data Mod 2592000 hh = Int(sisa / 108000) sisa2 = sisa Mod 108000 mm = Int(sisa2 / 1800) sisa3 = sisa2 Mod 1800 ss = Int(sisa3 / 30) sisa4 = sisa3 Mod 30 ff = sisa4 End Select Else Select Case UCase(convTo) Case "JAM" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 90000 dd = Int(frame_temp / 2160000) sisa = frame_temp Mod 2160000 hh = Int(sisa / 90000) sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 Case "MENIT" data = Me.txt_data.Text If data = "" Then data = 0 End If frame_temp = data * 1500 dd = Int(frame_temp / 2160000) sisa = frame_temp Mod 2160000 hh = Int(sisa / 90000) sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 Case "DETIK" data = Me.txt_data.Text If data = "" Then data = 0
End If frame_temp = data * 25 dd = Int(frame_temp / 2160000) sisa = frame_temp Mod 2160000 hh = Int(sisa / 90000) sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 Case "FRAME" data = Me.txt_data.Text If data = "" Then data = 0 End If dd = Int(data / 2160000) sisa = data Mod 2160000 hh = Int(sisa / 90000) sisa2 = sisa Mod 90000 mm = Int(sisa2 / 1500) sisa3 = sisa2 Mod 1500 ss = Int(sisa3 / 25) sisa4 = sisa3 Mod 25 ff = sisa4 End Select End If Me.txt_(0).Text = hh Me.txt_(1).Text = mm Me.txt_(2).Text = ss Me.txt_(3).Text = ff Me.day.Caption = dd End Sub Private Sub Command1_Click() convert_single_to_serial (Me.Combo1.Text) End Sub Private Sub cmdNew_Click() Me.txt_data.Text = "" Me.txt_data.SetFocus Me.txt_data.SelStart = 0 Me.txt_data.SelLength = 1 End Sub Private Sub Combo1_Click() Me.convert_single_to_serial (Me.Combo1.Text) 'MsgBox (Me.Combo1.Text) End Sub Private Sub Form_Load() Dim Waktu(0 To 3), Hasil(0 To 3) 'Array Dim I ' Mendeklarasikan variabel Me.frame_type(0).Value = True Me.GCONVERT_TYPE_FRAME = 0
AutoSize = True Waktu(0) = "Jam" Waktu(1) = "Menit" Waktu(2) = "Detik" Waktu(3) = "Frame" Hasil(0) = "1 Jam" Hasil(1) = "1 Menit" Hasil(2) = "1 Detik" Hasil(3) = "1 Frame" For I = 0 To 3 ' Memasukan Waktu Ke Daftar Combo1.AddItem Waktu(I) Next I Combo1.ListIndex = 0 'Menampilkan Waktu yang pertama End Sub Private Sub frame_type_Click(Index As Integer) If Index = 1 Then Me.GCONVERT_TYPE_FRAME = 1 Else Me.GCONVERT_TYPE_FRAME = 0 End If Me.convert_single_to_serial (Me.Combo1.Text) End Sub Private Sub txt_data_Change() 'If Me.txt_data.Text = "" Then ' Me.txt_data.Text = "0" 'End If If Not IsNumeric(Me.txt_data.Text) Then Me.txt_data.Text = "" End If Me.convert_single_to_serial (Me.Combo1.Text) End Sub
LAMPIRAN 4 SOURCE CODE FORM CONVERSIONS Public Function convert(ByVal from_ As String, to_ As String, data As Long) As String Dim res As String Select Case from_ Case "Hari" Select Case to_ Case "Hari" res = data Case "Jam" res = data * 24 Case "Menit" res = data * 24 * 60 Case "Detik" res = CDbl(data) * CDbl(86400) End Select 'res = 1 Case "Jam" Select Case to_ Case "Hari" res = Round((data / 24), 3) Case "Jam" res = data Case "Menit" res = data * 60 Case "Detik" res = CDbl(data) * CDbl(3600) End Select Case "Menit" Select Case to_ Case "Hari" res = data / 1440 Case "Jam" res = data / 60 Case "Menit" res = data Case "Detik" res = CDbl(data) * CDbl(60) End Select Case "Detik" Select Case to_ Case "Hari" res = data / 86400 Case "Jam" res = data / 3600 Case "Menit" res = data / 60 Case "Detik" res = data End Select End Select convert = res End Function
Private Sub btn_proses_Click() Dim res As String If Me.txt_Fill.Text = "" Or Not IsNumeric(Me.txt_Fill.Text) Then MsgBox "Invalid Number or Empty Text" Me.txt_Fill.Text = 0 Me.txt_Fill.SelStart = 0 Me.txt_Fill.SelLength = Len(Me.txt_Fill.Text) Me.txt_Fill.SetFocus Else res = convert(Me.cb_from.Text, Me.cb_to.Text, Me.txt_Fill.Text) Me.lb_res.Caption = Round(res, 3) Me.lb_satuan.Caption = Me.cb_to Me.txt_Fill.SelStart = 0 Me.txt_Fill.SelLength = Len(Me.txt_Fill.Text) Me.txt_Fill.SetFocus End If End Sub Private Sub cb_from_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 39 Then Me.cb_to.SetFocus End If If KeyCode = 37 Then Me.txt_Fill.SelStart = 0 Me.txt_Fill.SelLength = Len(Me.txt_Fill.Text) Me.txt_Fill.SetFocus End If End Sub Private Sub cb_to_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 39 Then Me.btn_proses.SetFocus End If If KeyCode = 37 Then Me.cb_from.SetFocus End If End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Command2_Click() Me.txt_Fill.Text = "" Me.txt_Fill.SelStart = 0 Me.txt_Fill.SelLength = Len(Me.txt_Fill.Text) Me.txt_Fill.SetFocus End Sub Private Sub Form_Load() Me.cb_from.Text = "Hari" Me.cb_to.Text = "Hari" Me.txt_Fill.Text = "" End Sub
Private Sub txt_Fill_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 39 Then Me.cb_from.SetFocus End If End Sub