Pages - Menu

26 Juni, 2013

Read And Write in Serial Port Using Java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Daniar
 */

import java.io.*;
import java.util.*;
import javax.comm.*;
                                                                                                                                                                                                                                                                                                                                                                                                                                                 





public class SimpleRead implements Runnable, SerialPortEventListener {
////map the port names to CommPortIdentifiers
//this is the object that contains the opened port
    static CommPortIdentifier portId;
////for containing the ports that will be found
    static Enumeration portList;
//input for sending and receiving data
    static InputStream inputStream;
    static OutputStream outputStream;
    static SerialPort serialPort;
    static String messageString = "Hello, world!\n";
    Thread readThread;

 
    public static void main(String[]args) {
////just a boolean flag that i use for enabling
    //and disabling buttons depending on whether the program
    //is connected to a serial port or not
        boolean portFound = false;
        String defaultPort = "COM1";

  if (args.length > 0) {
   defaultPort = args[0];
}
 
portList = CommPortIdentifier.getPortIdentifiers();//mengambil port

while (portList.hasMoreElements()) {
   portId = (CommPortIdentifier) portList.nextElement();
   if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {//identifikasi serial port atau tidak
if (portId.getName().equals(defaultPort)) {
   System.out.println("Found port: "+defaultPort);
   portFound = true;
   SimpleRead reader = new SimpleRead();
                    try {
                        serialPort = (SerialPort)portId.open("SimpleWriteApp", 2000);
                    } catch (PortInUseException e){}
                    try {
                        outputStream = serialPort.getOutputStream();
                    } catch (IOException e) {}
                    try {
                            serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
                    } catch (UnsupportedCommOperationException e) {}
                    try {
                        outputStream.write(messageString.getBytes());
                    } catch (IOException e) {}
                }
            }
        }
if (!portFound) {
   System.out.println("port " + defaultPort + " not found.");
}
 
    }

 
    public SimpleRead() {
try {
//objek serial port bs melemparkan ke portId
serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);//time out 2000
} catch (PortInUseException e) {}

try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}

try {
//memantau event yg terjadi pada serial port
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}

serialPort.notifyOnDataAvailable(true);//menerima pemberitahuan bila input data tersedia.biasa untuk asinkronus input

try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);//9600=kec aliran data per sec.set serial port parameter
} catch (UnsupportedCommOperationException e) {}

readThread = new Thread(this);

readThread.start();
    }

 
    public void run() {
try {
   Thread.sleep(20000);//sleep selama 20 detik
} catch (InterruptedException e) {}
    }


    public void serialEvent(SerialPortEvent event) {//data diterima
switch (event.getEventType()) {

case SerialPortEvent.BI:

case SerialPortEvent.OE:

case SerialPortEvent.FE:

case SerialPortEvent.PE:

case SerialPortEvent.CD:

case SerialPortEvent.CTS:

case SerialPortEvent.DSR:

case SerialPortEvent.RI:

case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
   break;

case SerialPortEvent.DATA_AVAILABLE:
   byte[] readBuffer = new byte[20];

   try {
while (inputStream.available() > 0)
{
   int numBytes = inputStream.read(readBuffer);
   System.out.print("The Read Bytes from SerialPort are");
   System.out.write(readBuffer);
   System.out.println();
}

System.out.print(new String(readBuffer));
   } catch (IOException e) {}

   break;
}
    }

}

12 Juni, 2013

Kahaani

         Kahaani bercerita tentang seorang wanita yang awal mulanya menyamar sebagai warga London berketurunan India. Dia tinggal di London bersama suaminya yang sama-sama seorang programmer. Tetapi setelah dua tahun pernikahan, suaminya menghilang begitu saja. Terakhir mereka saling berkomunikasi yaitu saat sang suami dinas ke Kalkota. Vidya melaporkan kehilangannya ke polisi Kalkota untuk membantu menemukan suaminya. dan setelah di telusuri, suami Vidya mirip dengan tersangka pembunuhan satu gerbong kereta menggunakan gas beracun. Lalu, apakah suami Vidya dapat ditemukan? sedangkan Vidya tidak tahu apa-apa tentang asal usul suaminya.

Sinopsis Film : Monsieur Lazhar

          Film ini bercerita tentang seorang guru bernama Lazhar Bachir yang merupakan guru pengganti di sebuah kelas SD karena guru yang lama gantung diri. Mungkin konflik di dalam  film ini tidak terlalu besar, tapi di dalam film ini lebih menitikberatkan perasaan anak-anak yang ditinggalkan oleh gurunya secara mengenaskan bahkan ada dua anak (Alice dan Simon) yang melihat dengan mata sendiri aksi gantung diri gurunya tersebut. Bazhar hanyalah seorang pengungsi dari Algeria yang berbohong kepada Kepala Sekolah. Dia mengaku sudah menjalani profesi sebagai pengajar selama lebih dari sepuluh tahun, padahal sebenrnya dia hanya pemilik restoran dan dia bukan warga tetap. Pada akhir cerita, kepala sekolah mengetahui rahasia Lazhar ini dan segera memecatnya dan tidak boleh mengajar hari itu juga. Tapi Lazhar bersikeras untuk tetap mengajar dan setidaknya say goodbye kepada muridnya karena gurunya yang lama (Martine) meninggalkan murid-murid begitu saja tanpa berpamitan dan Lazhar tidak ingin hal itu terulang kembali.

         Yang membuat saya mengagumi film ini adalah Lazhar yang mempunyai cara kuno dalam mengajar, dan anak-anak yang bisa menuangkan gagasan mereka masing-masing terhadap kejadian gantung diri tersebut. Mereka sepertinya sudah sangat dewasa dalam menyikapi kejadian tersebut. Dan kalau aku jadi salah satu dari mereka, mungkin aku akan trauma berkepanjangan. Namun, mereka tidak.



       

08 Juni, 2013

Something Funny In The Event

     Sekolah Mentor merupakan acara yang diselenggarakan oleh Badan Mentoring IT Telkom dalam perekrutan mentor-mentor baru untuk mata kuliah Agama Islam. Acara ini berbeda dari tahun sebelumnnya yang hanya acara-acara kecil. Perekrutan pun dilakukan secara besar-besaran dengan baliho yang gede dan dari media sosial. Salah satu acaranyanya yaitu motivasi diri. Ngakak sendiri liat tampilan di layar. hahaha

Bener banget sih tulisan digambar itu. Bikin ortu susah kalo minta uang terus.Harusnya kita mandiri dalam keuangan walaupun cuma sedikit. 

Membuat Kreasi Kursi Goyang Menggunakan OpenGL

Komputer Grafis adalah cabang dari Ilmu Komputer dan berkaitan dengan manipulasi visual content dan proses sistesisnya secara digital. Walaupun istilah ini sering mengacu kepada komputer grafik 3 dimensi, tetapi sebenarnya juga mencakup grafik 2 dimensi dan pengolahan citra.
Grafik meliputi gambar dan pencitraan lain yang dihasilkan oleh komputer berbentuk garis, lengkungan, kurva dan sebagainya. Komputer dapat menghasilkan pencitraan dalam sejumlah pixel, dan printer dot matrix akan mencetak citra/gambar tersebut dalam sejumlah titik.
Perkembangan grafika komputer menuntut para pengembang sistem aplikasi grafika komputer untuk dapat mengembangkan suatu informasi yang dilengkapi dengan visualisasi dan animasi, agar dapat lebih mudah dipahami oleh pihak yang menggunakan sistem tersebut. Grafika komputer telah menunjukkan kemajuan yang pesat dalam pengembangan berbagai aplikasi untuk menghasilkan gambar.
Grafika komputer digunakan untuk menunjang berbagai bidang dengan teknologi grafika berbasis komputer. Penggunaan grafika komputer telah lama digunakan dalam beberapa macam aplikasi, diantaranya pendidikan, kedokteran, fisika, matematika, multimedia, dan lain-lain. Pada saat ini grafika komputer sudah digunakan pada bidang sains, engineering, kedokteran, bisnis, industri, pemerintahan, seni, hiburan, iklan, pendidikan, dan lain-lain. Oleh karena itu, sudah semakin banyak pula bahasa pemrograman yang dilengkapi dengan tools/library pembuatan grafik Salah satu tools/library pembuatan aplikasi grafik adalah OpenGL (Open Graphics Library). OpenGL (Open Graphics Library) adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL digunakan untuk mendefinisikan suatu objek, baik objek 2 dimensi maupun objek 3 dimensi.
OpenGL juga merupakan suatu antarmuka pemrograman aplikasi (applicationprogramming interface (API) yang tidak tergantung pada piranti dan platform yangdigunakan, sehingga OpenGL dapat berjalan pada sistem operasi Windows, UNIX dansistem operasi lainnya. OpenGL pada awalnya didesain untuk digunakan pada bahasapemrograman C/C++, namun dalam perkembangannya OpenGL dapat juga digunakandalam bahasa pemrograman yang lain seperti Java, Tcl, Ada, Visual Basic, Delphi,maupun Fortran. Namun OpenGL di-package secara berbeda-beda sesuai dengan bahasapemrograman yang digunakan.
Grafika komputer pada dasarnya adalah suatu bidang ilmu komputer yang mempelajaricara-cara untuk meningkatkan dan memudahkan komunikasi antara manusia denganmesin (komputer) dengan jalan membangkitkan, menyimpan, dan memanipulasi gambar model suatu objek menggunakan komputer. Grafika komputer memungkinkan kita untuk berkomunikasi lewat gambar-gambar, bagan-bagan, dan diagram-diagram. Grafikakomputer dikembangkan melalui suatu sistem operasi yang berbasis GUI (Graphical UserInterface). Graphical User Interface (GUI), dalam hubungannya dengan sains komputer,adalah suatu antarmuka berbentuk tampilan yang memungkinkan seorang user untuk memilih perintah, menjalankan program, melihat serangkaian file dan memilih opsi laindengan menunjukkan representasi gambar (icon) ataupun melalui sejumlah menu padalayar komputer. Beberapa kemajuan utama dalam computer grafik 3D:
1.        Flat shading à suatu teknik shades masing-masing polygon dari suatu objek berdasarkan pada polygon “normal” dan posisi serta intensitas sumber cahaya.
2.        Gouraud shading à ditemukan oleh Henri Gouraud pada tahun 1971 dengan teknik resource-conscious yang digunakan untuk menirukan shade dengan permukaanlembut dan penyisipan warna puncak antarpermukaan polygon.
3.        Texture mapping à suatu teknik untuk menirukan detail permukaan denganpemetaan gambar (tekstur) menjadi polygons.
4.        Phong shading à ditemukan oleh Bui Tuong Phong; suatu teknik shading yanglembut penyisipan yang puncak mendekati normal pencahayaan dari polygoncurved-surface dengan antarpermukaan; model pencahayaan meliputi glossyreflection dengan suatu tingkatan permukaan yang halus.
5.        Bump mapping à ditemukan oleh Jim Blinn, suatu teknik normal-perturbationyang digunakan untuk menirukan permukaan yang tidak rata atau mengerut.
6.        Ray Tracing à suatu metode berdasarkan pada prinsip fisik dari ilmu opticgeometris yang bisa menirukan pantulan berulang dan transparan.

7.        Radiosity à suatu teknik untuk global illumination yang menggunakan teoriperpindahan radiatif untuk menirukan iluminasi secara tidak langsung (yangdicerminkan)


Disini, saya akan memberikan sebuah contoh program berbahasa C menggunakan OpenGL.
Kebutuhan
Keterangan

#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif

#include <stdlib.h>

Include yang digunakan ini adalah yang digunakan untuk MAC OS, yang berbeda dengan OS Windows, sehingga ada beberapa perbedaan pada include seperti yang digunakan di OS Windows.
int x1=0, y1=0, sudut=0, z1=0,z=0;
float x=0.0f, y=0.0f, angle=180;
GLfloat xP = 0.0f;
GLfloat yP = 0.0f;
Parameter-parameter komponen yang digunakan.
static void display(void)
{
    GLdouble eqn[4] = {0.0, -1.0, 0.0, 0.0};
    GLdouble eqn2[4] = {0.0, 0.0, 0.0, 1.0};
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
            glTranslatef(0.0f, 10.0f, 0.0f);
    glRotatef(xP, 1.0f, 0.0f, 0.0f);
            glRotatef(yP, 0.0f, 1.0f, 0.0f);
    glRotatef(x, 1.0f, 0.0f, 0.0f);
            glRotatef(y, 0.0f, 1.0f, 0.0f);
    glColor3d(1,0,0);
//Bagian Bawah
    glClipPlane (GL_CLIP_PLANE0, eqn);
    glEnable (GL_CLIP_PLANE0);
    glClipPlane (GL_CLIP_PLANE1, eqn2);
    glEnable (GL_CLIP_PLANE1);

            glPushMatrix();
        glTranslatef(-50,-150,1);
        glScalef(1,1,1);
        glRotatef(90,0,1,0);
        //glRotated(sudut,x1,y1,z1);
        glutSolidTorus(50,100,50,50);
            glPopMatrix();

            glPushMatrix();
        glTranslatef(50,-150,1);
        glScalef(1,1,1);
        glRotatef(90,0,1,0);
         //glRotated(sudut,x1,y1,z1);
        glutSolidTorus(50,100,50,50);
            glPopMatrix();

        glDisable(GL_CLIP_PLANE0);
        glDisable(GL_CLIP_PLANE1);

………….
    glPopMatrix();
    angle+=1;
            rads = angle*3.14/180;
    x = 2*cos((double) rads);
    glutSwapBuffers();
    glutPostRedisplay();
}
Penggambaran Kursi dimulai dengan void dasar ini.
angle+=0.5;
            rads = angle*3.14/180;
    x = 5*cos((double) rads);
    glutPostRedisplay();
Rumus yang digunakan untuk menggerakkan kursi goyang, di ambil dari referensi gerakan pendulum/bandul di internet
const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 1.0f, 2.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };

Dalam Fungsi Main:
glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);

    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);

    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
Untuk permainan pencahayaan pada objek
void CameraView(unsigned char key, int x, int y){ //arah lihat dr kamera
    if(key == 'a')
        xP-= 5.0f;
    if(key == 'b')
        xP += 5.0f;
    if(key == 'c')
        yP -= 5.0f;
    if(key == 'd')
        yP += 5.0f;
    if(key > 356.0f)
        xP = 0.0f;
    if(key < -1.0f)
        xP = 355.0f;
    if(key > 356.0f)
        yP = 0.0f;
    if(key < -1.0f)
        yP = 355.0f;
}
Untuk melihat dari sisi kamera.dengan menekan tombol, a,b,c ,dan d
void reshape(GLsizei width, GLsizei height) {
   if (height == 0) height = 1;
       GLfloat aspect = (GLfloat)width / (GLfloat)height;
       glViewport(0, 0, width, height);
       glMatrixMode(GL_PROJECTION);
       glLoadIdentity();
       if (width >= height) {
           glOrtho(-200.0 * aspect, 200.0 * aspect, -200.0, 300.0, 900.0, -10000.0);
       }else{
           glOrtho(-300.0, 300.0, -300.0 / aspect, 300.0 / aspect, 1000.0, -10000.0);
       }
}
Menyesuaikan ukuran objek saat ukuran tampilan windows di ubah


Ini dia source code nya.


/*Daniar Dwi Pratiwi
118101093
IK 34 03
Kursi Goyang Futuristik
tekan a,b,c,atau d untuk memutar
*/
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#include <GL/glu.h>
#include<math.h>
#include<iostream>
#endif
#include <stdlib.h>

float x=0.0f, y=0.0f, angle=180;
double rads=0;
GLfloat xP = 0.0f;
GLfloat yP = 0.0f;

void reshape(GLsizei width, GLsizei height) {
   if (height == 0) height = 1;
       GLfloat aspect = (GLfloat)width / (GLfloat)height;
       glViewport(0, 0, width, height);
       glMatrixMode(GL_PROJECTION);
       glLoadIdentity();
       if (width >= height) {
           glOrtho(-200.0 * aspect, 200.0 * aspect, -200.0, 300.0, 900.0, -10000.0);
       }else{
           glOrtho(-300.0, 300.0, -300.0 / aspect, 300.0 / aspect, 1000.0, -10000.0);
       }
}

static void display(void)
{
    GLdouble eqn[4] = {0.0, -1.0, 0.0, 0.0};
    GLdouble eqn2[4] = {0.0, 0.0, 0.0, 1.0};
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
                glTranslatef(0.0f, 10.0f, 0.0f);
    glRotatef(xP, 1.0f, 0.0f, 0.0f);
                glRotatef(yP, 0.0f, 1.0f, 0.0f);
    glRotatef(x, 1.0f, 0.0f, 0.0f);
                glRotatef(y, 0.0f, 1.0f, 0.0f);
    glColor3d(1,0,0);
//Bagian Bawah
    glClipPlane (GL_CLIP_PLANE0, eqn);
    glEnable (GL_CLIP_PLANE0);
    glClipPlane (GL_CLIP_PLANE1, eqn2);
    glEnable (GL_CLIP_PLANE1);

                glPushMatrix();
        glTranslatef(-50,-150,1);
        glScalef(1,1,1);
        glRotatef(90,0,1,0);
        //glRotated(sudut,x1,y1,z1);
        glutSolidTorus(50,100,50,50);
                glPopMatrix();

                glPushMatrix();
        glTranslatef(50,-150,1);
        glScalef(1,1,1);
        glRotatef(90,0,1,0);
         //glRotated(sudut,x1,y1,z1);
        glutSolidTorus(50,100,50,50);
                glPopMatrix();

        glDisable(GL_CLIP_PLANE0);
        glDisable(GL_CLIP_PLANE1);

//Bagai Sandaran
    glPushMatrix();
        glTranslated(0.0,1.2,-70);
        glRotated(-29,0,0,2);
        glutSolidTorus(10,90,10,3);
    glPopMatrix();

    glPushMatrix();
        glTranslated(2,-5.5,-70);
        glRotated(0,1,0,2);
        glutSolidCube(66);
    glPopMatrix();

    glPushMatrix();
        glTranslated(2,-80,-70);
        glRotated(0,1,0,2);
        glScalef(2.5,1,1);
        glutSolidCube(66);
    glPopMatrix();

//Bagian Alas
    glPushMatrix();
        glTranslated(2,-116,0);
        glRotated(0,1,0,2);
        glScalef(10,0.1,10);
        glutSolidCube(20);
    glPopMatrix();

//Bagian Kaki
    glPushMatrix();
        glTranslated(-50,-160,-1);
        glRotated(0,1,0,2);
       glutSolidSphere(50,20,10);
    glPopMatrix();

    glPushMatrix();
        glColor3d(0.0,1.0,0.0);
        glTranslated(50,-160,-1);
        glRotated(0,1,0,2);
        //glScalef(2.5,0.1,40);
       glutSolidSphere(50,20,10);
    glPopMatrix();

    glPopMatrix();
    angle+=1;
                rads = angle*3.14/180;
    x = 2*cos((double) rads);
    glutSwapBuffers();
    glutPostRedisplay();
}


void CameraView(unsigned char key, int x, int y){ //arah lihat dr kamera
    if(key == 'a')
        xP-= 5.0f;
    if(key == 'b')
        xP += 5.0f;
    if(key == 'c')
        yP -= 5.0f;
    if(key == 'd')
        yP += 5.0f;
    if(key > 356.0f)
        xP = 0.0f;
    if(key < -1.0f)
        xP = 355.0f;
    if(key > 356.0f)
        yP = 0.0f;
    if(key < -1.0f)
        yP = 355.0f;
}

const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 1.0f, 2.0f, 5.0f, 0.0f };

const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };

/* Program entry point */

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Kursi Goyang");
    glutReshapeFunc(reshape);
    glutKeyboardFunc(CameraView);
    glutDisplayFunc(display);
    glClearColor(1,1,1,1);
    glEnable(GL_CULL_FACE);
    glCullFace(GL_BACK);

    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);

    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);

    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);