그래서 아날로그 데이터 (Red Pitaya)를 취득 할 장치에 연결하려고합니다. 장치를 제어하는 scpi 명령을 설정합니다. 나는 labview와 퍼티를 사용하여 이것을 제어 할 수 있습니다.JSch 또는 Socket을 사용하여 채널에 연결할 때 혼란 스럽거나 혼란 스럽습니까?
디바이스 scpi 서버에 액세스 할 수있는 앤드 로이드 애플리케이션을 작성하고 디바이스에 대한 명령을 보내면 완료됩니다.
장치는 처음에는 JSch를 사용하여 문제가없는 SSH 연결을 사용하여 서버에 연결해야한다는 점에서 프로그래밍되었습니다. 거기에서 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