MVP

//MyApp类




import android.app.Application;


import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;


/**
 * Created by Administrator on 2017/10/11 0011.
 */


public class MyApp extends Application {


    private static MyApp mInstance;




    @Override
    public void onCreate() {
        super.onCreate();
        mInstance=this;
        ImageLoaderConfiguration defaultcof = ImageLoaderConfiguration.createDefault(getApplicationContext());
        ImageLoader.getInstance().init(defaultcof);


    }
    public static MyApp getInstance(){
        return mInstance;
    };


}

//model

//IModel




/**
 * author:Created by WangZhiQiang on 2017/12/10.
 */


public interface IModel {


    void login(User user, int i);
}

//Model 继承IModel




import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


import okhttp3.Call;
import utile.GsonObjectCallback;
import utile.OkHttp3Utils;


/**
 * author:Created by WangZhiQiang on 2017/12/10.
 */


public class Model implements IModel {




    private setOnfinish setOnfinishs;


    public interface setOnfinish{
        void onfinish(UserInfo userInfo);
        void ofinish2(Register register);
    }
    public Model(setOnfinish setOnfinishs){


        this.setOnfinishs=setOnfinishs;
    }
    @Override
    public void login(User user, int i) {


        Map<String,String> map=new HashMap<>();


        map.put("mobile", user.getName());
        map.put("password", user.getPwd());
        if(i==0){


            OkHttp3Utils.doPost("http://120.27.23.105/user/login", map, new GsonObjectCallback<UserInfo>() {
                @Override
                public void onUi(UserInfo userInfo) {
                    if(setOnfinishs!=null){
                        setOnfinishs.onfinish(userInfo);
                    }
                }


                @Override
                public void onFailed(Call call, IOException e) {


                }
            });
        }else if(i==1){
            OkHttp3Utils.doPost("http://120.27.23.105/user/reg", map, new GsonObjectCallback<Register>() {


                @Override
                public void onUi(Register register) {
                    if(setOnfinishs!=null){


                        setOnfinishs.ofinish2(register);
                    }
                }


                @Override
                public void onFailed(Call call, IOException e) {


                }
            });
        }
    }
}


//Iview




/**
 * author:Created by WangZhiQiang on 2017/12/10.
 */


public interface Iview {


    void loginSucess(String msg);


    void loginError(String msg);


    void signSucess(String msg);


    void signError(String msg);
}


//presenter

//passer重写 Model.setOnfinish 



/**
 * author:Created by WangZhiQiang on 2017/12/10.
 */


public class passer implements Model.setOnfinish {


    private Iview iview;
    private Model imodel;


    public passer(Iview iview) {
        this.iview = iview;
        this.imodel=new Model(this);
    }


    public void login(User user, int i) {


        imodel.login(user, i);
    }


    //登录
    @Override
    public void onfinish(UserInfo userInfo) {
        if (userInfo.getCode().equals("0")) {
            iview.loginSucess(userInfo.getMsg());
        } else {
            iview.loginError(userInfo.getMsg());
        }
    }
//注册
    @Override
    public void ofinish2(Register register) {
        if (register.getCode().equals("0")) {
            iview.signSucess(register.getMsg());
        } else {
            iview.signError(register.getMsg());
        }
    }
}

//Mainactivity



import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.Toast;
import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity implements Iview {


    /**
     * 输入手机号
     */
    private EditText mPhones;
    /**
     * 输入密码
     */
    private EditText mPwd;
    /**
     * 登入
     */
    private RadioButton mLogin;
    /**
     * 注册
     */
    private RadioButton mSign;
    private ImageView mQq;
    private UserInfo mUserInfo;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();


    }






    private void initView() {
        mPhones = (EditText) findViewById(R.id.phones);
        mPwd = (EditText) findViewById(pwd);
        mLogin = (RadioButton) findViewById(R.id.login);
        mSign = (RadioButton) findViewById(R.id.sign);
        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (TextUtils.isEmpty(mPhones.getText().toString()) || TextUtils.isEmpty(mPwd.getText().toString())) {
                    Toast.makeText(MainActivity.this, "输入项不能为空", Toast.LENGTH_SHORT).show();
                    return;
                } else {


                    new passer(MainActivity.this).login(new User(mPhones.getText().toString(), mPwd.getText().toString()), 0);
                }
            }
        });
        mSign.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (TextUtils.isEmpty(mPhones.getText().toString()) || TextUtils.isEmpty(mPwd.getText().toString())) {
                    Toast.makeText(MainActivity.this, "输入项不能为空", Toast.LENGTH_SHORT).show();
                    return;
                } else {


                    new passer(MainActivity.this).login(new User(mPhones.getText().toString(), mPwd.getText().toString()), 1);
                }
            }
        });


    }
    
    @Override
    public void loginSucess(String msg) {
        Toast.makeText(this, msg + "、欢迎使用☺", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(MainActivity.this, ListActivity.class);
        startActivity(intent);
        finish();


    }


    @Override
    public void loginError(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }


    @Override
    public void signSucess(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }


    @Override
    public void signError(String msg) {


        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }
}

基于STM32 F4的永磁同步电机无位置传感器控制策略研究内容概要:本文围绕基于STM32 F4的永磁同步电机(PMSM)无位置传感器控制策略展开研究,重点探讨在不依赖物理位置传感器的情况下,如何通过算法实现对电机转子位置和速度的精确估计与控制。文中结合嵌入式开发平台STM32 F4,采用如滑模观测器、扩展卡尔曼滤波或高频注入法等先进观测技术,实现对电机反电动势或磁链的估算,进而完成无传感器矢量控制(FOC)。同时,研究涵盖系统建模、控制算法设计、仿真验证(可能使用Simulink)以及在STM32硬件平台上的代码实现与调试,旨在提高电机控制系统的可靠性、降低成本并增强环境适应性。; 适合人群:具备一定电力电子、自动控制理论基础和嵌入式开发经验的电气工程、自动化及相关专业的研究生、科研人员及从事电机驱动开发的工程师。; 使用场景及目标:①掌握永磁同步电机无位置传感器控制的核心原理与实现方法;②学习如何在STM32平台上进行电机控制算法的移植与优化;③为开发高性能、低成本的电机驱动系统提供技术参考与实践指导。; 阅读建议:建议读者结合文中提到的控制理论、仿真模型与实际代码实现进行系统学习,有条件者应在实验平台上进行验证,重点关注观测器设计、参数整定及系统稳定性分析等关键环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值