TCP/Modbus를 통해 PLC에 연결을 시도하는 스마트 폰용 프로그램을 만들고 있는데 Jamod 라이브러리를 사용하고 있습니다. 연결된,하지만 안드로이드에 변화가 ...., 누군가 나를 도울 수 있습니까?.안드로이드 용 TCP/Modbus
나는 인터넷을 사용하는 응용 프로그램에 대한 허가도 받았고 왜 연결하지 않을지 모르겠다. 필사적이다.
08-20 10:25:39.299: D/MODBUS(1238): connection error
08-20 10:25:39.299: D/MODBUS(1238): android.os.NetworkOnMainThreadException
08-20 10:25:39.299: D/MODBUS(1238): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
08-20 10:25:39.299: D/MODBUS(1238): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
08-20 10:25:39.299: D/MODBUS(1238): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
08-20 10:25:39.299: D/MODBUS(1238): at libcore.io.IoBridge.connect(IoBridge.java:112)
08-20 10:25:39.299: D/MODBUS(1238): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
08-20 10:25:39.299: D/MODBUS(1238): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
08-20 10:25:39.299: D/MODBUS(1238): at java.net.Socket.startupSocket(Socket.java:566)
08-20 10:25:39.299: D/MODBUS(1238): at java.net.Socket.<init>(Socket.java:225)
08-20 10:25:39.299: D/MODBUS(1238): at net.wimpi.modbus.net.TCPMasterConnection.connect(TCPMasterConnection.java:65)
08-20 10:25:39.299: D/MODBUS(1238): at com.JR.scada.Main.onResume(Main.java:96)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1185)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.Activity.performResume(Activity.java:5182)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2732)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-20 10:25:39.299: D/MODBUS(1238): at android.os.Handler.dispatchMessage(Handler.java:99)
08-20 10:25:39.299: D/MODBUS(1238): at android.os.Looper.loop(Looper.java:137)
08-20 10:25:39.299: D/MODBUS(1238): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-20 10:25:39.299: D/MODBUS(1238): at java.lang.reflect.Method.invokeNative(Native Method)
08-20 10:25:39.299: D/MODBUS(1238): at java.lang.reflect.Method.invoke(Method.java:511)
08-20 10:25:39.299: D/MODBUS(1238): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-20 10:25:39.299: D/MODBUS(1238): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-20 10:25:39.299: D/MODBUS(1238): at dalvik.system.NativeStart.main(Native Method)
08-20 10:25:40.140: D/dalvikvm(1238): GC_CONCURRENT freed 117K, 9% free 2653K/2892K, paused 15ms+23ms, total 236ms
08-20 10:25:40.449: D/gralloc_goldfish(1238): Emulator without GPU emulation detected
:
package com.JR.scada;
import java.net.InetAddress;
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadInputDiscretesRequest;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.net.TCPMasterConnection;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Main extends Activity implements OnClickListener{
TextView text, depurar;
EditText IP;
Button boton;
//Thread comm = new Thread(this);
int i=0;
/*private final int PUERTO=502;
private Socket socket = null;
private OutputStream output = null;
private BufferedInputStream input = null;
private byte buffer[] = new byte[261];*/
TCPMasterConnection con = null; //the TCP connection
ModbusTCPTransaction trans = null; //the Modbus transaction
InetAddress addr = null; //direccion del esclavo
int port = Modbus.DEFAULT_PORT;//puerto por defecto 502
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.lblRegistro);
IP = (EditText) findViewById(R.id.txtIp);
depurar = (TextView) findViewById(R.id.txtdepurar);
boton = (Button)findViewById(R.id.btnVerRegistro);
boton.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onStop() {
super.onStop();
//Close the TCP connection
con.close();
}
@Override
/*public void run() {*/
protected void onResume() {
super.onResume();
try {
text.setText("Entro en el try");
//IP address;
addr = InetAddress.getByName("212.170.50.238");
// Open the connection
con = new TCPMasterConnection(addr);
con.setPort(port);
con.connect();
if(con.isConnected()){
depurar.setText("conecta");
}
} catch (Exception e) {
Log.d("MODBUS","connection error");
depurar.setText("no conecta");
}
}
그것은 나에게 오류를 제공합니다.
도와 드릴까요? – David