【مصدر مفتوح】 شاشة DWIN وهاتف Android ثنائي الاتجاه للتحكم في تشغيل الموسيقى

-من منتدى مطوري DWIN

هذه المشكلة لك لدفع الحالة مفتوحة المصدر الحائزة على جوائز لمنتدى مطوري DWIN - شاشة DWIN وهاتف Android ثنائي الاتجاه للتحكم في تشغيل الموسيقى. المهندسون من خلال وحدة البلوتوث لتحقيق تفاعل شاشة DWIN الذكية وبيانات هاتف Android، يمكن للمستخدمين التحكم بسهولة في هاتف Android ومحرك أقراص فلاش USB في تشغيل الأغنية والإيقاف المؤقت وتغيير إعدادات الأغنية والصوت وتجربة الشاشة الذكية وهاتف Android ثنائي- طريقة تحكم مريحة.

1.C51 التصميم
(1) يتفاعل المنفذ التسلسلي T5L مع وحدة Bluetooth لتعديل حالة التشغيل وضبط مستوى الصوت وقراءة حالة Bluetooth، ويكون جزء من الرمز المرجعي كما يلي:
إنت الرئيسي (باطل)
{
INIT_CPU();
T2_Heat();
UART4_Init();
إي = 1؛
//UART4_SendStr("hello"،sizeof("hello"));
//WDT_ON();// قم بتشغيل الوكالة الدولية للطاقة.
بينما(1)
{
//WDT_RST();// قدم الكلب
عملية()؛
}
}
باطلة UART4_Init (باطلة)
{
// إعداد معدل الباود UART4:
//BODE2_DIV_H=تردد وحدة المعالجة المركزية الرئيسية/(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 (باطلة)
{
إذا (!TenmsFlag)
يعود؛
TenmsFlag=0;
SourcePress();//مولد النغمات
PlayCtrPress();// تغيير حالة التشغيل
VolCtrSlider();//تغيير مستوى الصوت
VolLogSlider();//تغيير مستوى الصوت
ReadBtState();//اقرأ حالة البلوتوث
}
باطلة SourcePress(باطلة)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3000,TouchKey,1);
إذا (مفتاح اللمس[1]==0)
يعود؛
Sdata[1]=0;
التبديل (مفتاح اللمس [1])
{
الحالة 1: // يو القرص
Sdata[0]=1;
SendDataToBT(Write_Run_Mode,Sdata,1);
استراحة؛
الحالة 2: // إدخال LineIn الخارجي
Sdata[0]=2;
SendDataToBT(Write_Run_Mode,Sdata,1);
استراحة؛
الحالة 3: // بلوتوث
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(باطلة)
{
charTouchKey[2]={0,0};
u8Sdata[2];
read_dgusii_vp(0×3001,TouchKey,1);
إذا (مفتاح اللمس[1]==0)
يعود؛
Sdata[1]=0;
التبديل (مفتاح اللمس [1])
{
الحالة 1: // الأغنية السابقة
Sdata[0]=1;
SendDataToBT(Write_Next_Pre_PT,Sdata,1);
استراحة؛
الحالة 2: // إيقاف التشغيل مؤقتًا
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 والتحكم في الاتصال مع الشاشة الذكية، وجزء من الرمز المرجعي هو كما يلي:
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=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();
أقل->إخفاء();
الاتصال (mwin،&mainwin:layChangeMode،
DevicecommHandle,&DeviceComm:layChangeMode);// تم إصدار تغيير وضع الكتابة
ربط (mwin،&mainwin:layCtrPreNextSt،
DevicecommHandle,&DeviceComm:layCtrPreNextSt);// lit. اكتب الأجزاء العلوية والسفلية من الأغنية
ربط (mwin،&mainwin:layMusicVolChange،
DevicecommHandle,&DeviceComm:layMusicVolChange);// اكتب تغيير مستوى الصوت لأسفل
الاتصال (devicecommHandle،&DeviceComm::ReadPlayMode،
هذا،[=](وضع int){// ضبط الوضع الحالي
qDebug() qDebug() B_Upan->setChecked(false);
mwin->B_AUX->setChecked(false);
mwin->B_BT->setChecked(false);
إذا (الوضع == 1)
mwin->B_Upan->setChecked(true);
وإلا إذا (الوضع == 2)
mwin->B_AUX->setChecked(true);
وإلا إذا (الوضع == 3)
mwin->B_BT->setChecked(true);
});
الاتصال (devicecommHandle،&DeviceComm::ReadPlayMusicVol،
هذا،[=](int vol){// ضبط عرض مستوى الصوت
mwin->QS_MainVol->setValue(vol);
});
الاتصال (Bluetooth_ble_Tool،&Bluetooth_ble_Tool::BLE_Link_error،
هذا،[=](){
هذا->إظهار();
أقل->إخفاء();
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("البحث");
الاتصال (bluetooth_ble_Tool،&Bluetooth_ble_Tool::BlueBLE_FindDevicefinished،
هذا،[=](منطقي حسنًا){
ui->pushButton->setEnabled(true);
ui->pushButton->setText("ابدأ في اكتشاف Bluetooth المتصل");
إذا (حسنا == خطأ) {
QMessageBox::information(this,tr("Search Status ")"، لا يمكن البحث في الجهاز، يرجى التحقق مما إذا كان الجهاز قيد التشغيل بالفعل، أو إذا كان هناك هاتف خلوي آخر متصل به بالفعل؟");} }); }
باطلة BLE_PairPage::BlueSearchConnectState(Bluetooth_ble_Tool::startStateprogressBar_em Linkst, intprogress){
ui->progressBar->setValue(progress);
إذا(Linkst>=Bluetooth_ble_Tool::Ble_OtherError){
QMessageBox::information(this,tr("connection موجه "),bluetooth_ble_Tool->getErrorinfo());
ui->label_tips->setText(bluetooth_ble_Tool->getErrorinfo());}
وإلا إذا (Linkst>=Bluetooth_ble_Tool::Ble_Deconnect_device){
QMessageBox::information(this,tr("موجه الاتصال"),"عربات التي تجرها الدواب");
ui->label_tips->setText("buggy");}
وإلا إذا (Linkst==Bluetooth_ble_Tool::Ble_Connect_characterOk){// QMessageBox::information(
this,tr("تم الاتصال بنجاح "),bluetooth_ble_Tool->getErrorinfo());
ui->label_tips->setText("تم الاتصال بنجاح");
هذا->إخفاء();
mwin->show();
DevicecommHandle->TimerStartReadDeviceST(100);
//btchat->show();
// قطع الاتصال (bluetooth_ble_Tool،&Bluetooth_ble_Tool::BlueSearchConnectState،
//هذا,&BLE_PairPage::BlueSearchConnectState); }
آخر{
ui->label_tips->setText("البحث عن الاتصالات"); }


وقت النشر: 23 مايو 2024