1

我最近组装了一个程序,通过usb端口串行获取数据并传输到COSM。通过该serialevent方法串行获取的数据并没有传递给update用于将上述数据上传到 COSM 的方法。然而,在synchronized从方法的签名中删除说明符后,serialevent这个问题就解决了。

public synchronized void serialEvent(SerialPortEvent oEvent)//Event handler for Serial communication  
{

    if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) 
    {
        try {

            val=input.read();//Variable where data is received.Initialized to 0.
             this.update(78164);  

        } 
        catch (Exception e)
        {
            System.err.println(e.toString());
        }
    }

}

上传方式:

private  void update(int feedid) throws PachubeException, IOException ,Exception
{

    Feed f = this.pachube.getFeed(feedid);
   //System.out.println(f==null);
     System.out.println("updating ...");




     f.updateDatastream(8345, (double) val);//Expected value=77,Obtained value=0
     f.updateDatastream(6274, (double) val);//Expected value=77,Obtained value=0
     f.updateDatastream(1044, (double) val);//Expected value=77,Obtained value=0

   System.out.println("updated");

}

我的问题是说明synchronized符如何拒绝变量中存在的数据从serialevent方法传递到upload即使我没有使用多个线程?

4

0 回答 0