【Open Source】 Ekran DWIN i telefon z systemem Android Dwukierunkowe sterowanie odtwarzaniem muzyki

– Z Forum programistów DWIN

W tym numerze przedstawiamy wielokrotnie nagradzany przypadek open source na forum programistów DWIN – dwukierunkowe sterowanie odtwarzaniem muzyki za pomocą ekranu DWIN i telefonu z systemem Android. Inżynierowie za pomocą modułu Bluetooth osiągnęli interakcję z inteligentnym ekranem DWIN i danymi telefonu z systemem Android, użytkownicy mogą z łatwością sterować telefonem z systemem Android i dyskiem flash USB podczas odtwarzania utworu, wstrzymywać, zmieniać ustawienia utworu i dźwięku, korzystać z inteligentnego ekranu i telefonu z systemem Android dwa- sposób wygodne sterowanie.

1.C51 Projekt
(1) Port szeregowy T5L współdziała z modułem Bluetooth w celu modyfikacji stanu odtwarzania, ustawienia głośności i odczytania stanu Bluetooth. Część kodu referencyjnego jest następująca:
int main(void)
{
INIT_CPU();
T2_Ciepło();
UART4_Init();
EA=1;
//UART4_SendStr(„cześć”,sizeof(„witaj”));
//WDT_ON();//Włącz Watchdog.
podczas gdy(1)
{
//WDT_RST();//Postaw psu stopę
Proces();
}
}
nieważne UART4_Init(puste)
{
// Ustawienie szybkości transmisji UART4:
//BODE2_DIV_H=Częstotliwość sieciowa procesora/(8*szybkość transmisji) .
//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 Szybkość transmisji
//BODE2_DIV_H=0×00;
//FCLK/(8*DZIEL)
//BODE2_DIV_L=0×70;
//ES3T=1;
ES2R=1;
EA=1;
}
void TenMsHandle(void)
{
if(!TenmsFlag)
powrót;
Flaga Tenms=0;
SourcePress();//Generator tonów
PlayCtrPress();//Zmiana stanu odtwarzania
VolCtrSlider();//Zmiana głośności
VolLogSlider();//Zmiana głośności
ReadBtState();//Odczytaj stan Bluetooth
}
void SourcePress(void)
{
charTouchKey[2]={0,0};
u8Sdane[2];
read_dgusii_vp(0×3000,Klucz dotykowy,1);
if(Klawisz dotykowy[1]==0)
powrót;
Dane[1]=0;
przełącznik (TouchKey [1])
{
case1://U dysku
Dane[0]=1;
SendDataToBT(Write_Run_Mode,Sdata,1);
przerwa;
case2:// Zewnętrzne wejście liniowe
Dane[0]=2;
SendDataToBT(Write_Run_Mode,Sdata,1);
przerwa;
case3://Bluetooth
Dane[0]=3;
SendDataToBT(Write_Run_Mode,Sdata,1);
przerwa;
}
write_dgusii_vp(0×3003,TouchKey,1);
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3000,TouchKey,1);
OdczytBtStatecount=0;
}
unieważnij PlayCtrPress (unieważnij)
{
charTouchKey[2]={0,0};
u8Sdane[2];
read_dgusii_vp(0×3001,TouchKey,1);
if(Klawisz dotykowy[1]==0)
powrót;
Dane[1]=0;
przełącznik (TouchKey [1])
{
case1:// Poprzedni utwór
Dane[0]=1;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
przerwa;
case2:// Pauza w odtwarzaniu
Dane[0]=2;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
przerwa;
case3:// Następna piosenka
Dane[0]=3;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
przerwa;
}
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3001,TouchKey,1);
OdczytBtStatecount=0;
}

(2) Pakiet oprogramowania Android został napisany w systemie QT i obsługuje głównie połączenie Bluetooth i kontrolę komunikacji za pomocą inteligentnego ekranu. Część kodu referencyjnego jest następująca:
ui->setupUi(to);
bluetooth_ble_Tool=nowe narzędzie 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=nowy BtChat();
//btchat->set_ble_Tool(bluetooth_ble_Tool);
//btchat->init_Page();
//btchat->ukryj();
urządzeniecommHandle=nowe urządzenieComm();
urządzeniecommHandle->set_ble_Tool(bluetooth_ble_Tool);
urzadzeniecommHandle->InitDevice();
mwin=nowa głównawina();
mniej->ukryj();
połącz(mwin,&mainwin:layChangeMode,
DevicecommHandle,&DeviceComm:layChangeMode);// Wydano zmianę trybu zapisu
połącz(mwin,&mainwin:layCtrPreNextSt,
DevicecommHandle,&DeviceComm:layCtrPreNextSt);// dosł. zapisz górną i dolną część utworu
połącz(mwin,&mainwin:layMusicVolChange,
DevicecommHandle,&DeviceComm:layMusicVolChange);//Zapisz zmianę głośności w dół
connect(devicecommHandle,&DeviceComm::ReadPlayMode,
this,[=](int mode){// Ustawianie bieżącego trybu
qDebug() qDebug() B_Upan->setChecked(false);
mwin->B_AUX->setChecked(false);
mwin->B_BT->setChecked(false);
if(tryb==1)
mwin->B_Upan->setChecked(true);
inaczej if(tryb==2)
mwin->B_AUX->setChecked(true);
inaczej if(tryb==3)
mwin->B_BT->setChecked(true);
});
connect(devicecommHandle,&DeviceComm::ReadPlayMusicVol,
this,[=](int vol){// Ustawianie wyświetlania głośności
mwin->QS_MainVol->setValue(objętość);
});
connect(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BLE_Link_error,
to,[=](){
to->pokaż();
mniej->ukryj();
DevicecommHandle->TimerStopReadDeviceST();
this->ui->progressBar->setValue(0);
});
unieważnij 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(“Wyszukiwanie”);
connect(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueBLE_FindDevicefinished,
to,[=](bool ok){
ui->pushButton->setEnabled(true);
ui->pushButton->setText(„Rozpocznij wykrywanie podłączonego Bluetooth „);
if(ok==false) {
QMessageBox::information(this,tr(„Status wyszukiwania „),” Nie można przeszukać urządzenia, sprawdź, czy urządzenie jest już włączone lub czy jest już z nim podłączony inny telefon komórkowy?”);} }); }
void BLE_PairPage::BlueSearchConnectState(Bluetooth_ble_Tool::startStateprogressBar_em Linkst, ciągły postęp){
ui->progressBar->setValue(postęp);
if(Linkst>=Bluetooth_ble_Tool::Ble_OtherError){
QMessageBox::information(this,tr(“monit o połączenie”),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(“monit o połączenie”),”buggy”);
ui->label_tips->setText(“buggy”);}
else if(Linkst==Bluetooth_ble_Tool::Ble_Connect_characterOk){// QMessageBox::information(
this,tr(“pomyślnie połączono”),bluetooth_ble_Tool->getErrorinfo());
ui->label_tips->setText(“pomyślnie połączono”);
to->ukryj();
mwin->pokaż();
DevicecommHandle->TimerStartReadDeviceST(100);
//btchat->pokaż();
//disconnect(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueSearchConnectState,
//this,&BLE_PairPage::BlueSearchConnectState); }
w przeciwnym razie{
ui->label_tips->setText(“Wyszukiwanie połączeń”); }


Czas publikacji: 23 maja 2024 r