微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm32 NRF24L01+USART搞定有线和无线通信

stm32 NRF24L01+USART搞定有线和无线通信

时间:11-19 来源:互联网 点击:

Fun()



1 /****************************************************************************2 * 名    称:static void _cbCallback(WM_MESSAGE * pMsg)3 * 功    能:ucgui回调函数,是作为对话框动作响应的函数4 * 入口参数:无5 * 出口参数:无6 * 说    明:7 * 调用方法:8 ****************************************************************************/  9 static void _cbCallback(WM_MESSAGE * pMsg) {10   int NCode, Id;11   switch (pMsg->MsgId) {12     case WM_NOTIFY_PARENT:                          //通知父窗口有事件在窗口部件上发生13       Id    = WM_GetId(pMsg->hWinSrc);            //获得对话框窗口里发生事件的部件的ID14       NCode = pMsg->Data.v;                       //通知代码15       switch (NCode) {16         case WM_NOTIFICATION_RELEASED:            //窗体部件动作被释放             17           if (Id == GUI_ID_BUTTON2) {             //按键CLEAR被松开18             memcpy(status_buf, "", 20);              //清空状态文本缓冲区 19             memcpy(rx_buf, "", 32);                  //清空接收文本缓冲区         20             TEXT_SetText(text5,(const char *)status_buf);           //清空状态文本框    21             EDIT_SetText(edit2,(const char *)rx_buf);            //清空接收字符编辑框22             memcpy(tx_buf, "", 32);                //清空发送文本缓冲区23             NRF24L01_TXBUF(tx_buf,32);            //将发送字符缓冲区的字符通过NRF24L01发送出去        24           }          25           else if (Id == GUI_ID_BUTTON0) {      //按键SEND 被松开26               memcpy(tx_buf, "1234567890abcdefghij!@#$%^&*()-=", 32);      //将32字节的文本拷贝到发送文本缓冲区27             memcpy(rx_buf, "", 32);                //清空接收文本缓冲区     28             memcpy(status_buf, "", 20);            //清空状态文本缓冲区 29             EDIT_SetText(edit2,(const char *)rx_buf);            //清空接收字符编辑框    30             NRF24L01_TXBUF(tx_buf,32);            //将发送字符缓冲区的字符通过NRF24L01发送出去31             memcpy(tx_buf, "", 32);                //清空发送文本缓冲区32             TEXT_SetText(text5,(const char *)status_buf);        //清空状态文本框               33           }34           else if (Id == GUI_ID_RADIO0) {       //NRF24L01无线速率点选框点选动作完成35               nrf_baud= RADIO_GetValue(rd0);        //获得速率表示值36             RX_Mode();                            //进入接收模式            37           }38           else if (Id == GUI_ID_LISTBOX0){      //NRF24L01无线通道选择动作39             nrf_Pipe= LISTBOX_GetSel(list1);    //获得NRF24LL01无线通道表示值             40             RX_Mode();                           //进入接收模式     41           }else if(Id == GUI_ID_SLIDER1){       //slider1 的值被改变42             speed1=SLIDER_GetValue(slider1);//获得slider1的值43             if(speed1>0){44                speed_show[0]=+;45                speed_show[1]=0+speed1;46                control_data=8+speed1;47             }else if(speed1<0){48                speed_show[0]=-;49                speed_show[1]=0-speed1;50                control_data=16-speed1;51             }else{52                speed_show[0]= ;53                speed_show[1]=0;54                control_data=0;55             }56 //            USART_SendChar(USART1,control_data);57             TEXT_SetText(text_speed1,speed_show);58             speed_change_flag=1;                     59           }else if(Id == GUI_ID_SLIDER2){       //slider2 的值被改变60             speed2=SLIDER_GetValue(slider2);//获得slider2的值61             if(speed2>0){62                speed_show[0]=+;63                speed_show[1]=0+speed2;64                control_data=32+8+speed2;65             }else if(speed2<0){66                speed_show[0]=-;67                speed_show[1]=0-speed2;68                control_data=32+16-speed2;69             }else{70                speed_show[0]= ;71                speed_show[1]=0;72                control_data=0;73             }74             TEXT_SetText(text_speed2,speed_show);75             speed_change_flag=1;            76           }else if(Id == GUI_ID_SLIDER3){       //slider3 的值被改变77             speed3=SLIDER_GetValue(slider3);//获得slider3的值78             if(speed3>0){79                speed_show[0]=+;80                speed_show[1]=0+speed3;81                control_data=64+8+speed3;82             }else if(speed3<0){83                speed_show[0]=-;84                speed_show[1]=0-speed3;85                control_data=64+16-speed3;86             }else{87                speed_show[0]= ;88                speed_show[1]=0;89                control_data=0;90             }91             TEXT_SetText(text_speed3,speed_show);92             speed_change_flag=1;      93           }else if(Id == GUI_ID_SLIDER4){       //slider4 的值被改变94             speed4=SLIDER_GetValue(slider4);//获得slider4的值95             if(speed4>0){96                speed_show[0]=+;97                speed_show[1]=0+speed4;98                control_data=96+8+speed4;99             }else if(speed4<0){100                speed_show[0]=-;      101                speed_show[1]=0-speed4;102                control_data=96+16-speed4;103             }else{104                speed_show[0]= ;105                speed_show[1]=0;106                control_data=0;107             }108             TEXT_SetText(text_speed4,speed_show);109             speed_change_flag=1;      110           }else if(Id == GUI_ID_SLIDER5){       //slider5 的值被改变speed5=SLIDER_GetValue(slider5);//获得slider5的值112             if(speed5>0){113                speed_show[0]=+;114                speed_show[1]=0+speed5;115                control_data=128+8+speed5;116             }else if(speed5<0){117                speed_show[0]=-;118                speed_show[1]=0-speed5;119                control_data=128+16-speed5;120             }else{121                speed_show[0]= ;122                speed_show[1]=0;123                control_data=0;124             }125             TEXT_SetText(text_speed5,speed_show);126             speed_change_flag=1;      127           }128          break;129          default: break;130       }        131     default:132       WM_DefaultProc(pMsg);                        //默认程序来处理消息133       break;134   }135 }

窗口回调函数

1 /* 定义了对话框资源列表 */2 static const GUI_WIDGET_CREATE_INFO aDialogCreate[] = {3   //建立窗体, 大小是800X480  原点在0,04   { FRAMEWIN_CreateIndirect, "http://beautifulzzzz", 0,0,0, 800, 480, FRAMEWIN_CF_ACTIVE },5   { BUTTON_CreateIndirect,   "SEND",    GUI_ID_BUTTON0,       0,    395,  200,  55 },6  7   { BUTTON_CreateIndirect,   "CLEAR", GUI_ID_BUTTON2,   200,    395, 200,  55 },8   { EDIT_CreateIndirect,     "",       GUI_ID_EDIT1,    0,   190, 400,  65, EDIT_CF_LEFT, 50 },9   { EDIT_CreateIndirect,     "",       GUI_ID_EDIT2,    0,   290, 400,  65, EDIT_CF_LEFT, 50 },10   11   //建立TEXT控件,起点是窗体的X,X,大小XXY  文字左对齐12   { TEXT_CreateIndirect,     "Send Text Area",  GUI_ID_TEXT0,   1,   160,  400,  25, TEXT_CF_LEFT },13   { TEXT_CreateIndirect,     "Receive Text Area ",  GUI_ID_TEXT1,     1,   263,  400, 25, TEXT_CF_LEFT },14  15   { TEXT_CreateIndirect,     "2M bps",  GUI_ID_TEXT2,   23,   22,  140,  25, TEXT_CF_LEFT },16   { TEXT_CreateIndirect,     "1M bps",  GUI_ID_TEXT3,     23,   42,  140,  25, TEXT_CF_LEFT },17   { TEXT_CreateIndirect,     "250K bps",  GUI_ID_TEXT5,     23,   62,  140,  25, TEXT_CF_LEFT },18   19   { TEXT_CreateIndirect,     "",  GUI_ID_TEXT4,     0,   120,  400,  25, TEXT_CF_LEFT },20 21   { RADIO_CreateIndirect,     "Receive Mode",  GUI_ID_RADIO0,     3,   33,  40,  52, RADIO_TEXTPOS_LEFT,3},22 23   { LISTBOX_CreateIndirect,  "",       GUI_ID_LISTBOX0,  134,    13,  130,  90, 0, 0 },24 25    //建立滑块26   { SLIDER_CreateIndirect,   NULL,     GUI_ID_SLIDER1,  440,  60, 320, 25, 0, 0 },27   { SLIDER_CreateIndirect,   NULL,     GUI_ID_SLIDER2,  440,  120, 320, 25, 0, 0 },28   { SLIDER_CreateIndirect,   NULL,     GUI_ID_SLIDER3,  440,  180, 320, 25, 0, 0 },29   { SLIDER_CreateIndirect,   NULL,     GUI_ID_SLIDER4,  440,  240, 320, 25, 0, 0 },30   { SLIDER_CreateIndirect,   NULL,     GUI_ID_SLIDER5,  440,  300, 320, 25, 0, 0 },31   //建立滑块对应的text32   { TEXT_CreateIndirect,     "0",  GUI_ID_TEXT_SPEED1,   770,   60,   25,  25, TEXT_CF_LEFT },33   { TEXT_CreateIndirect,     "0",  GUI_ID_TEXT_SPEED2,   770,   120,  25,  25, TEXT_CF_LEFT },34   { TEXT_CreateIndirect,     "0",  GUI_ID_TEXT_SPEED3,   770,   180,  25,  25, TEXT_CF_LEFT },35   { TEXT_CreateIndirect,     "0",  GUI_ID_TEXT_SPEED4,   770,   240,  25,  25, TEXT_CF_LEFT },36   { TEXT_CreateIndirect,     "0",  GUI_ID_TEXT_SPEED5,   770,   300,  25,  25, TEXT_CF_LEFT },37 };

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top