communicationAkhirnya, ada kesempatan untuk posting lagi setelah beberapa lama ga posting karena lagi ada kerjaan +  sibuk ngerjain tugas kuliah + malas yang bercampur menjadi 1. 😀

Postingan kali ini sebenernya untuk menjawab beberapa pertanyaan yang ada di postingan saya sebelumnya tentang Program kirim dan terima data via serial port di JAVA.

Nah, pada postingan ini ada beberapa penambahan pada source/program java untuk kirim dan terima data serial, yang mana nantinya aplikasi akan dikoneksikan ke hardware. Disini saya menggunakan arduino uno sebagai hardwarenya.

Pertama, akan saya paparkan dulu beberapa penambahan pada program JAVA untuk kirim dan Terima data serial.

Secara umum, dari segi tampilan tidak banyak berubah hanya saja saya tambahkan 1 textBox yang mana nantinya data pada textBox tersebut akan dikirimkan ke hardware/arduino. Selain itu saya tambahkan juga 2 buah jLabel yang saya gunakan untuk menandai mana textBox untuk menampilkan data yang diterima melalui serial port dan data yang akan dikirimkan.

Untuk tampilan aplikasi, silahkan susun sesuai dengan keinginan, berikut ini merupakan tampilan yang saya buat. Rada kacau + berantakan tapi alhamdulillah berfungsi dengan baik.

 java arduino serial port 1

Dari segi source/program ada beberapa penambahan, yaitu diantaranya sebagai berikut :

1.  Program tampilan (program saat tombol “Kirim Data” ditekan)

private void btnKirimActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//Serial.kirimData((byte)'a');
Serial.kirimData(txtDataOut.getText());
}

Program diatas berfungsi untuk mengirimkan data yang ada pada txtDataOut melalui serial port.

2.  Program untuk kirim data

             Pada class SerialPort, khususnya untuk kirim data, saya tambahkan 1 fungsi lagi untuk menampung data string sebelum dikirimkan. Berikut ini adalah programnya.

public void sendChar(Byte a){
try {
outPut.write(a);
outPut.flush();
}
catch (IOException ex) {
//System.out.println("Kirim Gagal");
}
}

public void kirimData(String str){
for(int i=0; i<str.length();i++){
sendChar((byte)str.charAt(i));
}
try{
outPut.write(10);
outPut.flush();
}
catch(IOException ex){}
}

2.  Program untuk terima data

       Pada program terima datanya, ada penambahan pada saat event terima data serial. Pada program sebelumnya, data akan diterima per karakter kemudian akan ditampilkan perkarakter pula. Sehingga, jika pada saat kita menerima sebuah data string, yang ditampilkan adalah karakter terakhir dari string tersebut. Jika karakter terakhir dari data yang kita kirimkan adalah berupa enter(new line) sehingga seolah-olah pada txtDataIn tidak menampilkan karakter yang diterima.

pada program yang baru, ada beberapa baris program yang saya tambahkan untuk menampung data yang masuk. Untuk menampilkan data string, maka data yang masuk perkarakter tersebut saya tampung dulu, nah penanda untuk menampilkan data tersebut adalah data enter(new line). Jadi, setiap data yang dikirimkan dari hardware ke aplikasi harus diakhiri dengan new line.

Berikut ini program terima datanya :

public void serialEvent(SerialPortEvent evt) {
if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
if(dataSerial != '\n'){
dataSerial = (char) inPut.read();
dataIn = dataIn + String.valueOf(dataSerial);
System.out.print(dataIn);
System.out.print("\t");
System.out.print(dataSerial);
System.out.print("\n");
}
else{
window.txtDataIn.setText(dataIn);
dataSerial=' ';
dataIn="";
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.toString());
}
}
}

        Data yang masuk adalah data per karakter, kemudian saya tampung dahulu kedalam sebuah variabel bertype string yang saya beri nama dataIn. Kemudian setelah mendapat karakter new line, data yang ada pada variabel dataIn ditampilkan ke txtDataIn.

Setelah menambahkan beberapa program pada aplikasi, saya kemudian membuat sedikit program untuk menerima dan mengirim data pada arduino, yang mana program pada arduino ini saya ambil dari contoh SerialEvent. Berikut ini adalah program untuk hardware yang telah saya buat.

arduino Java

Pada program diatas, data yang masuk ditampung dahulu pada variabel inputString. Kemudian, sama seperti pada aplikasi setelah menerima data karakter new line data pada variabel inputString tadi akan dikirim balik ke aplikasi. Terjadi kesamaan saat mengolah data yang diterima antara aplikasi dan hardware, hal ini disebabkan karena library yang saya gunakan pada aplikasi sama dengan library yang digunakan pada IDE arduino.

berikut screenshot saat aplikasi dijalankan

java arduino serial port 2

java arduino serial port 3

Program aplikasi Java dan arduino diatas dapat didownload disini (aplikasi) dan disini (hardware/arduino).

Semoga bermanfaat. 🙂

Advertisements
Comments
  1. adi says:

    mas klu menggunakan program C# gmna ya maz??

  2. Ahsanun says:

    Saya sudah coba aplikasi…tidak ada error…tapi kok tidak bekerja ya pda alatku (mikrokontroler) jadi alaku tidak menerima pesan yang dikirim kesini…saya pakai vb berhasil ngirim….

    • rifqithokz says:

      maaf sebelumnya mas,
      bisa kelihatan berhasil ngirim, mas nya cek darimana?
      apakah setelah nerima data dari aplikasi langsung dikirim lagi ke komputer via serial juga?

  3. Ahsanun says:

    minta bantuanya ya gan….

  4. Subki says:

    Pak, saya lagi proses Tugas Akhir di kampus, kebetulan pake Java dan arduino (Absensi), saya mw tanya, gimana cara mengirim data atau perintah dari java agar arduino tsb menyalakan Lampu LED.
    Ilustrasi nya, jika siswa melakukan absensi, java akan mngecek jadwal, jika telat lampu LED Merah menyala, kalo ga telat lampu LED Hijau Menyala.
    Mohon Bantuannya mas. Terima Kasih (Kabari saya tajudinsubki@gmail.com / 08988871905)

  5. taufiksanjaya says:

    mas tanya. apakah programming nya menggunakan net bean?

  6. rahmat_aditya says:

    datanya nggak terkirim tuhh mass…saya udah coba gk berhasil

    • rifqithokz says:

      mungkin ada beberapa yang belum sesuai mas,
      programnya sama persis dengan yg ada diblog saya?

Terimakasih telah singgah di blog ini. Silahkan berikan komentar, saya membutuhkan kritik, saran serta masukan yang membangun guna perbaikan tulisan pada blog ini kedepannya.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s