当前位置: 代码迷 >> 驱动开发 >> 串口驱动开发
  详细解决方案

串口驱动开发

热度:708   发布时间:2013-11-12 22:45:37.0
    //初始化串口驱动  
        private   boolean   initCommDriver_win32()   {        
        try   {  
        System.loadLibrary( "win32com ");      
        String   driverName   =   "com.sun.comm.Win32Driver ";        
        CommDriver   driver   =   (CommDriver)   Class.forName(driverName).newInstance();        
        driver.initialize();          
        return   true;        
                }catch   (Throwable   e)   {    
                MessageDialog.openInformation(null,   "initDriver ",   "initDriver_Err_Win32Com ");  
                e.printStackTrace();    
                return   false;        
                }  
        }  
        //打开串口  
        private   boolean   OpenComm(String   PortName)  
        {  
  //获取指定的COM端口        
        try   {  
portIdentifier   =   CommPortIdentifier.getPortIdentifier(PortName);  
}   catch   (NoSuchPortException   e)   {  
e.printStackTrace();  
return   false;  
}  
//打开端口(3秒打不开则失败)  
try   {  
serialPort   =   (SerialPort)portIdentifier.open(this.getTitle(),3000);  
}   catch   (PortInUseException   e)   {  
MessageDialog.openInformation(null,   "OpenComm ", "Open_Err ");  
e.printStackTrace();  
return   false;  
}  
                //设置端口通讯参数   (波特率   =   9600,数据位   =   8,停止位   =   1   ,校验位   =奇校验)  
                try   {  
                        serialPort.setSerialPortParams(9600,  
                                SerialPort.DATABITS_8,  
                                SerialPort.STOPBITS_1,  
                                SerialPort.PARITY_ODD);  
                }   catch   (UnsupportedCommOperationException   e)    
                {  
                MessageDialog.openInformation(null,   "OpenComm ", "Set_Port ");  
                e.printStackTrace();  
                return   false;  
                }  
//设置输入流  
                try   {  
                        inputStream   =   serialPort.getInputStream();  
                }   catch   (IOException   e)   {  
                MessageDialog.openInformation(null,   "OpenComm ", "Set_InputStream ");  
                e.printStackTrace();  
                return   false;  
                }  
                //设置输出流  
                try   {  
outputStream   =   serialPort.getOutputStream();  
}   catch   (IOException   e)   {  
                MessageDialog.openInformation(null,   "OpenComm ", "Set_OutputStream ");  
                e.printStackTrace();  
                return   false;  
}  
                //当串口有数据时通知        
                serialPort.notifyOnDataAvailable(true);          
                //当串口通讯中断时通知          
                serialPort.notifyOnBreakInterrupt(true);    
                //接收数据超时设置  
                try   {  
serialPort.enableReceiveTimeout(30);  
}   catch   (UnsupportedCommOperationException   e)   {  
e.printStackTrace();  
return   false;  
}  
//设置一个串口数据暂存区  
strBuffer=new   StringBuffer();  
                //给当前串口添加一个监听器   DisposeSerialportMessage  
try   {  
serialPort.addEventListener(  
new   SerialPortEventListener()  
{          
                public   void   serialEvent(SerialPortEvent   e)  
                {    
                disposeSerialportMessage(e);  
                }  
        }  
);  
}   catch   (TooManyListenersException   e)   {  
e.printStackTrace();  
return   false;  
}  
  
        return   true;  
        }

  相关解决方案