package com.example.serial;
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import android.os.Bundle;
|
import android.view.View;
|
import android.widget.Button;
|
import android.widget.EditText;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
public class BuzzerActivity extends AppCompatActivity {
|
|
private Button play;
|
private Button stop;
|
private EditText period;
|
private EditText duty_cycle;
|
|
private String periodBuf;
|
private String dutyBuf;
|
private BuzzerControl buzzerControl;
|
private int rv;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_buzzer);
|
buzzerControl = new BuzzerControl();
|
|
play = findViewById(R.id.play);
|
period = findViewById(R.id.period);
|
duty_cycle = findViewById(R.id.duty_cycle);
|
stop = findViewById(R.id.stop);
|
|
|
play.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
periodBuf = period.getText().toString();
|
dutyBuf = duty_cycle.getText().toString();
|
|
if(periodBuf.isEmpty() || dutyBuf.isEmpty()){
|
periodBuf = period.getHint().toString();
|
dutyBuf = duty_cycle.getHint().toString();
|
period.setText(periodBuf);
|
duty_cycle.setText(dutyBuf);
|
}
|
// 打开pwmchip2/pwm0
|
rv = buzzerControl.pwmOpen("2");
|
if (rv == 1) {
|
// 表示缺少权限
|
Toast.makeText(BuzzerActivity.this, "请添加/sys/class/pwm/pwmchip2/export的权限", Toast.LENGTH_SHORT).show();
|
}else if( rv < 0 ){
|
Toast.makeText(BuzzerActivity.this, "打开PWM失败", Toast.LENGTH_SHORT).show();
|
} else {
|
// 首先设置周期
|
rv = buzzerControl.pwmConfig("period", periodBuf);
|
if (rv == 1) {
|
// 表示缺少权限
|
Toast.makeText(BuzzerActivity.this, "请添加/sys/class/pwm/pwmchip2/pwm0/period的权限", Toast.LENGTH_SHORT).show();
|
} else if (rv == 2) {
|
Toast.makeText(BuzzerActivity.this, "周期的值无效,请重新输入", Toast.LENGTH_SHORT).show();
|
}else if (rv < 0) {
|
Toast.makeText(BuzzerActivity.this, "设置周期失败", Toast.LENGTH_SHORT).show();
|
}else {
|
// 其次设置占空比
|
rv = buzzerControl.pwmConfig("duty_cycle", dutyBuf);
|
if (rv == 1) {
|
// 表示缺少权限
|
Toast.makeText(BuzzerActivity.this, "请添加/sys/class/pwm/pwmchip2/pwm0/duty_cycle的权限", Toast.LENGTH_SHORT).show();
|
} else if (rv == 2) {
|
Toast.makeText(BuzzerActivity.this, "占空比的值无效,请重新输入", Toast.LENGTH_SHORT).show();
|
}
|
if (rv < 0) {
|
Toast.makeText(BuzzerActivity.this, "设置占空比失败", Toast.LENGTH_SHORT).show();
|
} else {
|
// 最后使能pwm
|
rv = buzzerControl.pwmConfig("enable", "1");
|
if (rv == 1) {
|
// 表示缺少权限
|
Toast.makeText(BuzzerActivity.this, "请添加/sys/class/pwm/pwmchip2/pwm0/enable的权限", Toast.LENGTH_SHORT).show();
|
} else if (rv < 0) {
|
Toast.makeText(BuzzerActivity.this, "使能PWM失败", Toast.LENGTH_SHORT).show();
|
} else
|
Toast.makeText(BuzzerActivity.this, "打开PWM, 正在播放", Toast.LENGTH_SHORT).show();
|
}
|
}
|
}
|
}
|
});
|
|
stop.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
rv = buzzerControl.pwmConfig("enable", "0");
|
if( rv < 0 || rv == 1 || rv == 2)
|
Toast.makeText(BuzzerActivity.this, "禁止PWM失败", Toast.LENGTH_SHORT).show();
|
else {
|
Toast.makeText(BuzzerActivity.this, "禁止PWM,暂停播放", Toast.LENGTH_SHORT).show();
|
}
|
}
|
});
|
|
}
|
}
|