我編寫了python腳本來從傳感器讀取「溫度/溼度」數據,它工作正常並返回結果「23.0/38.0」。從Java調用Python代碼並返回JSON對象
我需要把23.0放在對象成員變量「temperature」中,38.0放在「Humidity」成員變量中,然後返回傳感器對象。
我的問題是,創建的web服務返回溫度和溼度變量爲空。
package raspberryws;
import java.io.IOException;
import java.io.InputStream;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("DHTService")
public class DHTService {
public DHTService() {
super();
}
@GET
@Produces(value = { "application/json" })
@Path("/readDHT")
public DHTSensor readDHT11() throws IOException {
DHTSensor sensor = new DHTSensor();
int ch;
char y;
String temp="" ;
String humidity="" ;
try {
Process p =
Runtime.getRuntime().exec("sudo python /projects/Adafruit_Python_DHT/examples/AdafruitDHT.py 11 4 ");
// get an InputStream for the python stdout
InputStream inStream = p.getInputStream();
// read all stdout data one char at a time.
while ((ch = inStream.read()) != -1) {
System.out.println(ch + " ch");
if ((int) ch == 47) {
sensor.setTempreture(temp);
humidity="";
} else {
if ((int) ch == 10) {
continue;
}
y = (char) ch;
temp=temp+y;
humidity=humidity+y;
sensor.setHumidity(humidity);
}
}
} catch (IOException e) {
e.printStackTrace();
}
// System.out.println(x);
return sensor;
}
}
還真是不多的錯誤檢查在這裏告訴你什麼錯誤 - 是Python的一部分運行:最後,你可以將這些字符串轉換,如果需要鍵入
float
?你的'解析'工作?爲什麼不只是在整個輸出中讀取並解析它呢? – pvg是的Python代碼正在運行,它運行在樹莓卡上。 –
如果我打印從python代碼返回的字符串它返回「23.0/38.0」,但是當我將值賦予sensor.temperatur和溼度它返回空 –