【Open Source】 Ecranul DWIN și legătura bidirecțională a telefonului Android controlează redarea muzicii

–De la DWIN Developer Forum

Această problemă pentru tine de a împinge cazul premiat open-source al forumului pentru dezvoltatori DWIN – ecranul DWIN și legătura bidirecțională a telefonului Android controlează redarea muzicii. Inginerii prin modulul Bluetooth pentru a obține ecranul inteligent DWIN și interacțiunea cu datele telefonului Android, utilizatorii pot controla cu ușurință telefonul Android, unitatea flash USB în redarea melodiei, întrerupe, schimba setările melodiei și sunetului, experimentează ecranul inteligent și telefonul Android două- mod convenabil de control.

1.C51 Design
(1) Portul serial T5L interacționează cu modulul Bluetooth pentru a modifica starea redării, a seta volumul și a citi starea Bluetooth, o parte a codului de referință este după cum urmează:
int main(void)
{
INIT_CPU();
T2_Călduire();
UART4_Init();
EA=1;
//UART4_SendStr(„bună ziua”, dimensiunea(„bună ziua”));
//WDT_ON();//Porniți Watchdog.
în timp ce (1)
{
//WDT_RST();//În picioare câinele
Proces();
}
}
void UART4_Init(void)
{
// Setarea vitezei de transmisie UART4:
//BODE2_DIV_H=CPU Frecvența rețelei/(8*Rată baud) .
//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 rate
//BODE2_DIV_H=0×00;
//FCLK/(8*DIV)
//BODE2_DIV_L=0×70;
//ES3T=1;
ES2R=1;
EA=1;
}
void TenMsHandle(void)
{
dacă(!TenmsFlag)
întoarcere;
TenmsFlag=0;
SourcePress();//Generator de tonuri
PlayCtrPress();//Modificarea stării redării
VolCtrSlider();//Modificarea volumului
VolLogSlider();//Modificarea volumului
ReadBtState();//Citiți starea Bluetooth
}
void SourcePress(void)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3000,TouchKey,1);
dacă(Tasta tactilă[1]==0)
întoarcere;
Sdata[1]=0;
comutator(Tasta tactilă[1])
{
case1://U disc
Sdata[0]=1;
SendDataToBT(Write_Run_Mode,Sdata,1);
pauză;
case2:// Intrare externă LineIn
Sdata[0]=2;
SendDataToBT(Write_Run_Mode,Sdata,1);
pauză;
case3://Bluetooth
Sdata[0]=3;
SendDataToBT(Write_Run_Mode,Sdata,1);
pauză;
}
write_dgusii_vp(0×3003,TouchKey,1);
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3000,TouchKey,1);
ReadBtStatecount=0;
}
void PlayCtrPress(void)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3001,TouchKey,1);
dacă(Tasta tactilă[1]==0)
întoarcere;
Sdata[1]=0;
comutator(Tasta tactilă[1])
{
case1:// Melodia anterioară
Sdata[0]=1;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
pauză;
case2:// Pauză redare
Sdata[0]=2;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
pauză;
case3:// Următorul cântec
Sdata[0]=3;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
pauză;
}
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3001,TouchKey,1);
ReadBtStatecount=0;
}

(2) Pachetul software Android este scris prin QT, realizând în principal conexiunea Bluetooth și controlul comunicațiilor cu ecranul inteligent, o parte a codului de referință este după cum urmează:
ui->setupUi(this);
bluetooth_ble_Tool=nou Bluetooth_ble_Tool(„dwin_bt(BLE)”);
ui->label_localBT_Name->setText(bluetooth_ble_Tool->getLocalName());
connect(Bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueSearchConnectState,
this,&BLE_PairPage::BlueSearchConnectState);
//btchat=new BtChat();
//btchat->set_ble_Tool(bluetooth_ble_Tool);
//btchat->init_Page();
//btchat->hide();
devicecommHandle=new DeviceComm();
devicecommHandle->set_ble_Tool(bluetooth_ble_Tool);
devicecommHandle->InitDevice();
mwin=new mainwin();
mai puțin->ascunde();
connect(mwin,&mainwin:layChangeMode,
devicecommHandle,&DeviceComm:layChangeMode);// S-a emis modificarea modului de scriere
connect(mwin,&mainwin:layCtrPreNextSt,
devicecommHandle,&DeviceComm:layCtrPreNextSt);// aprins. notează părțile superioare și inferioare ale unui cântec
connect(mwin,&mainwin:layMusicVolChange,
devicecommHandle,&DeviceComm:layMusicVolChange);// Scrieți modificarea volumului în jos
connect(devicecommHandle,&DeviceComm::ReadPlayMode,
aceasta,[=](mod int){// Setarea modului curent
qDebug() qDebug() B_Upan->setChecked(false);
mwin->B_AUX->setChecked(false);
mwin->B_BT->setChecked(false);
dacă(mod==1)
mwin->B_Upan->setChecked(true);
altfel if(mod==2)
mwin->B_AUX->setChecked(true);
altfel if(mod==3)
mwin->B_BT->setChecked(true);
});
connect(devicecommHandle,&DeviceComm::ReadPlayMusicVol,
aceasta,[=](int vol){// Setarea afișajului volumului
mwin->QS_MainVol->setValue(vol);
});
connect(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BLE_Link_error,
aceasta,[=](){
asta->arata();
mai puțin->ascunde();
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(„Se caută”);
connect(Bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueBLE_FindDevicefinished,
asta,[=](bool ok){
ui->pushButton->setEnabled(true);
ui->pushButton->setText(„Începeți detectarea Bluetooth conectată”);
if(ok==false) {
QMessageBox::information(this,tr(“Search Status”),” Dispozitivul nu poate fi căutat, vă rugăm să verificați dacă dispozitivul este deja pornit sau dacă un alt telefon mobil este deja conectat la el?”);} }); }
void BLE_PairPage::BlueSearchConnectState(Bluetooth_ble_Tool::startStateprogressBar_em Linkst, int progres){
ui->progressBar->setValue(progres);
if(Linkst>=Bluetooth_ble_Tool::Ble_OtherError){
QMessageBox::information(this,tr(„conexiune 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(„conexiune promptă”),”buggy”);
ui->label_tips->setText(„buggy”);}
else if(Linkst==Bluetooth_ble_Tool::Ble_Connect_characterOk){// QMessageBox::information(
this,tr(„conectat cu succes”),bluetooth_ble_Tool->getErrorinfo());
ui->label_tips->setText(„conectat cu succes”);
asta->ascunde();
mwin->show();
devicecommHandle->TimerStartReadDeviceST(100);
//btchat->show();
//deconectează(Instrumentul_bluetooth_ble_Tool,&Instrumentul_Bluetooth_ble::BlueSearchConnectState,
//this,&BLE_PairPage::BlueSearchConnectState); }
altfel{
ui->label_tips->setText(„Se caută conexiuni”); }


Ora postării: 23-mai-2024