シリアル入力を受け入れ、受信したデータをCOSMサーバーにアップロードするJavaプログラムに取り組んでいます。シリアルポートから受信したデータを格納するグローバル変数は、COSMの更新に使用されたメソッドでその値を再現しません。誰かがこれの何が問題になっているのか教えてもらえますか?以前にグローバルキューオブジェクトを使用したこともありますが、キューオブジェクトでremoveが呼び出されると、updateメソッドNullPointerException
がスローされます。
public synchronized void serialEvent(SerialPortEvent oEvent)//Event handler for serial communication
{
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE)
{
try {
val = input.read();
this.update(78164);
} catch (PachubeException e) {
// If an exception occurs it will print the error message from the
// failed HTTP command
System.err.println(e.errorMessage);
//System.out.println("Main method");
} catch (IOException e) {
System.err.println(e);
// System.out.println("Main method");
} catch (Exception e) {
// System.out.println("Main method");
System.err.println(e);
}
}
val
グローバル変数です。update
メソッドで呼び出されると、の値val
はゼロまたは20になります(の値val
はその定義で初期化されました)。updateメソッドの実装は次のとおりです。
private void update(int feedid) throws PachubeException, IOException ,Exception
{
Feed f = this.pachube.getFeed(feedid);
System.out.println("updating ...");
f.updateDatastream(8345, (double) val);
f.updateDatastream(6274, (double) val);
f.updateDatastream(1044, (double) val);
// f.updateDatainputDatastream((f.getData(), in, out, true));
//System.out.println(val);
System.out.println("updated");
}