【오픈 소스】 DWIN 화면 및 Android 휴대폰 양방향 연결 제어 음악 재생

–DWIN 개발자 포럼에서

이번 호는 수상 경력이 있는 DWIN 개발자 포럼의 오픈 소스 사례인 DWIN 화면과 Android 휴대폰 양방향 연결 제어 음악 재생을 푸시하기 위한 것입니다. 엔지니어는 Bluetooth 모듈을 통해 DWIN 지능형 화면과 Android 휴대폰 데이터 상호 작용을 달성하고 사용자는 Android 휴대폰, 노래 재생 중 USB 플래시 드라이브, 일시 중지, 노래 및 사운드 설정 변경, 지능형 화면 및 Android 휴대폰 2개를 쉽게 제어할 수 있습니다. 방법은 편리한 제어입니다.

1.C51 디자인
(1) T5L 직렬 포트는 Bluetooth 모듈과 상호 작용하여 재생 상태를 수정하고, 볼륨을 설정하고, Bluetooth 상태를 읽습니다. 참조 코드의 일부는 다음과 같습니다.
정수 메인(공허)
{
INIT_CPU();
T2_열();
UART4_Init();
개=1;
//UART4_SendStr("안녕하세요",sizeof("안녕하세요"));
//WDT_ON();//워치독을 켭니다.
동안(1)
{
//WDT_RST();//개 발을 뻗으세요
프로세스();
}
}
무효 UART4_Init(무효)
{
// UART4 전송 속도 설정:
//BODE2_DIV_H=CPU 주 주파수/(8*전송 속도) .
//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 전송 속도
//BODE2_DIV_H=0×00;
//FCLK/(8*DIV)
//BODE2_DIV_L=0×70;
//ES3T=1;
ES2R=1;
개=1;
}
무효 TenMsHandle(void)
{
if(!TenmsFlag)
반품;
Tenms플래그=0;
SourcePress();//톤 생성기
PlayCtrPress();//재생 상태 변경
VolCtrSlider();//볼륨 변경
VolLogSlider();//볼륨 변경
ReadBtState();//블루투스 상태 읽기
}
무효 소스프레스(void)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3000,터치키,1);
if(터치키[1]==0)
반품;
S데이터[1]=0;
스위치(터치키[1])
{
case1://U디스크
S데이터[0]=1;
SendDataToBT(Write_Run_Mode,Sdata,1);
부서지다;
case2:// 외부 LineIn 입력
S데이터[0]=2;
SendDataToBT(Write_Run_Mode,Sdata,1);
부서지다;
케이스3://블루투스
S데이터[0]=3;
SendDataToBT(Write_Run_Mode,Sdata,1);
부서지다;
}
write_dgusii_vp(0×3003,터치키,1);
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3000,터치키,1);
ReadBtStatecount=0;
}
무효 PlayCtrPress(무효)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3001,터치키,1);
if(터치키[1]==0)
반품;
S데이터[1]=0;
스위치(터치키[1])
{
case1:// 이전곡
S데이터[0]=1;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
부서지다;
case2:// 재생 일시 정지
S데이터[0]=2;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
부서지다;
case3:// 다음곡
S데이터[0]=3;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
부서지다;
}
memset(TouchKey,0,sizeof(TouchKey));
write_dgusii_vp(0×3001,터치키,1);
ReadBtStatecount=0;
}

(2) Android 소프트웨어 패키지는 QT를 통해 작성되었으며 주로 스마트 화면과의 Bluetooth 연결 및 통신 제어를 실현하며 참조 코드의 일부는 다음과 같습니다.
ui->setupUi(this);
bluetooth_ble_Tool=new Bluetooth_ble_Tool(“dwin_bt(BLE)”);
ui->label_localBT_Name->setText(bluetooth_ble_Tool->getLocalName());
연결(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueSearchConnectState,
this,&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=새로운 메인윈();
적게->숨기기();
connect(mwin,&mainwin:layChangeMode,
devicecommHandle,&DeviceComm:layChangeMode);// 쓰기 모드 변경이 실행됨
연결(mwin,&mainwin:layCtrPreNextSt,
devicecommHandle,&DeviceComm:layCtrPreNextSt);// 켜져 있습니다. 노래의 윗부분과 아랫부분을 적어보세요
connect(mwin,&mainwin:layMusicVolChange,
devicecommHandle,&DeviceComm:layMusicVolChange);// 볼륨 변경 쓰기
connect(devicecommHandle,&DeviceComm::ReadPlayMode,
this,[=](int mode){// 현재 모드 설정
qDebug() q디버그() B_Upan->setChecked(false);
mwin->B_AUX->setChecked(false);
mwin->B_BT->setChecked(false);
if(모드==1)
mwin->B_Upan->setChecked(true);
그렇지 않은 경우(모드==2)
mwin->B_AUX->setChecked(true);
그렇지 않은 경우(모드==3)
mwin->B_BT->setChecked(true);
});
connect(devicecommHandle,&DeviceComm::ReadPlayMusicVol,
this,[=](int vol){// 볼륨 표시 설정
mwin->QS_MainVol->setValue(vol);
});
연결(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BLE_Link_error,
이,[=](){
this->show();
적게->숨기기();
devicecommHandle->TimerStopReadDeviceST();
this->ui->progressBar->setValue(0);
});
무효 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(“검색 중”);
connect(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueBLE_FindDevicefinished,
이것,[=](bool ok){
ui->pushButton->setEnabled(true);
ui->pushButton->setText(“연결된 블루투스 감지 시작”);
if(ok==false) {
QMessageBox::information(this,tr(“검색 상태 “),” 해당 기기를 검색할 수 없습니다. 해당 기기가 이미 켜져 있는지, 아니면 다른 휴대폰이 이미 연결되어 있는지 확인해주세요.”);} }); }
void BLE_PairPage::BlueSearchConnectState(Bluetooth_ble_Tool::startStateprogressBar_em Linkst, int 진행){
ui->progressBar->setValue(진행);
if(Linkst>=Bluetooth_ble_Tool::Ble_OtherError){
QMessageBox::information(this,tr(“연결 프롬프트”),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(“연결 프롬프트 “),” 버그가 있음 “);
ui->label_tips->setText("버기");}
else if(Linkst==Bluetooth_ble_Tool::Ble_Connect_characterOk){// QMessageBox::정보(
this,tr(“성공적으로 연결되었습니다.”),bluetooth_ble_Tool->getErrorinfo());
ui->label_tips->setText("성공적으로 연결되었습니다");
this->hide();
mwin->show();
devicecommHandle->TimerStartReadDeviceST(100);
//btchat->show();
//disconnect(bluetooth_ble_Tool,&Bluetooth_ble_Tool::BlueSearchConnectState,
//this,&BLE_PairPage::BlueSearchConnectState); }
또 다른{
ui->label_tips->setText(“연결 검색 중”); }


게시 시간: 2024년 5월 23일