一、功能:
1.Android WIFI连接与断开,保存连接IP及端口。
2.WIFI控制3个继电器
3.16进制发送指令,可以单条和多条发送,用逗号隔开。
4.16进制接收
如需特别功能可以找我定制(程序源码,定制专家 手机:18910620895 旺旺:chenhao0568 QQ:345139427)。
二、源码如下:
登陆Login.java
package com.example.eeeee; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.annotation.SuppressLint; import android.app.Activity; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; @SuppressLint("NewApi") public class Login<E, K, V> extends Activity { public static Socket mSocket; public static InputStream ips; public static OutputStream ops; // private final String DEBUG_TAG = "mySocketAct"; private String ip; private String port; //private ImageButton but7=null; private EditText ServerIp = null; private EditText ServerPort = null; private Button btn_login = null; private CheckBox remember; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.login); //“登陆”页面------------------------------------------------------------------------------------------- this.ServerIp = (EditText)super.findViewById(R.id.et_ip); this.ServerPort = (EditText)super.findViewById(R.id.et_port); btn_login = (Button)this.findViewById(R.id.btn_login); remember = (CheckBox)this.findViewById(R.id.cb_remember); loadIpPort(); ////载入IP地址及端口 btn_login.setOnClickListener(new View.OnClickListener() { //按“登陆”按钮后的事件 @Override public void onClick(View arg0) { // TODO Auto-generated method stub //容错判断 ip = ServerIp.getText().toString().trim(); port = ServerPort.getText().toString().trim(); ServerIp.requestFocus(); if(ip==null|ip.trim().equals("")) ServerIp.setError("请输入IP地址!"); if(port==null|port.trim().equals("")) ServerPort.setError("请输入端口号!"); else { connect(); } return; } }); } public void saveIpPort() //保存IP地址及端口 { SharedPreferences uiState = getSharedPreferences("RS485 Controller", MODE_PRIVATE); Editor et=uiState.edit(); et.putString("ip",ServerIp.getText().toString()); et.putString("port",ServerPort.getText().toString()); et.commit(); } public void loadIpPort() //载入IP地址及端口 { SharedPreferences uiState = getSharedPreferences("RS485 Controller", MODE_PRIVATE); ServerIp.setText(uiState.getString("ip","192.168.1.180" )); ServerPort.setText(uiState.getString("port", "8899")); } public void connect() { Toast.makeText(Login.this, "连接中……", Toast.LENGTH_SHORT).show(); new Thread(new Runnable() { @Override public void run() { try { mSocket = new Socket(InetAddress.getByName(ip), Integer.parseInt(port)); // mSocket =new Socket("192.168.1.180",8899); ops = mSocket.getOutputStream(); ips =mSocket.getInputStream(); } catch (Exception e) { e.printStackTrace(); } finally { } handler.sendMessage(handler.obtainMessage()); } }).start(); } // 消息处理队列 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (mSocket == null) { Toast.makeText(Login.this, "连接失败,请重新登陆!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Login.this, "连接成功!", Toast.LENGTH_SHORT).show(); if (remember.isChecked()) { saveIpPort();} //保存IP地址及端口 Intent intent = new Intent(); intent.setClass(Login.this,Relay.class); startActivity(intent); //进入Login页面 // finish(); } return false; } } ); }
先上图:
时间: 2024-11-04 08:00:24