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(); } } }); } }