我最近组装了一个程序,通过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
即使我没有使用多个线程?