Friday, September 3, 2010

මෙන්න java port programing වල පලමු source code එක

    ඔන්න එහෙනම් port programing පටන් ගනිමු. මුලින්ම pure java වලින්ම පටන්ගන්නම්.
මොකද වද විදින්නෙ නැතිව ලේසියෙන්ම වැඩේ කරගන්න පුලුවන් නිසා.
java වලින් serial port එකට ලියන්න sun microsystem අපිට නියම API එකක් දීල තියෙනවා.
එකෙන් තමයි මම මේ වැඩේ කරන්න යන්නෙ. මුලින්ම drivers කෑලි ටිකක් පරිගණකයේ පිහිටුවගන්න වෙනව.

    පහලින් කියල තියෙන අකාරයට file ටික අදාල තැන් වලට copy කරගන්න. ඔයාල දාල තියෙන
JDK version එක අනූව x.x.x අංකය වෙනස් වෙනව. එක නිසයි විශේෂයෙන් අංකයක් සදහන්
කරන්නෙ නැතිව x.x.x ලෙස සදහන් කලේ. x86 ගැන දන්නවනෙ මගේ system os එක 64bit
නිසා 32bit software install වෙන්නෙ වෙනමම ඩිරෙක්ටරියකට එක නිසා java install වෙලා
තියෙන්නෙ x86 ඩිරෙක්ටරියට ඒ ගැන වැඩි විස්තර කියන්න ඔන නෑ කියල මම හිතනවා.

copy win32com.dll       to C:\Program Files (x86)\Java\JDKx.x.x\BIN\
copy comm.jar          to C:\Program Files (x86)\Java\JDKx.x.x\LIB\
copy javax.comm.properties to C:\Program Files (x86)\Java\JDKx.x.x\LIB\

    පහලින් තියෙනෙ program එක එක හොදින් කියවන්න.කියවලා පුලුවන් තරම් තෙරුම් ගන්න බලන්න.
මොකද මම කොපමන හොදින් කියල දුන්නත් ඔයාල හොදින්
කියෙව්වෙ නැත්නම් වැඩක් වෙන්නෙ නෑ.පසුව ඔයාල තනියම program
එකක් ලියන්න ගිහාම අමාරුවෙ වැටෙන්න ඉඩ තියෙනවා.ඒකයි හොදින් කියවන්න කියල කියන්නෙ.......
import java.io.InputStream;
import java.io.OutputStream;
import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;


public class SerialPortController{

 static byte []tempByte=new byte[1];

 public static void main(String args[]) {

       WriteData();


    }




 public static void WriteData() {
        try {
            SerialPort sPort = (SerialPort) CommPortIdentifier.getPortIdentifier("COM1").open
("transfer", 0);    
/*serial port එකේ object එකක් හදල තියෙන්නෙ මෙන්න මේ code එකෙන්
        */

            try {
                sPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);   
  /*serial port එකේ configurations set කරන්නෙ මේකෙන්
            9600-data යවන වේගය(bitrate 9600bit/s)
            DATABIT_8 -එක data set එකක දිග ඒකියන්නෙ අපි 1pass කලොත්
            port එකෙන් out කරන්නෙ 00000001 බිට් pattern එක.
            STOPBIT_1 - කියන්නෙ data එකකට පස්සෙ data එක ඉවරයි කියල
            කියන්න තවත් bit එකක් pass කරන්න කියල.
           
            */
                sPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);

                InputStream inputStream = sPort.getInputStream();
                OutputStream outputStream = sPort.getOutputStream();

                sPort.notifyOnDataAvailable(true);

               
               

                outputStream.write(tempByte);
               

                sPort.removeEventListener();

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                sPort.notifyOnDataAvailable(false);
                sPort.close();
            }
        } catch (Exception e) {
            System.out.println(e);
        }


    }

}
    මුලින්ම තියෙන main method එකෙන් කරන්නෙ WriteData method එකට කතා කිරීම. මුලින්ම byte array එකක් හදල තියෙනවා tempByte කියල මෙන්න මේ array එකේ තියෙන values තමයි එකින් එක serial port එකෙන් out කරන්නෙ.
ඊලග ලිපියෙන් Netbeans project එකක් දෙන්නම්
එතකන් ඉවසල ඉන්නෙ නැතුව මේ ගැන හොදට හොයන්න. ගොඩක් දේවල් ඉගෙන ගන්න පුලුවන් වෙයි.

6 comments:

  1. maxxa machan, meka digatama karagena yanna... good luck

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. එලකිරි අයියේ ඔයා නියමෙට කියල තියෙනවා. thankz a lot

    ReplyDelete
  4. @all-ස්තුතියි comment වලට මේ code එක නිකම්ම compile කලාම ප්‍රශ්න ඇති වෙන්න ඇති එකට බය වෙන්න එපා.මොකද මම හොදින් වැඩ කරන Netbeans project එකක් දෙන නිසා.
    @JAZZ- comm api එකෙන් USB වලටත් ලියන්න පුලුවන් කියල තමයි මමත් අහල තියෙන්නෙ නමුත් මට තවම ඒක හොයා ගන්න බැරි උනා මම ඒ ගැන හොයල බලන්නම්.

    ReplyDelete
  5. well done man.....
    දිගටම කරගෙන යමු

    ReplyDelete