Automotive Multimedia Interface Collaboration (AMIC)

Automotive Multimedia Interface Collaboration (AMIC)

Pengertian AMIC

Kolaborasi Antarmuka Otomotif Multimedia adalah suatu kelompok yang dibuat untuk menciptakan standar umum yang digunakan dalam mengatur bagaimana suatu perangkat alat elektronik bekerja misalnya komputer dan alat komunikasi kendaraan. Dan memiliki anggota: Fiat, Ford, General Motors, Honda, Mitsubishi, Nissan, PSA Peugeot-Citroen, Renault.

Automotive Multimedia Interface Kolaborasi (AMIC) mengatakan akan menjadi tuan rumah tiga update internasional briefing untuk menjadi pemasok otomotif, komputer dan teknologi tinggi industri elektronik.

AMIC telah mengalami kemajuan yang signifikan dalam satu tahun terakhir ini dalam menyelesaikan struktur organisasi dan mencapai kesepakatan tentang persyaratan yang diperlukan untuk hardware dan software yang baik di masa depan untuk mobil dan truk,” Jurubicara AMIC Dave Acton berkata, “Dan sekarang sudah saatnya bagi kita untuk bertemu dengan pemasok dan mereka yang tertarik untuk menjadi pemasok untuk memastikan kami pindah ke tahap berikutnya pembangunan kita bersama-sama. “

Acton menekankan bahwa AMIC terbuka untuk semua pemasok yang tertarik bisnis elektronik. AMIC dibentuk pada bulan September l998 dan saat ini dipimpin oleh 12 produsen otomotif dan anak perusahaan yang meliputi: BMW, DaimlerChrysler, Ford, Fiat, General Motors, Honda, Mitsubishi, Nissan, PSA / Peugeot-Citroen, Renault, Toyota, dan VW. Seorang juru bicara mengatakan kelompok AMIC berencana untuk mendirikan sebuah kantor di San Francisco di masa depan.

Tujuan AMIC

Tujuan dari kolaborasi antar muka otomotif multimedia antar lain :

  • Menyediakan interface standar untuk memungkinkan pengendara mobil untuk menggunakan berbagai media, komputer dan perangkat komunikasi – dari sistem navigasi dan hands-free telepon selular, melalui manusia maju / mesin sistem antarmuka, termasuk pengenalan suara dan sintesis, untuk dipersembahkan komunikasi jarak dekat ( DSRC) sistem untuk kendaraan untuk infrastruktur komunikasi dan sistem mobil seperti airbag, pintu kunci dan diagnostik input / output

  • Meningkatkan pilihan dan mengurangi keusangan sistem elektronik kendaraan

  • Memotong biaya keseluruhan informasi kendaraan dan peralatan hiburan dengan meningkatkan ukuran pasar yang efektif dan memperpendek waktu pengembangan – industri otomotif efektif terdiri dari banyak pasar yang kecil karena setiap platform kendaraan sering mengandung berbagai adat-mengembangkan komponen dan platform yang khas hanya sekitar 50.000 unit

  • Menawarkan standar terbuka dan spesifikasi untuk informasi interface dalam kendaraan dan antara kendaraan dan dunia luar

Keuntungan dari AMIC

  • Memungkinkan seorang pengendara kendaraan (mobil) dapat menggunakan perangkat lain melalui berbagai media, komputer, perangkat komunikasi dari sistem navigasi dan handsfreeyang biasa digunakan pada telepon selular.

  • Biaya yang dikeluarkan untuk keseluruhan informasi kendaraan bisa dipangkas.

  • Dapat meningkatkan pilihan dan mengurangi keusangan sistem elektronik kendaraan.

Kerugian dari AMIC

  • Biaya mahal jika terjadi kerusakan komponen.

  • Jika perangkat multimedia terlalu banyak akan membingungkan pengendara dan mengakibatkan kecelakaan.

  • Karena tuntutan pasar, diharuskan AMIC selalu memiliki inovasi sehingga pengguna tidak cepat bosan.

Saran

Dalam perkembangan teknologi harus ada pertimbangan dan konsekuensi yang harus di hadapi apabila tidak sesuai dengan standarisasi terutama keselamatan. AMIC mungkin saja menjadikan kendaraan lebih santai, tidak kaku karena adanya dukungan multimedia. Tetapi harus di perhatikan masalah keselamatan. Jika hal ini diabaikan maka akan menjadi bomerang dan sangat membahayakan bagi pengguna/pengendara dan orang lain.

Open Service Gateway Initiative (OSGi)

Pengertian OSGi
Open Service Gateway Initiative (OSGi) adalah sebuah system dan aplikasi interoperability
berbasis komponen platform yang terintegrasi. OSGi merupakan system modul dinamik untuk Java.
Teknologi OSGi adalah Universal Middleware. Teknologi OSGi menyediakan sebuah serviceoriented,
lingkungan yang berbasis komponen untuk pengembang dan menawarkan jalan standard
untuk mengatur siklus hidup software. Kemampuan ini dapat menambah nilai jangkauan dari
computer dan peralatan yang menggunakan platform Java dengan sangat hebat. Teknologi OSGi
mengadopsi keuntungan dari menambah time-to-market dan mengurangi biaya pengembangan
karena teknologi OSGi menyediakan subsistem komponen yang terintegrasi dari pre-build dan pretested.
Teknologi ini juga mengurangi biaya perawatan dan memberikan kesempatan aftermarket
yang baru dan unik karena jaringan dapat digunakan untuk update secara dinamik dan mengirimkan
service dan aplikasi di lapangan.
Arsitektur OSGi
OSGi adalah sebuah set spesifikasi yang mendefinisikan sebuah komponen system dinamik untuk
Java. Spesifikasi ini memungkinkan sebuah model pengembangan dimana aplikasi (secara dinamik)
terdiri dari berbagai komponen yang berbeda. Spesifikasi OSGi memungkinkan komponenkomponennya
untuk menyembunyikan implementasinya dari komponen lainnya ketika
berkomunikasi melalui services dimana biasanya ketika hal ini berlangsung implementasi antar
komponen dapat terlihat jelas. Model yang simple ini telah jauh mencapai efek dari segala aspek
dari proses pengembangan software.
Model lapisan dari OSGi adalah sebagai berikut :

a.Bundles : bundles adalah komponen OSGi yang dibuat oleh pengembang/developer.
b.Services : lapisan service menghubungkan bundles dalam sebuah jalan dinamik dengan
menawarkan model publish-find-bind untuk objek Java yang lama.
c.Life Cycle : API untuk menginstall, memulai, menghentikan, update dan menguninstall bundles.
d.Modules : lapisan yang menjelaskan bagaimana bundles dapat mengimport dan mengexport kode.
e.Security : Lapisan yang memegang aspek keamanan.
f.Execution Environment : menjelaskan class dan method apa yang ada di platform.

Implementasi OSGi
Dalam kehidupan sehari-hari teknologi OSGI dikembangkan untuk mengendalikan alat-alat
elektronik dalam rumah tangga dengan internet. Yaitu dengan menghubungkan berbagai framework
OSGI ini untuk mengendalikan alat-alat rumah tangga yang bersifat elektronik. Hal ini dilakukan
dengan berbagai protocol network yaitu Bluetooth, uPnP,HAVi, dan X10. Dengan bantuan Jini dan
standart OSGI dari sun microsistem yaitu Java Embedded Server. Teknologi ini dinamakan home
network dan jinni adalah salah satu standart untuk pembuatan home nerwork yang berbasis java.
Dalam bidang Teknologi dan industry, dalam hal ini pengembangan OSGI dalam Teknologi dan
industri adalah untuk otomatisasi industri. Seperti otomatisnya system dalam gudang yang dapat
meminta dalam PPIC untuk mengadakan bahan baku, dan masih banyak yang lain.
Dalam ilmu Komputer ini sangat banyak pengembang yang memanfaatkan teknologi OSGI ini.
Dari surfing di internet banyak yang mengulas tentang Pemrograman Java yang mengapdopsi
teknologi osgi ini. Salah satu contoh adalah knopflerfish merupakan framework untuk melakukan
OSGI didalam program Java. Dan juga eclipse IDE merupakan OSGI framework yang
dikembangkan oleh eclipse dan berbasis GUI. Dan masih banyak juga dalam server serta programprogram
lain yang mengembangkan teknologi OSGI ini.

Keuntungan dari teknologi OSGi
1.Mengurangi kompleksitas : mengembangkan dengan OSGi berarti menembangkan bundles : salah
satu komponen OSGi. Bundles adalah modul. Bundles menyembunyikan aspek internalnya dari
bundles lainnya. Hal ini berarti ada banyak kebebasan untuk menggantinya di kemudian hari.
2.Dapat digunakan kembali : model komponen OSGi sangat mudah digunakan dan dapat digunakan
dengan aplikasi pihak ketiga.
3.RealWorld : OSGi framework dinamik. Hal ini berarti OSGi dapat diupdate secara online.
4.Mudah Penyebarannya : teknologi OSGi bukanlah sebuah teknologi standard. OSGi dapat
dimanage sedemikian rupa serta dapat diatur cara penginstalannya.
5.Update yang dinamik : OSGi komponen bisa diupdate secara dinamik.
6.Adaptif : model komponen OSGi didesain sedemikian rupa hingga diperbolehkan untuk
mengkombinasi dan mencocokan antar komponen.
7.Transparan
8.Banyak versinya
9.Simple : OSGi API sangat simple. API OSGi hanya terdiri dari satu paket dan berjumlah kurang
dari 30 kelas.
10.Ukurannya kecil
11.Kinerjanya cepat
12.Malas : Malas dalam software itu berarti bagus. Teknologi OSGi mempunyai banyak mekanisme
hanya ketika dibutuhkan saja.
13.Aman
14.Sederhana
15.Tidak Mengganggu Kinerja Aplikasi Lainnya
16.Berjalan dimana saja
17.Digunakan secara luas
18.Didukung Oleh Berbagai Perusahaan : OSGi juga didukung oleh berbagai perusahaan seperti
Oracle, IBM, Samsung, Nokia, IONA, Motorola, NTT, Siemens, Hitachi, Deutsche Telekom,
Redhat, Ericsson, dan masih banyak lagi.

Kerugian OSGi
1. Pengguna dihadapkan pada tanggunjawab untuk terus menarik laporan informasi.
2. Pengguna harus selalu mengetahui posisi perangkat yang dikelola.
3. Penerapan yang membutuhkan biaya besar.
4. Membuat ketergantungan dalam kemudahan teknologi.

Layanan Telematika

LAYANAN TELEMATIKA
Pada saat ini media informasi sudah banyak berkembang. Teknologi telematika yang
telah berkembang mampu menyampaikan suatu informasi melalui media yang semakin
canggih. Telematika adalah singkatan dari Telekomunikasi dan Informatika. Ini merupakan
suatu bentuk hubungan saling bertukar informasi dari pihak yang satu kepada pihak yang
lain. Layanan Telematika itu adalah Layanan dial up ke jaringan internet maupun semua jenis
jaringan yang didasarkan pada sistem telekomunikasi untuk mengirimkan data. Layanan
Telematika (dalam bhs.Inggris disebut juga Telematics Services) dewasa ini sudah banyak
digunakan oleh pemerintah Indonesia untuk menunjang kebutuhan dan kenyamanan
masyarakat.

JENIS-JENIS LAYANAN TELEMATIKA

  1. Layanan Informasi
    Layanan informasi merupakan penggabungan dari telekomunikasi digital dan
    teknologi komputer yang memainkan peran penting dalam komunikasi antara manusia
    dengan kendaraan bergerak seperti mobil yang menawarkan layanan GPS.
    contoh lainnya : M-Commerce dan VOD.
  2. Layanan Keamanan
    Layanan keamanan merupakan layanan yang menyediakan keamanan informasi dan
    data agar tidak mudah terhapus atau hilang . Layanan ini terdiri atas enskripsi,
    penggunaan protokol, penentuan akses kontrol dan auditin.
    contoh : penggunaan firewall dan antivirus
  3. Layanan Context Aware & Even Base
    Layanan Context Aware & Even Base merupakan layanan dimana sistem memiliki
    kemampuan untuk mengrti kebutuhan user, network dan lingkungan.
    contoh : ketika seorang user sedang mengadakan rapat, maka context-aware mobile
    phone yang dimiliki user akan langsung menyimpulkan bahwa user sedang
    mengadakan rapat dan akan menolak seluruh panggilan telepon yang tidak penting.
    Dan untuk saat ini, konteks location awareness dan activity recognition yang
    merupakan bagian dari context-awareness menjadi pembahasan utama di bidang
    penelitian ilmu komputer.
    Tiga hal yang menjadi perhatian sistem context-aware menurut Albrecht Schmidt,
    yaitu:
  • The acquisition of context
    Berkaitan dengan pemilihan konteks dan bagaimana cara memperoleh konteks
    yang diinginkan.contoh : pemilihan konteks lokasi, dengan penggunaan suatu
    sensor lokasi tertentu (misalnya: GPS) untuk melihat situasi atau posisi suatu
    lokasi tersebut.
  • The abstraction and understanding of context
    Pemahaman terhadap bagaimana cara konteks yang dipilih berhubungan dengan
    kondisi nyata, bagaimana tanggapan sistem dan cara kerja terhadap inputan
    dalam suatu konteks dan dapat membantu meningkatkan kinerja aplikasi.
  • Application behaviour based on the recognized context
    Bagaimana pengguna dapat memahami sistem dan tingkah lakunya yang sesuai
    dengan konteks yang dimilikinya serta bagaimana cara memberikan kontrol
    penuh kepada pengguna terhadap sistem.

Empat kategori aplikasi context-awareness menurut Bill N. Schilit, Norman Adams, dan Roy Want, yaitu :

  • Proximate selection Proximate selection :
    Sebuah teknik antarmuka yang memudahkan pengguna dalam memilih atau
    melihat lokasi objek (benda atau manusia) yang berada didekatnya dan
    mengetahui posisi lokasi dari user itu sendiri.
  • Automatic Contextual Reconfiguration :
    Bagaimana konteks yang digunakan membawa perbedaan terhadap konfigurasi
    sistem dan bagaimana cara antar setiap komponen berinteraksi. contoh:
    penggunaan virtual whiteboard sebagai salah satu inovasi automatic
    reconfiguration yang menciptakan ilusi pengaksesan virtual objects sebagai
    layaknya fisik suatu benda.
  • Contextual Informations and Commands
    Dimana informasi-informasi yang berkaitan dan perintah yang akan
    dilaksanakan disimpan ke dalam sebuah directory tertentu. Setiap file yang
    berada di dalam directory berisi locations and contain files, programs, and
    links. Ketika seorang user berpindah dari suatu lokasi ke lokasi lainnya, maka
    browser juga akan langsung mengubah data lokasi di dalam directory. contoh :
    ketika user berada di kantor, maka user akan melihat agenda yang harus
    dilakukan; ketika user beralih lagi ke dapur, maka user tersebut akan melihat
    petunjuk untuk membuat kopi dan data penyimpanan kebutuhan dapur.
  • Context-Triggered Actions
    Cara kerja sistem context-triggered actions sama layaknyadengan aturan
    sederhana IF-THEN. Informasi yang berada pada klausa kondisi akan memacu
    perintah aksi yang harus dilakukan. contoh : coffee kitchen arriving “play –v
    50 ~/sounds/rooster.au” artinya, ketika siapapun berada di dapur dan
    menggunakan mesin coffee maker maka alarm rooster sound akan berbunyi.
  1. Layanan Perbaikan Sumber
    Layanan perbaikan atau disebut Discovery Service (RDS) adalah sebuah layanan yang
    berfungsi untuk penemuan layanan utilitas yang diperlukan. The RDS juga berfungsi
    dalam pengindeksan lokasi layanan utilitas untuk mempercepat kecepatan penemuan.
    Contoh: Yellow pages service

KELEBIHAN DAN KEKURANGAN LAYANAN TELEMATIKA
Adapun kelebihan dari layanan telematika diatas, diantaranya:
1. Dengan adanya Layanan Telematika di Bidang Informasi, bisa meningkatkan kinerja
pemerintah dalam menyediakan informasi dan layanan untuk masyarakat khususnya
kalangan menengah kebawah sehingga dapat merasakan pemerataan teknologi dan
informasi.
2. Dengan adanya Layanan Telematika di bidang Keamanan, Masyarakat pada
umumnya dapat merasa lebih aman karena jika terjadi sesuatu yang diinginkan,
mereka dapat langsung menghubungi pihak berwajib dengan teknologi yang ada.
3. Pada Layanan Context Aware dan Event-Based, Dengan ini si pengguna dapat hak
privasi yang lebih tanpa harus melakukan banyak / otomatis sistem yang telah
mengatur agar si pengguna tidak diganggu dalam waktu yang diinginkan si pengguna.
4. Pada Layanan Perbaikan Sumber, contohnya pada yellow pages service, setiap orang
dapat bantuan yang lebih dalam mencari alamat / nomor telepon suatu instansi.

Adapun kekurangan dari layanan telematika diatas, diantaranya:
1. Pada Layanan Telematika di Bidang Informasi, Jika perhatian kepada mereka yang
kurangnya informasi dari kebebasan akses yang mereka lakukan, akan berdampak
buruk yang disebabkan pihak yang tidak bertanggung jawab.
2. Pada Layanan Telematika di bidang Keamanan, Keamanan ini juga berdampak buruk
jika ada oknum / Hacker yang berniat jahat untuk membobol suatu sistem keamanan.
3. Pada Layanan Context Aware dan Event-Based, Si pengguna akan terlambat
mengetahui jika ada panggilan penting saat ia tidak ingin diganggu, contohnya, ia
tidak tahu kalau anaknya masuk rumah sakit ketika ia sedang rapat.
4. Pada Layanan Perbaikan Sumber, Tidak mudah mencari / tidak cepat karena yellow
pages masih dalam bentuk buku. Jadi orang yang ingin mencari informasi di
dalamnya harus mencari secara manual dengan membaca indeksnya terlebih dahulu.
SARAN
• Perlunya didukung pendanaan yang memadai dari pemerintah untuk pengembangan
layanan telematika di seluruh daerah sehingga tidak hanya dinikmati di kota kota
besar saja.
• Memprioritaskan layanan telematika yang dapat mempercepat pertumbuhan ekonomi
dan memperbaiki kondisi investasi seperti e-banking, e-commerce, e-procurement,
maupun berbagai usaha telematika yang dapat memberdayakan Usaha Kecil dan
Menengah.
• Perlu penyusunan kebijakan atau aturan atau hukum yang jelas mengenai penggunaan
layanan telematika sehingga masyarakat mengerti mana yang diperbolehkan dan
dilarang oleh hukum.
• Perlunya penyebaran kurikulum di berbagai tingkatan sekolah nasional agar murid
mengerti penggunaan layanan telematika dengan benar dan baik.

Sumber

http://jun-ker.blogspot.com/2014/11/layanan-telematika.html
http://lookshe.blogspot.com/2012/11/layanan-telematika-teknologi-wireless.html
http://wartawarga.gunadarma.ac.id/2010/12/pengantar-telematika-materi-2/

Telematika

PENGERTIAN TELEMATIKA
Telematika berasal dari bahasa perancis “Telematique” yang merujuk pada bertemunya sistem jaringan komunikasi dengan teknologi informasi. Teknologi Informasi merujuk pada sarana prasarana, sistem dan metode untuk perolehan, pengiriman, penerimaan, pengolahan, penafsiran, penyimpanan, pengorganisasian, dan penggunaan data yang bermakna.
Para praktisi menyatakan bahwa “Telematics“ adalah singkatan dari “Telecommunication” and “informatics” sebagai wujud dari perpaduan konsep Computing and Communication. Istilah Telematics juga dikenal sebagai “the new hybrid technology” yang lahir karena perkembangan teknologi digital. Perkembangan ini memicu perkembangan teknologi telekomunikasi dan informatika menjadi semakin terpadu (konvergensi). Semula media masih belum menjadi bagian integral dari isu konvergensi teknologi informasi komunikasi pada saat itu.
Belakangan baru disadari bahwa penggunaan sistem komputer dan sistem komunikasi ternyata juga menghindarkan media komunikasi baru. Lebih jauh lagi istilah Telematika kemudian merujuk pada perkembangan konvergensi antara telekomunikasi, media dan informatika yang semula masing-masing berkembang secara terpisah.
Konvergensi Telematika kemudian dipahami sebagai sistem elektronik berbasiskan teknologi digital atau “The Net”. Dalam perkembangannya istilah “media” dalam Telematika berkembang menjadi wacana “multimedia”. Hal ini sedikit membingungkan masyarakat, karena istilah “multimedia” semula hanya merujuk pada kemampuan sistem komputer untuk mengolah informasi dalam berbagai medium. Adalah suatu ambigus jika istilah Telematika dipahami sebagai akronim Telekomunikasi, Multimedia dan Informatika (http://law.ui.ac.ic/lama/telematika/index.htm).
Menurut instruksi presiden RI no.6 tahun 2001 tentang kerangka kebijakan perkembangan dan pendayagunaan telematika di Indonesia didapat pengertian telematika sebagai berikut : “……. Telekomunikasi, media dan informatika atau disingkat sebagai teknologi telematika…”. (http://www.indonesia.go.id/id/produk_uu/isi/inpres2001/ip%206-2001%20lamp.html).
Alfin Toffler berpendapat bahwa teknologi telekomunikasi dan informatika, kini populer dengan nama telematika (Yuliar,2007). Menurut Yusuf Hadi Miarso (2007) telematika merupakan sinergi teknologi telekomunikasi dan informatika untuk keperluan pemrosesan data dengan sistem binary (digital). Telekomunikasi adalah sistem hubungan jarak jauh yang terjalin melalui saluran kabel dan nirkabel (gelombang suara, elektromagnetik, dan cahaya). Sedangkan informatika adalah pengelolaan data yang bermakna dengan sistem binary (digital). Istilah Teknologi dan Komunikasi (ICT =Information and Communication Technology) yang lebih dikenal sekarang ini bermaksud memperluas pengertian telematika.
Jadi, dapat disimpulkan bahwa Telematika merupakan konvergensi antara teknologi Telekomunikasi , Media dan Informatika yang digunakan untuk keperluan pemrosesan data dengan sistem binary / digital.

CONTOH KELEBIHAN TELEMATIKA

  1. Mengoptimalkan proses pembangunan. Telematika memberikan dukungan terhadap manajemen dan pelayanan kepada masyarakat berupa sarana telekomunikasi yang memuahkan masyarakat saling berinteraksi tanpa terhalang jarak. Dengan telematika, proses komunikasi menjadi mudah sehingga mudah pula untuk menyebarkan informasi dari satu daerah ke daerah lain.
  2. Meningkatkan Pendapatan. Produk dan jasa teknologi telematika merupakan komoditas yang memberikan peningkatan pendapatan bagi perseorangan, dunia usaha bahkan negara dalam bentuk devisa hasil ekspor jasa dan produk industri telematika.
  3. Pemersatu bangsa. Teknologi telematika mampu menyatukan bangsa melalui pengembangan sistem informasi yang menghubungkan semua institusi dan area dengan cepat tanpa terhalang jarak daerah masing-masing.

CONTOH KEKURANGAN TELEMATIKA

  1. Adanya cyber crime yaitu kejahatan yang dilakukan dengan menggunakan media internet. Misalnya kloning data kartu kredit milik orang lain. Penipuan dengan cara spam email, dll.
  2. Penyadapan telekomunikasi terhadap presiden SBY yang sempat booming beberapa waktu lalu.
  3. Bagi anak-anak, internet telah memberikan media yang mudah bagi mereka untuk mendapatkan akses pornografi dan ini dapat menyebabkan mereka menjadi matang karbitan. Selain masalah pornografi, fenomena yang terjadi saat ini adalah kecanduan akan game online. Banyak orang tua yang resah akan hal ini.

SARAN
Pemerintah Indonesia, khususnya KOMINFO harus lebih memperhatikan masalah perkembangan telematika di Indonesia. Kita bisa lihat, bagaimana kondisi saat ini. Negara kita jauh dibawah dibandingkan negara tetangga seperti Malaysia dan Singapore. Ini dikarenakan kurang tanggapnya pemerintah kita terhadap perkembangan telematika. Misalnya saja, kecepatan internet saat ini saya rasa masih kalah jauh ketimbang negara-negara lain. Kemudian masalah sekuritas, masih banyak beredar situs-situs porno yang bisa diakses kapan saja, dimana saja dan oleh siapa saja.

Membuat Background Datagridview seperti Row

Hallo, sudah lama saya tidak muncul di dunia blog. Pada kesempatan kali ini saya mau berbagi tips bahasa pemrograman C#, point-nya pada Datagridview. Pada umumnya tampilan datagridview pada saat terisi data dari database yang jumlah record-nya kurang dari tinggi datagridview ,maka akan terlihat ‘bolong’ di bawahnya. Untuk lebih jelasnya lihat gambar di bawah ini :

DataGridView_sebelum

DataGridView_sebelum

Bisa kita lihat gambar di atas terlihat kosong di bagian bawah, hal itu membuat datagridview kurang menarik.  Jika masalah diatas merupakan masalah anda, maka saya punya solusinya, berikut kodenya:

private void newDataGridView1_Paint(object sender, PaintEventArgs e)
{
 List<int> displayedIndex = new List<int>();
 for (int i = 0; i < ((DataSet)newDataGridview1.DataSource).Tables[0].Columns.Count; i++)
 {
    if (newDataGridView1.Columns[i].Visible == true)
    {
      displayedIndex.Add(i);
    }
 }

 int fIndex = displayedIndex[0];//mengetahui index dari visible column
 Rectangle rc = new Rectangle(newDataGridView1.GetCellDisplayRectangle(fIndex, newDataGridView1.Rows.Count - 1, true).X, newDataGridView1.GetCellDisplayRectangle(3, newDataGridView1.Rows.Count - 1, true).Y + 22, newDataGridView1.Width, (newDataGridView1.Height - (newDataGridView1.Rows.Count * 22)));

 #region "editable"
 rc.Inflate(1, 1);
 rc.Width = rc.Width - 4;
 #endregion

 e.Graphics.FillRectangle(new SolidBrush(newDataGridView1.DefaultCellStyle.BackColor), rc);
 Pen pen = new Pen(Color.FromArgb(208, 215, 229), 0.2f);
 int jmlKurang = (newDataGridView1.Height + newDataGridView1.ColumnHeadersHeight - (newDataGridView1.Rows.Count * newDataGridView1.Rows[0].Height)) / 22;
 for (int j = 0; j < jmlKurang; j++)
 {
   switch (newDataGridView1.AdvancedCellBorderStyle.Bottom)
   {
    case DataGridViewAdvancedCellBorderStyle.None:
    break;
    case DataGridViewAdvancedCellBorderStyle.Single:
    e.Graphics.DrawLine(pen, rc.X, rc.Y, rc.X + rc.Width - 1, rc.Y);
      for (int a = 0; a < displayedIndex.Count -1; a++)
      {
        float vLX = newDataGridView1.GetCellDisplayRectangle(displayedIndex[a] + 1, newDataGridView1.Rows.Count - 1, true).X;
        e.Graphics.DrawLine(pen, vLX, rc.Y, vLX, rc.Y + 22);
      }    
    break;
    case DataGridViewAdvancedCellBorderStyle.Inset:
    case DataGridViewAdvancedCellBorderStyle.InsetDouble:
    case DataGridViewAdvancedCellBorderStyle.Outset:
    case DataGridViewAdvancedCellBorderStyle.OutsetDouble:
    case DataGridViewAdvancedCellBorderStyle.OutsetPartial:
    break;
   }
 rc.Y += 22;
 }
}

Script diatas diletakkan pada event Paint dari ‘newDatagridView1’. Copy Paste aja script diatas. Mungkin kode diatas kurang sempurna bagi anda2 yang sudah profesional, untuk itu andalah yang menyempurnakan, hehehehe :D. Untuk script block “editable”, anda bisa mengedit ukuran dari rectangle, tergantung dari style datagridview anda. Kemudian pada baris kode “DataGridViewAdvancedCellBorderStyle”,  saya hanya membuat dengan style Single. Untuk style lainnya sekali lagi anda yang menyempurnakan :D.  Oh ya, kode diatas terdapat angka 22. Angka tersebut merupakan tinggi default dari sebuah row, anda bisa mengubah sesuai tinggi dari row anda. Perlu di ingat, set ‘False’ untuk property AllowUserToResizeRows, agar tinggi row tidak berubah-ubah. Untuk kode diatas tampilan akan seperti berikut:

DataGridView_sesudah

DataGridView_sesudah

Gimana? Lumayan kan buat bagusin tampilan. Oke, sekian dari saya dan terima kasih :D. Moga bermanfaat.

Group By Data di C# dengan LINQ

Saya masih berbicara tentang bahasa pemrograman C#. Di SQL-Server kita tahu kalau tidak ada pengelompokan data berdasarkan field tertentu atau bisa disebut dengan “GROUP BY” dalam MySQL. Untuk itu ada tips khusus untuk modifikasi script bagi anda dengan menggunakan LINQ.
Karena Linq merupakan Class bawaan dari .NET, yang memungkinkan anda untuk mengelola data secara langsung. Berikut ini adalah contoh kode, kita asumsikan kita menggunakan tabel ‘pegawai_tabel’ yang di group dengan field ‘kota_asal’

var query = from row in pegawai_tabel
 group row by row.Field<string>("kota_asal");

Dari kode diatas bisa diartikan bahwa var query  menjadi enum dari baris(row) tabel yang sudah di kelompokkan (IQueryable <IGrouping <string, pegawai_tabel>>). Setiap item pencacahan ini akan men-define sebuah group (IGrouping <string, pegawai_tabel>). Untuk tabel dan field yang saya gunakan adalah ‘pegawai_tabel’ yang dikelompokkan berdasarkan ‘kota_asal’. Anda bisa mengganti sesuai tabel dan field yang anda inginkan tentunya sesuai dengan database anda.

Seperti yang bisa kita lihat dalam kode diatas, IGrouping hanya menambahkan beberapa hal:

– key, merupakan kunci dari group(“kota_asal” dalam contoh yg saya buat).
– item yang dikelompokkan oleh key. Untuk mengambil item ini, anda harus menelusuri kelompok yang merupakan pencacahan dari group itu sendiri dengan menggunakan metode perulangan seperti contoh di bawah ini:

foreach (var a in query)
{
    var peg = a.Key; //merupakan key dari group 
    foreach (var pg in a)
        System.Console.WriteLine(pg.kota_asal);
}

Kode diatas akan menampilkan kota_asal dari pegawai2 yang sudah di group berdasarkan kota_asal.
Sekian dari saya, moga2 bermanfaat.
Ingat : Group By beda dengan Order By !

Raw Printer di C#

Bagi anda yang mengerjakan aplikasi atau program yang berhubungan dengan kasir penjualan pasti akan mendapatkan kasus “Bagaimana cara mencetak struk”. Disini anda mungkin menggunakan layanan print dari  Crystal Report dan Report Viewer bawaan dari Windows.

Salah satu kelemahan dari layanan ini adalah file akan tercetak sebagai graphic/gambar bukan sebagai dot per inch. Jadi apabila program yang Anda kerjakan harus mencetak struk dengan jumlah baris-baris data yang dicetak tidak dapat diprediksi jumlahnya dan ukuran kertas bertipe ROLL, maka menggunakan layanan dari Crystal Report dan Report Viewer ini bukan suatu solusi yang tepat. Belum lagi masalah jenis printer, bila kita mencetak graphic untuk struk di printer jenis Dot Matrix, proses cetak akan memakan waktu yang cukup lama.

Kita akan mencoba untuk membuat program dengan mencetak ke printer tipe Dot Matrix dengan cara di bawah ini :

1. Buat Class tersendiri untuk mengirim RAW data ke Printer Dot Matrix

    using System;
    using System.Runtime.InteropServices;
    using System.IO;
    public class RawPrinterHelper
    {
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public class DOCINFOA
        {
            [MarshalAs(UnmanagedType.LPStr)]
            public string pDocName;
            [MarshalAs(UnmanagedType.LPStr)]
            public string pOutputFile;
            [MarshalAs(UnmanagedType.LPStr)]
            public string pDataType;
        }

        [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);

        [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool ClosePrinter(IntPtr hPrinter);

        [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);

        [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool EndDocPrinter(IntPtr hPrinter);

        [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool StartPagePrinter(IntPtr hPrinter);

        [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool EndPagePrinter(IntPtr hPrinter);

        [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);
       public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount)
        {
            Int32 dwError = 0, dwWritten = 0;
            IntPtr hPrinter = new IntPtr(0);
            DOCINFOA di = new DOCINFOA();
            bool bSuccess = false; // Asumsikan proses printer gagal

            di.pDocName = "My C#.NET RAW Document";
            di.pDataType = "RAW";

            //Buka printer.
            if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero))
            {
               //Memulai dokumen printer
                if (StartDocPrinter(hPrinter, 1, di))
                {
                    // Memulai halaman dokumen.
                    if (StartPagePrinter(hPrinter))
                    {
                        // Meng-convert string dalam bentuk Byte
                        bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
                        EndPagePrinter(hPrinter);
                    }
                    EndDocPrinter(hPrinter);
                }
                ClosePrinter(hPrinter);
            }
            // Jika Anda tidak berhasil, GetLastError dapat memberikan informasi lebih lanjut
            if (bSuccess == false)
            {
                dwError = Marshal.GetLastWin32Error();
            }
            return bSuccess;
        }

        public static bool SendStringToPrinter(string szPrinterName, string szString)
        {
            IntPtr pBytes;
            Int32 dwCount;
            //Berakarakter di dalam string?
            dwCount = szString.Length;
            //Ubah ke tipe text ANSI
            pBytes = Marshal.StringToCoTaskMemAnsi(szString);
            // Kirim text ANSI ke Printer
            SendBytesToPrinter(szPrinterName, pBytes, dwCount);
            Marshal.FreeCoTaskMem(pBytes);
            return true;
        }

        //Untuk  cetak file (*.txt) ke printer
       public static bool SendFileToPrinter(string szPrinterName, string szFileName)
        {
            // Buka File
            FileStream fs = new FileStream(szFileName, FileMode.Open);
            // Buat BinaryReader di file.
            BinaryReader br = new BinaryReader(fs);
            // dekalarasikan array untuk menampung isi file.
            Byte[] bytes = new Byte[fs.Length];
            bool bSuccess = false;
            IntPtr pUnmanagedBytes = new IntPtr(0);
            int nLength;

            nLength = Convert.ToInt32(fs.Length);
            // Membaca isi file ke dalam Array.
            bytes = br.ReadBytes(nLength);
            // Mengalokasikan beberapa memori ke bytes tersebut
            pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength);
            // Copy array byte yang sudah di proses ke pUnmanagedBytes
            Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength);
            // Kirim bytes ke printer.
            bSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength);
            // Hapus semua memory yang sudah di pakai.
            Marshal.FreeCoTaskMem(pUnmanagedBytes);
            return bSuccess;
        }
    }

2. Cara Menggunakan Fungsi2 di atas

*Mengirim String langsung ke printer
    private void btnPrint_Click(object sender, EventArgs e)
    {
       string s = "Hello\n";
       s += "World";
       PrintDialog printDialog1 = new PrintDialog();
       if (DialogResult.OK == printDialog1.ShowDialog(this))
       {
          RawPrinterHelper.SendStringToPrinter(printDialog1.PrinterSettings.PrinterName, s);
       }
    }

 *Mengirim file ke printer
    private void btnPrint_Click(object sender, EventArgs e)
    {
       PrintDialog printDialog1 = new PrintDialog();
       if (DialogResult.OK == printDialog1.ShowDialog(this))
       {
          RawPrinterHelper.SendFileToPrinter(printDialog1.PrinterSettings.PrinterName, "c:\\Test.txt");
       }
    }

semoga bermanfaat bagi yang membutuhkan 😉

public class RawPrinterHelper
{
// Structure and API declarions:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class DOCINFOA
{
[MarshalAs(UnmanagedType.LPStr)]
public string pDocName;
[MarshalAs(UnmanagedType.LPStr)]
public string pOutputFile;
[MarshalAs(UnmanagedType.LPStr)]
public string pDataType;

[DllImport(“winspool.Drv”, EntryPoint = “OpenPrinterA”, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);

[DllImport(“winspool.Drv”, EntryPoint = “ClosePrinter”, SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool ClosePrinter(IntPtr hPrinter);

[DllImport(“winspool.Drv”, EntryPoint = “StartDocPrinterA”, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);

[DllImport(“winspool.Drv”, EntryPoint = “EndDocPrinter”, SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool EndDocPrinter(IntPtr hPrinter);

[DllImport(“winspool.Drv”, EntryPoint = “StartPagePrinter”, SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool StartPagePrinter(IntPtr hPrinter);

[DllImport(“winspool.Drv”, EntryPoint = “EndPagePrinter”, SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool EndPagePrinter(IntPtr hPrinter);

[DllImport(“winspool.Drv”, EntryPoint = “WritePrinter”, SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);