[活动专区] 赛元易码魔盒体验14 ——综合测试

[复制链接]
948|6
 楼主| 一路向北lm 发表于 2020-8-14 15:38 | 显示全部楼层 |阅读模式
本帖最后由 一路向北lm 于 2020-8-14 15:43 编辑

为了综合测试使用魔盒生成的模块代码,本人使用Qt写了一个简单的界面,通过和赛元SC95F8617的串口进行通讯,简单控制自己这块基于SC95F8617的板卡的外设。界面如下:
95215f363f852c814.png

 楼主| 一路向北lm 发表于 2020-8-14 15:39 | 显示全部楼层
本着开源的精神,将Qt的界面开源,虽然此界面很简陋,也存在着一些bug,希望可以供Qt的初学爱好者来参考。
 楼主| 一路向北lm 发表于 2020-8-14 15:39 | 显示全部楼层
1.        上位机界面:
上位机软件分为通讯部分和操作控制部分。
通讯部分,主要包括串口的配置,这里就是串口端口的自动搜索、波特率的配置、数据位的配置、停止位的配置、校验位的配置。最小方的两个按钮,一个用于刷新新接入的端口,一个是打开和关闭串口操作。
289795f363fa592335.png
 楼主| 一路向北lm 发表于 2020-8-14 15:39 | 显示全部楼层
操作控制部分:主要是对LED的控制,打开板卡的LED的亮灭;对蜂鸣器的控制,打开板卡的蜂鸣器的开关;按键状态的检测;数码管四位数字的指定显示;实时ADC数字采集;EEPROM的指定地址和长度的读写等。
580245f363fb490858.png
 楼主| 一路向北lm 发表于 2020-8-14 15:40 | 显示全部楼层
2. SC95F8617 下位机Demo
此部分主要分为外设的初始化和串口数据的解析:这里初始化的GPIO、外部中断、ADC、串口、TWI、定时器等。
SC_GPIO_Init();
        SC_OPTION_Init();
        SC_INT_Init();
        SC_ADC_Init();
        SC_UART0_Init();
        SC_USCI0_Init();
        SC_TIM3_Init();


 楼主| 一路向北lm 发表于 2020-8-14 15:40 | 显示全部楼层
串口数据的解析。
  1. /*****************************************************
  2. *函数名称:void UartRecvAnalysisDeal(void)
  3. *函数功能:解析串口接收数据处理
  4. *入口参数:void
  5. *出口参数:void
  6. *****************************************************/
  7. void UartRecvAnalysisDeal(void)
  8. {
  9.     UartRecv();
  10.      if(RecvFlag==1) //判断是否接收完
  11.                  {
  12.                          RecvFlag = 0;
  13.                          Uart_Send_String(RecvBuf);
  14.                    if(RecvBuf[0] == '#') //判断启示标志位
  15.                          {
  16.                            //1.LED
  17.                                  if((RecvBuf[1]=='L')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='D'))
  18.                                  {
  19.                                     if (RecvBuf[4] == '0')
  20.                                                 {
  21.                                                    LED_OFF;
  22.                                                          Uart_Send_String("#LED0\r\n");
  23.                                                 }                                                       
  24.                                                        
  25.                                           if (RecvBuf[4] == '1')
  26.                                                 {
  27.                                                    LED_ON;
  28.                                                          Uart_Send_String("#LED1\r\n");  
  29.                                                 }                                                                                                       
  30.                                  }
  31.                                  //2.BEP
  32.                                  else if((RecvBuf[1]=='B')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='P'))
  33.                                  {
  34.                                     if (RecvBuf[4] == '0')
  35.                                                 {
  36.                                                    BEP_OFF;
  37.                                                          Uart_Send_String("#BEP0\r\n");
  38.                                                 }
  39.                                           if (RecvBuf[4] == '1')
  40.                                                 {
  41.                                                    BEP_ON;
  42.                                                          Uart_Send_String("#BEP1\r\n");  
  43.                                                 }                 
  44.                                  }                                 
  45.                                  //3.SMG
  46.                                  else if((RecvBuf[1]=='S')&&(RecvBuf[2]=='M')&&(RecvBuf[3]=='G'))
  47.                                  {
  48.                                     
  49.                                           num1 = RecvBuf[4] - 0x30;
  50.                                           num2 = RecvBuf[5] - 0x30;
  51.                                           num3 = RecvBuf[6] - 0x30;
  52.                                           num4 = RecvBuf[7] - 0x30;                                                                              
  53.                                  }                       
  54.                                  //5.EEPROM Write
  55.                                  else if((RecvBuf[1]=='E')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='P')&&(RecvBuf[4]=='W'))
  56.                                  {                                   
  57.             startaddr = (RecvBuf[5]-0x30)*100 +(RecvBuf[6]-0x30)*10 + (RecvBuf[7]-0x30);
  58.             len = (RecvBuf[8]-0x30)*100 + (RecvBuf[9]-0x30)*10 + (RecvBuf[10]-0x30);
  59.             dater = (RecvBuf[11]-0x30)*100 + (RecvBuf[12]-0x30)*10 + (RecvBuf[13]-0x30);       
  60.                                           for(i=startaddr;i<len;i++)
  61.                                           {
  62.                                              EEPROM_WriteOneByte(i,dater);
  63.                                                    USCI0_TWI_Delay(2500);
  64.                                                          USCI0_TWI_Delay(2500);
  65.                                           }
  66.                                                 // Uart_Send_String("写入完成\r\n");  
  67.                                           
  68.                                   }
  69.                                         //6.EEPROM Read
  70.                                          else if((RecvBuf[1]=='E')&&(RecvBuf[2]=='E')&&(RecvBuf[3]=='P')&&(RecvBuf[4]=='R'))
  71.                                          {
  72.                                            startaddr = (RecvBuf[5]-0x30)*100 +(RecvBuf[6]-0x30)*10 + (RecvBuf[7]-0x30);
  73.              len = (RecvBuf[8]-0x30)*100 + (RecvBuf[9]-0x30)*10 + (RecvBuf[10]-0x30);
  74.                                                   
  75.                                                  for(i=startaddr;i<len;i++)
  76.                                            {
  77.                                                                 temp = EEPROM_ReadOneByte(i);
  78.                       Uart_Send_Byte('!');
  79.                                                           Uart_Send_Byte(temp/100+0x30);
  80.                                                           Uart_Send_Byte(temp%100/10+0x30);
  81.                                                           Uart_Send_Byte(temp%10+0x30);
  82.                                            }
  83.                                                  Uart_Send_Byte('\r');
  84.                                                  Uart_Send_Byte('\n');
  85.                                          }                                                 
  86.                                  }
  87.                  }
  88. }


 楼主| 一路向北lm 发表于 2020-8-14 15:40 | 显示全部楼层
本帖最后由 一路向北lm 于 2020-8-14 15:42 编辑

好了,最后附上上位机和下位机的Demo代码,和展示视频供大家参考,这次基于魔盒的工程就到这里,最后希望赛元的魔盒越来越优秀!
下位机.zip (854.65 KB, 下载次数: 17) Qt上位机.zip (84.57 KB, 下载次数: 14)



您需要登录后才可以回帖 登录 | 注册

本版积分规则

293

主题

3837

帖子

81

粉丝
快速回复 在线客服 返回列表 返回顶部