0

我正在研究 Oracle 并试图将表单从 6i 移动到 11g。我正在尝试使用 jssc 从称重机建立连接并获取重量(数据)。我面临一些问题。

这是代码:

package oracle.forms.demo;

import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPort;
import jssc.SerialPortException;
import oracle.forms.handler.IHandler;
import oracle.forms.ui.CustomEvent;
import oracle.forms.properties.ID;
import oracle.forms.ui.VBean;

public class Comm extends VBean{
    static IHandler mHandler;
    static SerialPort serialPort;
    int com_port;
    int baud_rate;
    int scale_parity;
    int scale_databits;
    int scale_stop_bits;
    boolean scale_dtr;
    boolean scale_rts;
    String scale_command;
    int scale_time_out;
    //protected static final ID SETPROPS = ID.registerProperty("SETPROPS");
    protected static final ID GETDATA = ID.registerProperty("GETDATA");
    protected static final ID SETPORT = ID.registerProperty("SETPORT");
    protected static final ID SETBAUD = ID.registerProperty("SETBAUD"); 
    protected static final ID SETPARITY = ID.registerProperty("SETPARITY"); 
    protected static final ID SETDATABITS = ID.registerProperty("SETDATABITS"); 
    protected static final ID SETSTOPBITS = ID.registerProperty("SETSTOPBITS"); 
    protected static final ID SETDTR = ID.registerProperty("SETDTR"); 
    protected static final ID SETRTS = ID.registerProperty("SETRTS"); 
    protected static final ID SETCOMMAND = ID.registerProperty("SETCOMMAND");
    protected static final ID SETTIMEOUT = ID.registerProperty("SETTIMEOUT"); 
    // events you can raise
    protected static final ID EVT_01 = ID.registerProperty("EVT_01");

    public Comm()
    {
        super();
    }

    public void init(IHandler handler)
    {
        super.init(handler);
        mHandler = handler;
        // put your initialisation instructions here
    }

    /**
     * Get the properties of the bean
     **/
    public boolean setProperty(ID property, Object value)
    {   
        if (property == SETPORT)
        {   
            com_port = Integer.parseInt((String)value);
                        System.out.println("In RSET_PORT");
            return true;
        }
        else if(property == SETBAUD)
        {
            baud_rate = Integer.parseInt((String)value);
                        System.out.println("In SET_BAUD");
            return true;
        }
        else if (property == SETPARITY)
        {             
            scale_parity = Integer.parseInt((String)value);
            return true;
        }
        else if (property == SETDATABITS)
        {             
            scale_parity = Integer.parseInt((String)value);
                        System.out.println("In DATA_BITS");
            return true;
        }
        else if (property == SETSTOPBITS)
        {       
            scale_stop_bits = Integer.parseInt((String)value);
                        System.out.println("In SET_STOP_BITS");
            return true;
        }
        else if(property == SETDTR)
        {
            if (Integer.parseInt((String)value) == 0)
            {
                scale_dtr = false;
                                System.out.println("In DTR");
                return true;
            }
            else
            {
                scale_dtr = true;
                                System.out.println("In DTR");
                return true;
            }
        }
        else if(property == SETRTS)
        {
            if(Integer.parseInt((String)value) == 0)
            {
                scale_rts = false;
                                System.out.println("In RTS");
                return true;
            }
            else
            {
                scale_rts = true; 
                                System.out.println("In RTS");
                return true;
            }
        }
        else if(property == SETCOMMAND)
        {
            scale_command = (String)value;
                        System.out.println("In SET_COMMAND");
            return true;
        }
        else if(property == SETTIMEOUT)
        {
            scale_time_out = Integer.parseInt((String)value);
                        System.out.println("In SET_TIME_OUT");
            return true;        
        }
        else // default behaviour
        {
            return super.setProperty(property, value);
        }

    }
    /**
     * Get the properties of the bean
     **/
    public Object getProperty(ID property)
    {
        if(property == GETDATA){  
            System.out.println("Running comProp");
            System.out.println("com_port: " + com_port);
            System.out.println("baud_rate: " + baud_rate);
            System.out.println("scale_parity: " + scale_parity);
            System.out.println("scale_databits: " + scale_databits);
            System.out.println("scale_stop_bits: " + scale_stop_bits);
            System.out.println("scale_dtr: " + scale_dtr);
            System.out.println("scale_rts: " + scale_rts);
            System.out.println("scale_command: " + scale_command);
            System.out.println("scale_time_out: " + scale_time_out);

            System.out.println("Serialport");
            SerialPort serialPort = new SerialPort("COM1");
            boolean leave = false;
            int i = 1;
            String str = null;
                        System.out.println("while loop");
            //In the constructor pass the name of the port with which we work
            while(leave == false){
                try
                {
                    serialPort.openPort();
                    serialPort.setParams(baud_rate,scale_parity,scale_databits,scale_stop_bits, scale_rts, scale_dtr);
                    serialPort.writeString(scale_command + (char)13 + (char)10);
                    str = serialPort.readString(i,scale_time_out );
                    i = i + 1;
                    serialPort.closePort();
                }
                catch (Exception exc) 
                {
                    //System.out.println(exc);
                    leave = true;
                    //System.out.println("Length: " + (i-1));
                    System.out.println("String: "+ str);
                }


            }
            return str;
        }
        else 
        {
            return super.getProperty(property);    
        }
    }

    public void dispatch_event( ID id )
    {
        CustomEvent ce = new CustomEvent(mHandler, id);
        dispatchCustomEvent(ce);
    }
}

这是错误消息。

Exception in thread "AWT-EventQueue-3" java.lang.ExceptionInInitializerError
    at jssc.SerialPort.<init>(SerialPort.java:120)
    at oracle.forms.demo.Comm.getProperty(Comm.java:151)
    at oracle.forms.handler.UICommon.onGet(Unknown Source)
    at oracle.forms.engine.Runform.onGetHandler(Unknown Source)
    at oracle.forms.engine.Runform.processMessage(Unknown Source)
    at oracle.forms.engine.Runform.processSet(Unknown Source)
    at oracle.forms.engine.Runform.onMessageReal(Unknown Source)
    at oracle.forms.engine.Runform.onMessage(Unknown Source)
    at oracle.forms.engine.Runform.processEventEnd(Unknown Source)
    at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
    at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission user.home read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at jssc.SerialNativeInterface.<clinit>(SerialNativeInterface.java:85)
    ... 26 more
4

1 回答 1

0

幸好我解决了。

我是文件错误。我们需要包含此代码文件所在的 jssc 文件。

谢谢你。

于 2015-08-05T15:38:22.237 回答