1

最近、USB ポートからデータをシリアルに取得して COSM に転送するプログラムを作成しました。メソッドを介してシリアルに取得されたデータは、前述のデータを COSM にアップロードするために使用されるメソッドserialeventに渡されませんでした。ただし、メソッドのシグネチャから指定子をupdate削除した後、この問題は解決されました。synchronizedserialevent

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