- ຈາກ DWIN Developer Forum
ບັນຫານີ້ສໍາລັບທ່ານທີ່ຈະຊຸກດັນໃຫ້ກໍລະນີ open-source ທີ່ໄດ້ຮັບລາງວັນຂອງກອງປະຊຸມຜູ້ພັດທະນາ DWIN – ຫນ້າຈໍ DWIN ແລະໂທລະສັບ Android ສອງທາງເຊື່ອມຕໍ່ການຄວບຄຸມການຫຼິ້ນດົນຕີ. ວິສະວະກອນຜ່ານໂມດູນ Bluetooth ເພື່ອບັນລຸຫນ້າຈໍອັດສະລິຍະ DWIN ແລະການໂຕ້ຕອບຂໍ້ມູນໂທລະສັບ Android, ຜູ້ໃຊ້ສາມາດຄວບຄຸມໂທລະສັບ Android ໄດ້ຢ່າງງ່າຍດາຍ, USB flash drive ໃນການຫຼີ້ນເພງ, ຢຸດຊົ່ວຄາວ, ປ່ຽນການຕັ້ງຄ່າເພງແລະສຽງ, ປະສົບການຫນ້າຈໍອັດສະລິຍະແລະໂທລະສັບ Android ສອງ. ວິທີການຄວບຄຸມສະດວກ.
1.C51 ການອອກແບບ
(1) ພອດ serial T5L ໂຕ້ຕອບກັບໂມດູນ Bluetooth ເພື່ອແກ້ໄຂສະຖານະການຫຼິ້ນ, ຕັ້ງຄ່າລະດັບສຽງ, ແລະອ່ານສະຖານະ Bluetooth, ສ່ວນຂອງລະຫັດອ້າງອີງມີດັ່ງນີ້:
int main(void)
{
INIT_CPU();
T2_Heat();
UART4_Init();
EA=1;
//UART4_SendStr(“ສະບາຍດີ”,sizeof(“ສະບາຍດີ”));
//WDT_ON();//ເປີດ Watchdog.
ໃນຂະນະທີ່ (1)
{
//WDT_RST();//ຕີນໝາ
ຂະບວນການ();
}
}
void UART4_Init(void)
{
// UART4 ອັດຕາ Baud:
//BODE2_DIV_H=ຄວາມຖີ່ CPU Mains/(8*Baud rate).
//206438400/8/115200=224=0xe0
//206438400/8/921600=28=0x1C
//206438400/8=25804800/230400=112=0×70
SCON2T=0×80;
SCON2R=0×80;
BODE2_DIV_H=0×00;//FCLK/(8*DIV)
BODE2_DIV_L=0xe0;// 921600 ອັດຕາ Baud
//BODE2_DIV_H=0×00;
//FCLK/(8*DIV)
//BODE2_DIV_L=0×70;
//ES3T=1;
ES2R=1;
EA=1;
}
TenMsHandle(void)
{
ຖ້າ(!TenmsFlag)
ກັບຄືນ;
TenmsFlag=0;
SourcePress();//ເຄື່ອງກໍາເນີດສຽງ
PlayCtrPress();// ການປ່ຽນສະຖານະການຫຼິ້ນ
VolCtrSlider();// ການປ່ຽນແປງປະລິມານ
VolLogSlider();// ການປ່ຽນແປງປະລິມານ
ReadBtState();// ອ່ານສະຖານະ Bluetooth
}
void SourcePress(void)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3000,TouchKey,1);
ຖ້າ(TouchKey[1]==0)
ກັບຄືນ;
Sdata[1]=0;
ສະຫຼັບ(TouchKey[1])
{
case1://U disk
Sdata[0]=1;
SendDataToBT(Write_Run_Mode,Sdata,1);
ພັກຜ່ອນ;
case2:// ການປ້ອນຂໍ້ມູນ LineIn ພາຍນອກ
Sdata[0]=2;
SendDataToBT(Write_Run_Mode,Sdata,1);
ພັກຜ່ອນ;
case3://Bluetooth
Sdata[0]=3;
SendDataToBT(Write_Run_Mode,Sdata,1);
ພັກຜ່ອນ;
}
write_dgusii_vp(0×3003,TouchKey,1);
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3000,TouchKey,1);
ReadBtStatecount=0;
}
PlayCtrPress ຫວ່າງເປົ່າ(void)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3001,TouchKey,1);
ຖ້າ(TouchKey[1]==0)
ກັບຄືນ;
Sdata[1]=0;
ສະຫຼັບ(TouchKey[1])
{
case1:// ເພງກ່ອນໜ້າ
Sdata[0]=1;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
ພັກຜ່ອນ;
case2:// ຢຸດການຫຼິ້ນຊົ່ວຄາວ
Sdata[0]=2;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
ພັກຜ່ອນ;
case3:// ເພງຕໍ່ໄປ
Sdata[0]=3;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
ພັກຜ່ອນ;
}
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3001,TouchKey,1);
ReadBtStatecount=0;
}
(2) ຊຸດຊອບແວ Android ແມ່ນລາຍລັກອັກສອນໂດຍຜ່ານ QT, ສ່ວນໃຫຍ່ແມ່ນການຮັບຮູ້ການເຊື່ອມຕໍ່ Bluetooth ແລະການຄວບຄຸມການສື່ສານກັບຫນ້າຈໍ smart, ສ່ວນຫນຶ່ງຂອງລະຫັດອ້າງອີງແມ່ນດັ່ງຕໍ່ໄປນີ້:
ui->setupUi(ນີ້);
bluetooth_ble_Tool=ໃໝ່ Bluetooth_ble_Tool(“dwin_bt(BLE)”);
ui->label_localBT_Name->setText(bluetooth_ble_Tool->getLocalName());
ເຊື່ອມຕໍ່(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueSearchConnectState,
ນີ້,&BLE_PairPage::BlueSearchConnectState);
//btchat=ໃໝ່ BtChat();
//btchat->set_ble_Tool(bluetooth_ble_Tool);
//btchat->init_Page();
// btchat->hide();
devicecommHandle=ໃໝ່ DeviceComm();
devicecommHandle->set_ble_Tool(bluetooth_ble_Tool);
devicecommHandle->InitDevice();
mwin=new mainwin();
less->hide();
ເຊື່ອມຕໍ່(mwin,&mainwin:layChangeMode,
devicecommHandle,&DeviceComm:layChangeMode);// ການປ່ຽນຮູບແບບການຂຽນອອກແລ້ວ
ເຊື່ອມຕໍ່(mwin,&mainwin:layCtrPreNextSt,
devicecommHandle,&DeviceComm:layCtrPreNextSt);// lit. ຂຽນສ່ວນເທິງ ແລະລຸ່ມຂອງເພງ
ເຊື່ອມຕໍ່(mwin,&mainwin:layMusicVolChange,
devicecommHandle,&DeviceComm:layMusicVolChange);// ຂຽນການປ່ຽນແປງລະດັບສຽງລົງ
connect(devicecommHandle,&DeviceComm::ReadPlayMode,
ນີ້,[=](ໂໝດ int){// ຕັ້ງຄ່າໂໝດປັດຈຸບັນ
qDebug() qDebug()
mwin->B_AUX->setChecked(false);
mwin->B_BT->setChecked(false);
ຖ້າ(ໂໝດ==1)
mwin->B_Upan->setChecked(ຈິງ);
ອື່ນຖ້າ(mode==2)
mwin->B_AUX->setChecked(true);
ອື່ນຖ້າ(mode==3)
mwin->B_BT->setChecked(true);
});
ເຊື່ອມຕໍ່(devicecommHandle,&DeviceComm::ReadPlayMusicVol,
ນີ້,[=](volume int){// ຕັ້ງຄ່າການສະແດງລະດັບສຽງ
mwin->QS_MainVol->setValue(vol);
});
ເຊື່ອມຕໍ່(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BLE_Link_error,
ນີ້,[=](){
this->show();
less->hide();
devicecommHandle->TimerStopReadDeviceST();
this->ui->progressBar->setValue(0);
});
void BLE_PairPage::on_pushButton_clicked(){
bluetooth_ble_Tool->SetOperUuidServer(QBluetoothUuid(serviceUuid));
//ui->label_localBT-> clear();
//ui->label_localBT_Name->setText(bluetooth_ble_Tool->getLocalName());
bluetooth_ble_Tool->startFindConnectBle();
//bluetooth_ble_Tool->startStateprogressBar();
ui->pushButton->setEnabled(false);
ui->pushButton->setText(“ຊອກຫາ”);
ເຊື່ອມຕໍ່(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueBLE_FindDevicefinished,
ນີ້,[=](bool ok){
ui->pushButton->setEnabled(ຈິງ);
ui->pushButton->setText(“ເລີ່ມກວດພົບ Bluetooth ທີ່ເຊື່ອມຕໍ່”);
ຖ້າ(ok==false) {
QMessageBox::information(this,tr(“Search Status “),” ອຸປະກອນບໍ່ສາມາດຊອກຫາໄດ້, ກະລຸນາກວດສອບວ່າອຸປະກອນໄດ້ເປີດຢູ່ແລ້ວຫຼືຍັງໂທລະສັບມືຖືອື່ນໄດ້ເຊື່ອມຕໍ່ກັບມັນແລ້ວບໍ?”);} }); }
void BLE_PairPage::BlueSearchConnectState(Bluetooth_ble_Tool::startStateprogressBar_em Linkst, ພວມດຳເນີນຢູ່){
ui->progressBar->setValue(ຄວາມຄືບໜ້າ);
ຖ້າ(Linkst>=Bluetooth_ble_Tool::Ble_OtherError){
QMessageBox::information(this,tr(“Connection prompt”),bluetooth_ble_Tool->getErrorinfo());
ui->label_tips->setText(bluetooth_ble_Tool->getErrorinfo());}
else if(Linkst>=Bluetooth_ble_Tool::Ble_Deconnect_device){
QMessageBox::information(this,tr(“Connection prompt “),” buggy“);
ui->label_tips->setText(“ບັກ”);}
else if(Linkst==Bluetooth_ble_Tool::Ble_Connect_characterOk){// QMessageBox::information(
ນີ້,tr(“ເຊື່ອມຕໍ່ຢ່າງສໍາເລັດຜົນ“), bluetooth_ble_Tool->getErrorinfo());
ui->label_tips->setText(“ເຊື່ອມຕໍ່ສຳເລັດແລ້ວ”);
this->ເຊື່ອງ();
mwin->show();
devicecommHandle->TimerStartReadDeviceST(100);
//btchat->show();
//disconnect(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueSearchConnectState,
//this,&BLE_PairPage::BlueSearchConnectState); }
ອື່ນ{
ui->label_tips->setText(“ຊອກຫາການເຊື່ອມຕໍ່“); }
ເວລາປະກາດ: 23-05-2024