1.50,汉枫官网可下载最新固件和 SDK),成功率和配网速度有提高。
1 安装完毕后,在智能终端桌面中有以下图标:
2 智能终端 Wi-Fi 连接上路由器(必须是 2.4G 频段)后点击图标进入程序主页面,
点击如下的任意选项进入设置界面。
HF-SmartLink 使用简介
上海汉枫电子科技有限公司 4/9
3 设置界面如下说明
3.1 SSID: 默认为手机所连接的路由器 SSID。
3.2 Password: 路由器的连接密码。
HF-SmartLink 使用简介
上海汉枫电子科技有限公司 5/9
4 点击模组【nReload】按键启动 SmartLink 配置功能,模组自动重启后
【nLink】灯快闪提示 SmartLink 配置模式启动,需要尽快执行步骤 4。输入
密码后点击 APP【start】按钮,推送配置信息给模组,APP 提示正在配置,
如下图:
HF-SmartLink 使用简介
上海汉枫电子科技有限公司 6/9
5 配置完成后,模组自动重启切换到 STA 模式去连接路由器。
a) nLink 灯慢闪校验配置信息是否正确,正确情况下,模块 nLink 灯常亮提
示已连接到此路由器,APP 提示配置成功,如下图左。
b) 错误情况下 nLink 灯一直慢闪,需要重新按以上流程配置
c) 整个配置时间持续 30 秒,一次可配置多个设备,有设备配置成功则最后提
示配置成功,如下图中,否则提示超时,如下图右
HF-SmartLink 使用简介
上海汉枫电子科技有限公司 7/9
附录:
1、汉枫 Wi-Fi 模组推荐硬件连接。
a) nReload:SmartLink 启动按键
b) nLink:SmartLink 状态指示。
2、IOS APP 另有【配置单个设备】选项,选中后有配置一个设备成功后就立即停
止返回结果,配置流程与 Android 一致。
package com.hiflying.smartlink.demo;
import com.hiflying.smartlink.ISmartLinker;
import com.hiflying.smartlink.OnSmartLinkListener;
import com.hiflying.smartlink.SmartLinkedModule;
import com.hiflying.smartlink.v3.SnifferSmartLinker;
import com.hiflying.smartlink.v7.MulticastSmartLinker;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class CustomizedActivity extends Activity implements OnSmartLinkListener{
public static final String EXTRA_SMARTLINK_VERSION = "EXTRA_SMARTLINK_VERSION";
private static final String TAG = "CustomizedActivity";
protected EditText mSsidEditText;
protected EditText mPasswordEditText;
protected Button mStartButton;
protected ISmartLinker mSnifferSmartLinker;
private boolean mIsConncting = false;
protected Handler mViewHandler = new Handler();
protected ProgressDialog mWaitingDialog;
private BroadcastReceiver mWifiChangedReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int smartLinkVersion = getIntent().getIntExtra(EXTRA_SMARTLINK_VERSION, 3);
if(smartLinkVersion == 7) {
mSnifferSmartLinker = MulticastSmartLinker.getInstance();
}else {
mSnifferSmartLinker = SnifferSmartLinker.getInstance();
}
mWaitingDialog = new ProgressDialog(this);
mWaitingDialog.setMessage(getString(R.string.hiflying_smartlinker_waiting));
mWaitingDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
mWaitingDialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mSnifferSmartLinker.setOnSmartLinkListener(null);
mSnifferSmartLinker.stop();
mIsConncting = false;
}
});
setContentView(R.layout.activity_customized);
mSsidEditText = (EditText) findViewById(R.id.editText_hiflying_smartlinker_ssid);
mPasswordEditText = (EditText) findViewById(R.id.editText_hiflying_smartlinker_password);
mStartButton = (Button) findViewById(R.id.button_hiflying_smartlinker_start);
mSsidEditText.setText(getSSid());
mStartButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(!mIsConncting){
//设置要配置的ssid 和pswd
try {
mSnifferSmartLinker.setOnSmartLinkListener(CustomizedActivity.this);
//开始 smartLink
mSnifferSmartLinker.start(getApplicationContext(), mPasswordEditText.getText().toString().trim(),
mSsidEditText.getText().toString().trim());
mIsConncting = true;
mWaitingDialog.show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
mWifiChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo != null && networkInfo.isConnected()) {
mSsidEditText.setText(getSSid());
mPasswordEditText.requestFocus();
mStartButton.setEnabled(true);
}else {
mSsidEditText.setText(getString(R.string.hiflying_smartlinker_no_wifi_connectivity));
mSsidEditText.requestFocus();
mStartButton.setEnabled(false);
if (mWaitingDialog.isShowing()) {
mWaitingDialog.dismiss();
}
}
}
};
registerReceiver(mWifiChangedReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mSnifferSmartLinker.setOnSmartLinkListener(null);
try {
unregisterReceiver(mWifiChangedReceiver);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onLinked(final SmartLinkedModule module) {
// TODO Auto-generated method stub
Log.w(TAG, "onLinked");
mViewHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), getString(R.string.hiflying_smartlinker_new_module_found, module.getMac(), module.getModuleIP()),
Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onCompleted() {
Log.w(TAG, "onCompleted");
mViewHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), getString(R.string.hiflying_smartlinker_completed),
Toast.LENGTH_SHORT).show();
mWaitingDialog.dismiss();
mIsConncting = false;
}
});
}
@Override
public void onTimeOut() {
Log.w(TAG, "onTimeOut");
mViewHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), getString(R.string.hiflying_smartlinker_timeout),
Toast.LENGTH_SHORT).show();
mWaitingDialog.dismiss();
mIsConncting = false;
}
});
}
private String getSSid(){
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
if(wm != null){
WifiInfo wi = wm.getConnectionInfo();
if(wi != null){
String ssid = wi.getSSID();
if(ssid.length()>2 && ssid.startsWith("\"") && ssid.endsWith("\"")){
return ssid.substring(1,ssid.length()-1);
}else{
return ssid;
}
}
}
return "";
}
}
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f0f0f0"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="20dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Customized Text"
android:gravity="center"/>
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hiflying_smartlinker_ssid"
android:gravity="center"/>
<EditText
android:id="@+id/editText_hiflying_smartlinker_ssid"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="5dp"
android:editable="false"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hiflying_smartlinker_password"
android:gravity="center"/>
<EditText
android:id="@+id/editText_hiflying_smartlinker_password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="5dp"/>
</TableRow>
</TableLayout>
<Button
android:id="@+id/button_hiflying_smartlinker_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingBottom="10dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="10dp"
android:text="@string/hiflying_smartlinker_start" />
</LinearLayout>
strings
<resources>
<string name="hiflying_smartlinker_ssid">SSID:</string>
<string name="hiflying_smartlinker_password">密码:</string>
<string name="hiflying_smartlinker_start">开始</string>
<string name="hiflying_smartlinker_waiting">请稍后…</string>
<string name="hiflying_smartlinker_timeout">配置超时!</string>
<string name="hiflying_smartlinker_completed">SmartLink 完成</string>
<string name="hiflying_smartlinker_new_module_found" formatted="false">发现新模块: Mac-%s Ip-%s</string>
<string name="hiflying_smartlinker_no_wifi_connectivity">没有Wifi连接</string>
</resources>