首页 新闻 会员 周边 捐助

C#上位机控制下位机——下位机的代码问题

-1
悬赏园豆:40 [待解决问题]

课设deadline马上就要到了!可是有个重要功能始终搞不出来!跪求各位路过的大神帮帮忙TT

需实现功能:上位机(visual studio)窗体控制下位机(stm32)播放mp3

上位机发送C到串口,下位机接受到0x43 则切换上一曲

上位机发送D到串口,下位机接受到0x44 则切换下一曲

问题:我把下位机接收数据的代码放在了mp3player.c中控制切换曲目,用上位机控制的时候完全没反应,好像没收到上位机发的数据。。

下位机接收数据控制切换曲目:(mp3player.c)
if
(USART_RX_STA&0x8000) { if(USART_RX_BUF[0]==0x43) //上一曲
                     {
                    
                       if(curindex)curindex--;                               
               else curindex=totmp3num-1;    delay_ms(300);    USART_RX_STA=0; } else if(USART_RX_BUF[0]==0x44) //下一曲 { if(curindex<totmp3num) curindex++; else if(curindex>=totmp3num)curindex=0; delay_ms(300); USART_RX_STA=0; } }

然后我把这段换成了简单的上位机控制下位机点灯(LED1)的程序依旧放在mp3player.c 中

 if(USART_RX_STA&0x8000)
                {
                
                    if(USART_RX_BUF[0]==0x43)        
                     {
                              LED1=0;
                            delay_ms(300);
                            USART_RX_STA=0;
                        }
                    else if(USART_RX_BUF[0]==0x44)
                    {
                              LED1=1;
                        delay_ms(300);
                        USART_RX_STA=0;
                    }
                }

还是没反应。。

接着我把这段注释掉,然后粘贴点灯程序到main.c中,再把播放音乐的功能都注释掉了。。发现虽然要多点几次点灯button 不过还是有反应的。此时上位机窗体可以控制下位机上LED1的亮灭。

//        Show_Str(60,170,200,16,"正弦波调试.",16,0);
//         VS_Sine_Test();       
//        Show_Str(60,170,200,16,"<<MP3播放器>>",16,0); 
//        begin_min = calendar.min;
//        mp3_play();
   if(USART_RX_STA&0x8000)
                {
                
                    if(USART_RX_BUF[0]==0x43)        
                     {
                              LED1=0;
                    
//                                if(curindex)curindex--;
//                                else curindex=totmp3num-1;
//                                if(curindex>0)curindex--;//2017/9/30
//                                else if(curindex==0)  curindex=totmp3num-1;
                            
                            delay_ms(300);
                            USART_RX_STA=0;
                        }
                    else if(USART_RX_BUF[0]==0x44)
                    {
                        
//                                    if(curindex<totmp3num) curindex++;               
//                                   else if(curindex>=totmp3num)curindex=0;
                              LED1=1;
                               delay_ms(300);
                              USART_RX_STA=0;
                    }
                }

 

但是当我恢复mp3播放功能后,main.c 中的点灯程序也没法用上位机控制了。mp3是可以正常播放音乐的,但是没法切歌了。实在不明白为什么实现不了切歌的功能。

 上位机(visual studio的代码):
private void button1_Click(object sender, EventArgs e) { if (port1.IsOpen == true) { port1.DiscardOutBuffer(); port1.WriteLine("C\r\n"); // port1.Close(); } else { port1.Open(); port1.DiscardOutBuffer(); port1.WriteLine("C\r\n"); // port1.Close(); } } private void button3_Click(object sender, EventArgs e) { if (port1.IsOpen == true) { port1.DiscardOutBuffer(); port1.WriteLine("D\r\n"); //port1.Close(); } else { port1.Open(); port1.DiscardOutBuffer(); port1.WriteLine("D\r\n"); // port1.Close(); }
C#C
Pyy0123的主页 Pyy0123 | 初学一级 | 园豆:146
提问于:2017-09-30 16:59
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册