• Tidak ada hasil yang ditemukan

Diagram Alir

Dalam dokumen BAB 3 ANALISIS DAN PERANCANGAN (Halaman 25-36)

Diagram alir untuk program pada PC yang menangani tampilan pada monitor dan melayani Mobile Scanner.

Gambar 3.16 Program utama Terminal

Ketika program dijalankan, maka program tersebut akan memasuki tahap inisialisasi terlebih dahulu. Beberapa hal yang dilakukan dalam proses inisialisasi ini antara lain:

ƒ Setup GUI. Menggambar window sesuai dengan yang diinginkan, seperti window utama, toolbar, dan kotak info. Grid pada peta juga digambar pada tahap ini. Zoom peta diberikan nilai awal 100%.

ƒ Setup Timer. Terdapat dua Timer yang digunakan pada program utama, yaitu Timer 1 untuk melakukan rutinitas pengecekan buffer di serial port dan mengambil data dari sana, dan Timer 2 untuk mengecek antrian string yang perlu di-ACK oleh penerima.

ƒ Setup variabel penting lainnya, dan instantiasi objek yang diperlukan. Contoh variabel yang diset pada waktu inisialisasi adalah variabel-variabel yang menampung nilai default seperti waktu timeout titik ikan, flag yang menandakan posisi Terminal sudah diset (dikalibrasi) atau belum, dan lain-lain. Contoh objek yang diinstantiasi adalah objek untuk melakukan koneksi ke serial port dengan pengaturannya yang disesuaikan dengan kebutuhan, objek yang berhubungan dengan window, dan objek-objek lain yang diperlukan.

Setelah dilakukan inisialisasi program melanjutkan ke setting serial port yang diperlukan dari input user, yaitu nomor serial port yang akan digunakan. Program akan memunculkan sebuah dialog box yang berisi daftar nomor serial port yang mungkin dipilih, dan user cukup memilih dari combo box yang disediakan dan menekan tombol OK. Jika OK ditekan, maka program akan mengecek keberadaan RF modem di nomor serial port yang dipilih oleh user. Cara untuk mengecek keberadaan RF modem di serial port tertentu adalah dengan mengirimkan string ‘+++’ ke serial port tersebut dan mendengarkan balasan dari RF modem berupa string ‘OK’. Jika balasan diterima dalam waktu 1 detik, maka terdapat RF modem di serial port tersebut. Jika terdapat RF modem pada nomor serial port yang dipilih, maka program akan lanjut ke program utama Terminal. Jika tombol Cancel ditekan, maka user diasumsikan telah mengetahui bahwa nomor serial port yang akan digunakan adalah COM1.

Setelah proses ini selesai, maka program akan melanjutkan ke program utamanya. Sebelum masuk ke program utamanya, timer 1 dan 2 akan di-start, dimana akan dimulai pengecekan serial port. Timer 1 (TIMER1) diset untuk firing setiap 1ms, sedangkan timer 2 (TIMER2) cukup firing setiap 100ms supaya tidak memberatkan sistem.

Ketika timer 1 melakukan firing, maka program akan mengecek serial port. Pada inisialisasi program, telah dibuat sebuah variabel boolean lagiAmbil yang bernilai awal False. Variabel ini yang menandakan sebuah paket data sedang diambil atau tidak. Jika mendapat karakter ‘#’ (awal dari sebuah paket data/sentence) dari serial port, maka variabel ini akan diset True. Variabel ini akan diset False jika karakter <LF> atau <CR> ditemukan. Variabel ini yang menentukan apakah karakter dari serial port tersebut merupakan karakter yang merupakan bagian dari sebuah paket data.

Dari diagram alir (Gambar 3.17) dapat dilihat bahwa bila tidak lagiAmbil, maka akan dicek apakah karakter yang didapat dari serial port tersebut merupakan karakter ‘#’. Jika ya, maka lagiAmbil diset menjadi True, dan variabel string sentence untuk menampung paket data tersebut akan di-clear untuk bersiap menampung paket data baru. Kemudian karakter ‘#’ ini dimasukkan ke dalam variabel sentence ini. Ketika lagiAmbil sudah diset menjadi True, maka setiap kali mengecek serial port dan menemukan adanya karakter yang menunggu, maka karakter tersebut akan diambil dan dimasukkan ke dalam variabel string sentence ini sampai menemukan karakter <LF>. Jika karakter ini ditemukan, maka sebuah paket data telah selesai diambil dan jalan program akan dialihkan ke acknowledgment paket dan parsing paket data yang didapat tersebut.

Gambar 3.18 Sub-rutin parsing

Parsing paket data tersebut dimulai dari menentukan jenis paket data tersebut, kemudian melakukan parsing sesuai dengan paket data tersebut. Jenis-jenis paket data yang ada, yaitu Informasi lokasi keberadaan kapal (LLK), Informasi koordinat keberadaan titik ikan (KTI), Informasi kalibrasi koordinat titik terminal (TPF), Permintaan titik ikan (PTI), Permintaan titik terminal (PTT), dan paket ACK. Tiga paket data yang identik untuk 5 field pertamanya adalah LLK, KTI, dan TPF. Lima field utamanya adalah Waktu, Derajat Lintang, Utara/Selatan, Derajat Bujur, Barat/Timur. Ketiga paket ini dibuat identik untuk memudahkan proses parsing dimana cukup dibuat sebuah sub-rutin.

Gambar 3.19 Sub-rutin yang dipanggil setelah proses parsing selesai

Dalam program Terminal terdapat beberapa container class yang digunakan untuk menampung berbagai kumpulan objek dengan kelas yang sama. Container class ini disediakan oleh Qt dengan nama kelas QList. Dari kelas ini dapat dibuat objek container untuk menampung berbagai objek lain, seperti titik-titik kapal, titik-titik ikan, dan daftar antrian string yang harus di-ACK. Sebuah objek container digunakan untuk menampung beberapa objek dari sebuah kelas. Syarat dari kelas objek tersebut agar objek tersebut dapat ditampung dalam container ini adalah kelas tersebut harus

mempunyai copy constructor, default constructor, dan overload operator assignment (=).

Daftar titik kapal adalah sebuah objek dari container class QList yang diinstantiasi untuk menampung objek titik kapal. Beberapa daftar lain adalah daftar titik ikan, dimana adalah objek dari QList yang diinstantiasi untuk menampung objek titik ikan, dan daftar antrian string ACK, dimana adalah objek dari QList yang diinstantiasi untuk menampung objek string dari kelas QString.

Bila mendapat sentence LLK dari Mobile Scanner, maka Terminal akan melakukan update titik kapal yang ada dalam daftar titik kapal yang dimiliki oleh Terminal. Update ini dilakukan dengan jalan sebagai berikut:

ƒ Jika daftar titik kapal kosong (belum ada satupun kapal yang dikandung oleh daftar titik kapal), maka titik kapal tersebut langsung dimasukkan ke dalam daftar titik kapal.

ƒ Jika sudah ada titik kapal di dalam daftar titik kapal, maka lakukan pencarian apakah ada kapal dengan ID yang sama dengan kapal yang hendak dimasukkan tersebut. Bila ada, maka kapal yang IDnya sama tersebut dibuang dari daftar dan kapal yang hendak dimasukkan tersebut dimasukkan ke dalam daftar. Bila tidak ada kapal yang IDnya sama, maka masukkan kapal tersebut ke dalam daftar kapal.

Bila mendapat sentence KTI, maka Terminal akan menambahkannya ke dalam daftar titik ikan. Kemudian setelah itu melakukan update peta untuk menampilkan ikan yang baru saja didapat tersebut.

Gambar 3.20 Sub-rutin untuk meng-update posisi Terminal

Sentence TPF dikirimkan oleh Mobile Scanner pada saat Mobile Scanner tersebut selesai melakukan inisialisasi dan hasil baca dari GPS sudah benar. Sentence ini digunakan untuk kalibrasi pertama kali pada Terminal. Terminal akan mengasumsikan bahwa posisi dia pada saat menerima sentence TPF merupakan isi dari sentence TPF tersebut. Sebagai implikasinya, Mobile Scanner pertama yang akan dihidupkan harus berada di dekat Terminal, sehingga posisi mereka sama. Terminal hanya akan meng-update posisi dan waktunya sekali setelah Terminal dijalankan. Bila menerima sentence TPF ini setelah Terminal telah mendapat update, maka sentence TPF ini akan diabaikan.

Gambar 3.21 Sub-rutin untuk mengecek antrian string yang perlu di-ACK

Untuk mekanisme Acknowledgment, maka setiap akhir dari sebuah paket data selalu diberikan sebuah sequence number. Sequence number ini nantinya akan digunakan oleh penerima untuk membuat sebuah paket ACK untuk memberitahukan kepada pengirim bahwa paket data dengan sequence number tersebut berhasil diterima.

Terminal dapat berperan sebagai penerima maupun pengirim. Pada saat Terminal telah mengirimkan sebuah sentence, Terminal akan memasukkan sentence tersebut ke dalam antrian sentence yang perlu di-ACK. Antrian sentence ini akan dicek setiap 100ms. Apabila terdapat sebuah sentence yang telah menunggu selama 500ms (0,5s) maka sentence tersebut akan dikirim ulang. Setiap sentence yang ada di antrian ini di-tag

dengan waktu kirim terakhir dan jumlah retry. Sebuah sentence dalam daftar sentence juga dapat dihapus bila Terminal menerima ACK dengan ACK number sesuai dengan nomor ACK-nya.

3.4.2.3 Rancang Bangun

Gambar 3.22 Rancangan Graphical User Interface dari Terminal

Gambar di atas merupakan rancangan tampilan dari program Terminal. Program ini menampilkan titik-titik ikan yang dikirimkan oleh Mobile Scanner.

Dalam dokumen BAB 3 ANALISIS DAN PERANCANGAN (Halaman 25-36)

Dokumen terkait