1
所以我試圖連接到將要獲取模擬數據(紅火龍果)的設備。它已經設置了控制設備的scpi命令。我可以通過labview和使用膩子來控制這些。嘗試使用JSch或Socket連接到頻道時,我感到困惑和困惑?
我想寫和Android應用程序,可以訪問設備scpi服務器,併發送命令到設備來完成。
該設備的編程方式是您首先必須使用SSH連接連接到服務器,而使用JSch沒有問題,您可以從中發送命令以啓動scpi服務器並打開連接。
現在,這是我正在努力的一點,我不明白爲什麼,當SCPI服務器啓動時,它通過設備的Ip和5000的原始端口進行訪問,但我似乎無法寫出一塊代碼連接到此並執行SCPI命令。我不確定這是連接還是我發送數據的方式。
這是代碼
public class rp_command extends AsyncTask<Void,Void, Void> {
String ipAddress;
int port;
String response = "";
TextView textResponse;
rp_command(String address, int rp_port, TextView textResponse){
ipAddress = address;
port = rp_port;
this.textResponse = textResponse;
}
@Override
protected Void doInBackground(Void...arg0){
Socket socket = null;
try{
socket = new Socket(ipAddress, port);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeByte(1);
out.writeUTF("DIG:PIN LED2,1");
out.flush();
} catch (UnknownHostException e){
e.printStackTrace();
response = "UnknownHostException:" + e.toString();
} catch (IOException e){
e.printStackTrace();
response = "IOException:" + e.toString();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}return null;
}
@Override
protected void onPostExecute(Void result){
textResponse.setText(response);
super.onPostExecute(result);
}
}
如果任何人有這將不勝感激 感謝
任何意見
'println()'已經附加了行結束符。現在你有兩個。注意異常處理結構錯誤。如果連接成功,您應該只添加監聽器。依賴於前一個'try'塊中代碼成功的代碼應該在'try'塊內。 – EJP
感謝您的建議,絕對需要這個幫助我變得更好。 – RedP