Serial
 port merupakan sebuah port yang terdapat pada komputer/laptop yang 
dapat digunakan sebagai jalur komunikasi antara komputer/laptop dengan 
hardware lainnya seperti mikrokontroller dan lain sebagainya.
pada
 postingan kali ini, saya akan coba berbagi tentang program sederhana 
yang dapat menerima dan mengirim data melalui komunikasi serial.
untuk
 dapat melakukan komunikasi serial, dibutuhkan sebuah library yaitu RxTx
 yang mana telah saya bahas mengenai cara instalasinya disini dan cara menambahkan pada project yang kita buat seperti postingan yang ada disini.
Secara umum, komunikasi yang menggunakan serial port pasti akan melalui langkah-langkah berikut ini :
- Pencarian port serial
 - Koneksi ke port serial
 - inisialisasi input dan output stream
 - Memutuskan koneksi port serial
 - Kirim data
 - Terima data
 
sekarang akan coba dibahas sedikit mengenai program pada aplikasi kirim dan terima data serial ini.
1. Pencarian port serial
berikut ini program untuk mencari port serial yang sedang aktif pada komputer/laptop
public void
cekSerialPort() {
        port =
CommPortIdentifier.getPortIdentifiers();
        while (port.hasMoreElements()) {
            CommPortIdentifier curPort =
(CommPortIdentifier) port.nextElement();
            if (curPort.getPortType() ==
CommPortIdentifier.PORT_SERIAL) {
               
window.jCommPort.addItem(curPort.getName());
                portMap.put(curPort.getName(),
curPort);
            }
        }
    }
 
pada
 program diatas, program akan mengecek setiap port yang aktif pada 
komputer, yang kemudian port-port tersebut akan dicek tipe nya dengan 
menggunakan .getPortType(). Jika port tersebut merupakan port 
serial, maka identitas port tersebut akan didaftarkan atau ditambahkan 
pada comboBox pada tampilan GUI.
2. Koneksi Port Serial
public void
connect() {
        String selectedPort = (String)
window.jCommPort.getSelectedItem();
        portIdentifier = (CommPortIdentifier)
portMap.get(selectedPort);
        CommPort commPort = null;
        try {
            commPort =
portIdentifier.open(null, TIMEOUT);
            serialPort = (SerialPort) commPort;
            setConnected(true);
           
window.bConn.setText("Disconnect");
        } catch (PortInUseException e) {
            statusPort = selectedPort + "
is in use. (" + e.toString() + ")";
            JOptionPane.showMessageDialog(null,
statusPort);
        } catch (Exception e) {
            statusPort = "Failed to open
" + selectedPort + "(" + e.toString() + ")";
            JOptionPane.showMessageDialog(null,
statusPort);
        }
    }
 
Program
 diatas digunakan untuk membuka koneksi dengan serial port yang 
sebelumnya telah ditentukan dengan cara memilih salah satu serial port 
yang tersedia pada comboBox. perintah yang digunakan untuk membuka 
koneksi adalah .open()
3.  Inisialisasi  input/output stream
public boolean
initIOStream() {
        boolean successful = false;
        try {
            inPut =
serialPort.getInputStream();
            outPut =
serialPort.getOutputStream();
            successful = true;
            return successful;
        } catch (IOException e) {
            statusPort = "I/O Streams
failed to open. (" + e.toString() + ")";
            JOptionPane.showMessageDialog(null,
statusPort);
            return successful;
        }
}
program
 ini akan menginisialisasi input/output stream yang nantinya digunakan 
untuk menampung data yang masuk ataupun data yang akan dikirim kan dari 
aplikasi menuju perangkat lainnya.
4. Memutuskan koneksi serial
public void
disconnect() {
         try {
            serialPort.removeEventListener();
            serialPort.close();
            inPut.close();
            setConnected(false);
            statusPort = "PORT disconnect
successfully";            
            JOptionPane.showMessageDialog(null,
statusPort);
           
window.bConn.setText("Connect");
        } catch (Exception e) {
            statusPort = "Failed to close
" + serialPort.getName() + "(" + e.toString() + ")";
            JOptionPane.showMessageDialog(null,
statusPort);
        }
    }
 
Program
 tersebut akan memutuskan koneksi antara port serial dengan aplikasi. 
pada saat memutuskan koneksi serial port harus di tutup dengan 
menggunakan perintah .close(), begitu juga dengan input/output stream nya.
5. Kirim Data Serial
public void
kirimData(Byte a){
        try {
            outPut.write(a);
            outPut.write(10);
            outPut.flush();
        } catch (IOException ex) {
            System.out.println("Kirim
Gagal");
        }
    }
 
Program diatas akan mengirimkan data serial. tipe data yang bisa dikirimkan berupa "Byte" dan "Integer". pengiriman dilaksanakan saat ada perintah .write(a), kemudian .flush() digunakan untuk mengosongkan kembali outputstream.
6. Terima Data Serial
untuk
 dapat menerima data serial setiap saat, maka dimanfaatkan event yang 
khusus menangani data serial yang masuk. berikut merupakan program untuk
 inisialisasi event beserta program event yang menangani data serial 
yang masuk ke aplikasi.
public void
initListener() {
        try {
            serialPort.addEventListener(this);
           
serialPort.notifyOnDataAvailable(true);
        } catch (TooManyListenersException e) {
            JOptionPane.showMessageDialog(null,
e.toString());
        }
    }
    public void serialEvent(SerialPortEvent
evt) {
        char dataSerial = 0; // Untuk menampung
input dari serial port 
        if (evt.getEventType() ==
SerialPortEvent.DATA_AVAILABLE) {
            try {
                dataSerial = (char)
inPut.read();
               
window.txtDataIn.setText(String.valueOf(dataSerial));               
            } catch (IOException ex) {
               
JOptionPane.showMessageDialog(null, ex.toString());
            }
        }
    }
 
 
contoh tampilan aplikasi yang saya buat :
saat aplikasi dijalankan maka tampilan awal aplikasi adalah sebagai berikut :
setelah tulisan "Search Port" ditekan maka tampilan akan berubah sebagai berikut :
untuk
 mengkoneksikan aplikasi dengan serial port, arahkan kursor ke tombol 
"connect" kemudian klik tombol tersebut. setelah itu jika berhasil 
terkoneksi maka tampilan aplikasi akan sebagai berikut :
Jika koneksi gagal, maka akan muncul messageBox yang menjelaskan penyebab gagalnya koneksi.
untuk memutuskan koneksi tekan saja tombol "Disconnect".
Saat
 aplikasi telah terkoneksi dengan serial port, maka aplikasi dalam 
posisi stand by menerima data serial yang mana setiap data yang diterima
 akan ditampilkan pada textBox. untuk mengirim data, tekan saja tombol 
kirim data. pada aplikasi ini jika tombol kirim data ditekan, maka 
aplikasi akan mengirimkan data "a".
Aplikasi lengkapnya dapat anda download disini.
Semoga bermanfaat..... :)




0 komentar:
Posting Komentar