大佬们这个该怎么解决main.c(7): error C200: left side of '.' requires struct/union

墨染紅尘 2024-05-08 20:42:37

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
//系统数据显示void sys_data_show(void){  while(1)  {    //未查阅    if(sys_ctrl.find==0)    {      //未进入设置闹钟模式      if(sys_ctrl.set_alarm_mode==0)      {        //显示时间        lcd1602_show_nums(6,0,sys_ctrl.hour,2,0x80);        lcd1602_show_nums(9,0,sys_ctrl.min,2,0x80);        lcd1602_show_nums(12,0,sys_ctrl.sec,2,0x80);                  //心率显示        lcd1602_show_nums(3,1,sys_ctrl.heart,3,0);        //血氧显示        lcd1602_show_nums(12,1,sys_ctrl.oxygen,3,0);                //时间调节位置闪烁        switch(sys_ctrl.set_time_mode)        {          case 1://时            lcd1602_show_string(6,0,"  ");            delay_ms(50);            lcd1602_show_nums(6,0,sys_ctrl.hour,2,0x80);            break;          case 2://分            lcd1602_show_string(9,0,"  ");            delay_ms(50);            lcd1602_show_nums(9,0,sys_ctrl.min,2,0x80);            break;          case 3://秒            lcd1602_show_string(12,0,"  ");            delay_ms(50);            lcd1602_show_nums(12,0,sys_ctrl.sec,2,0x80);            break;        }        }      //进入闹钟设置模式      else      {        //显示助眠时间        lcd1602_show_nums(7,0,sys_ctrl.alarm_time[0][0],2,0x80);        lcd1602_show_nums(10,0,sys_ctrl.alarm_time[0][1],2,0x80);        //显示起床时间        lcd1602_show_nums(7,1,sys_ctrl.alarm_time[1][0],2,0x80);        lcd1602_show_nums(10,1,sys_ctrl.alarm_time[1][1],2,0x80);                //时间调节位置闪烁        switch(sys_ctrl.set_alarm_mode)          {          case 1://助眠时            lcd1602_show_string(7,0,"  ");            delay_ms(50);            lcd1602_show_nums(7,0,sys_ctrl.alarm_time[0][0],2,0x80);            break;          case 2://助眠分            lcd1602_show_string(10,0,"  ");            delay_ms(50);            lcd1602_show_nums(10,0,sys_ctrl.alarm_time[0][1],2,0x80);            break;          case 3://起床时            lcd1602_show_string(7,1,"  ");            delay_ms(50);            lcd1602_show_nums(7,1,sys_ctrl.alarm_time[1][0],2,0x80);            break;          case 4://起床分            lcd1602_show_string(10,1,"  ");            delay_ms(50);            lcd1602_show_nums(10,1,sys_ctrl.alarm_time[1][1],2,0x80);            break;        }        }      }    //正在查阅    else    {      //显示心率最小和最大值      lcd1602_show_nums(8,0,sys_ctrl.heart_lh[0],3,0x80);      lcd1602_show_nums(12,0,sys_ctrl.heart_lh[1],3,0x80);      //显示血氧最小和最大值      lcd1602_show_nums(8,1,sys_ctrl.oxygen_lh[0],3,0x80);      lcd1602_show_nums(12,1,sys_ctrl.oxygen_lh[1],3,0x80);      }        break;        }}
//系统数据设置void sys_data_set(void){  u8 key=0;  static u8 oneflag=0;
  key=key_scan(0);  //设置时间  if(key==KEY3_PRESS)  {    //未进入设置闹钟模式    if(sys_ctrl.set_alarm_mode==0)    {      TR1=0;//关闭定时器      sys_ctrl.set_time_mode++;      if(sys_ctrl.set_time_mode>=4)sys_ctrl.set_time_mode=1;      }    //闹钟设置模式,确定    else    {      oneflag=0;      sys_ctrl.set_alarm_mode=0;      sys_open_show();//开机界面显示      TR1=1;//开启定时器      }      }  //加  else if(key==KEY1_PRESS)  {    //时间设置模式    switch(sys_ctrl.set_time_mode)    {      case 1://时        sys_ctrl.hour++;        if(sys_ctrl.hour>23)sys_ctrl.hour=0;        break;      case 2://分        sys_ctrl.min++;        if(sys_ctrl.min>59)sys_ctrl.min=0;        break;      case 3://秒        sys_ctrl.sec++;        if(sys_ctrl.sec>59)sys_ctrl.sec=0;        break;    }      //闹钟设置模式    switch(sys_ctrl.set_alarm_mode)    {      case 1://助眠时        sys_ctrl.alarm_time[0][0]++;        if(sys_ctrl.alarm_time[0][0]>23)sys_ctrl.alarm_time[0][0]=0;        break;      case 2://助眠分        sys_ctrl.alarm_time[0][1]++;        if(sys_ctrl.alarm_time[0][1]>59)sys_ctrl.alarm_time[0][1]=0;        break;      case 3://起床时        sys_ctrl.alarm_time[1][0]++;        if(sys_ctrl.alarm_time[1][0]>23)sys_ctrl.alarm_time[1][0]=0;        break;      case 4://起床分        sys_ctrl.alarm_time[1][1]++;        if(sys_ctrl.alarm_time[1][1]>59)sys_ctrl.alarm_time[1][1]=0;        break;        }    //正常模式下,查阅血氧心率信息    if(sys_ctrl.set_time_mode==0 && sys_ctrl.set_alarm_mode==0)    {      sys_ctrl.find=!sys_ctrl.find;      //查阅      if(sys_ctrl.find==1)      {        lcd1602_clear();        lcd1602_show_string(0,0," Heart->000-000");        lcd1602_show_string(0,1,"Oxygen->000-000");          }      //退出查阅      else      {        sys_open_show();//开机界面显示        }      }    }  //减  else if(key==KEY2_PRESS)  {    //时间设置模式    switch(sys_ctrl.set_time_mode)    {      case 1://时        sys_ctrl.hour--;        if(sys_ctrl.hour<0)sys_ctrl.hour=23;        break;      case 2://分        sys_ctrl.min--;        if(sys_ctrl.min<0)sys_ctrl.min=59;        break;      case 3://秒        sys_ctrl.sec--;        if(sys_ctrl.sec<0)sys_ctrl.sec=59;        break;    }    //闹钟设置模式    switch(sys_ctrl.set_alarm_mode)    {      case 1://助眠时        sys_ctrl.alarm_time[0][0]--;        if(sys_ctrl.alarm_time[0][0]<0)sys_ctrl.alarm_time[0][0]=23;        break;      case 2://助眠分        sys_ctrl.alarm_time[0][1]--;        if(sys_ctrl.alarm_time[0][1]<0)sys_ctrl.alarm_time[0][1]=59;        break;      case 3://起床时        sys_ctrl.alarm_time[1][0]--;        if(sys_ctrl.alarm_time[1][0]<0)sys_ctrl.alarm_time[1][0]=23;        break;      case 4://起床分        sys_ctrl.alarm_time[1][1]--;        if(sys_ctrl.alarm_time[1][1]<0)sys_ctrl.alarm_time[1][1]=59;        break;        }    sys_ctrl.alarm_flag=0;//解除闹铃        }  //确定  else if(key==KEY4_PRESS)  {    //时间设置模式    if(sys_ctrl.set_time_mode!=0)    {      sys_ctrl.set_time_mode=0;      TR1=1;//开启定时器      }    //闹钟设置模式    else    {      TR1=0;//关闭定时器      if(oneflag==0)//只显示1次界面      {        oneflag=1;        lcd1602_clear();        lcd1602_show_string(0,0,"Sleep->00:00");        lcd1602_show_string(0,1,"Alarm->00:00");        }      sys_ctrl.set_alarm_mode++;      if(sys_ctrl.set_alarm_mode>=5)sys_ctrl.set_alarm_mode=1;      }    }}
//应用控制系统void appdemo_show(void){  u8 i=5;  sys_parm_init();//系统参数初始化  lcd1602_init();  time1_init();  while(i--)  {    //血氧心率获取    sys_ctrl.heart=pcf8591_read_adcvalue(1);    sys_ctrl.heart=cal_map(sys_ctrl.heart,0,255,0,200);    sys_ctrl.heart_lh[0]=sys_ctrl.heart;//初始值作为最小值    sys_ctrl.heart_lh[1]=sys_ctrl.heart;//初始值作为最大值
    sys_ctrl.oxygen=pcf8591_read_adcvalue(0);    sys_ctrl.oxygen=cal_map(sys_ctrl.oxygen,0,255,0,200);    sys_ctrl.oxygen_lh[0]=sys_ctrl.oxygen;//初始值作为最小值    sys_ctrl.oxygen_lh[1]=sys_ctrl.oxygen;//初始值作为最大值
    delay_ms(100);  }  sys_open_show();//系统开机界面显示  TR1=1;//开启定时器
  while(1)  {      sys_data_get();//系统数据获取    sys_data_show();//系统数据显示    sys_data_set();//系统数据设置    sys_fun_ctrl();//系统功能控制  }}
//定时器1中断函数void time1(void) interrupt 3 {  static u8 i=0;
  TH1=0XDC;  //给定时器赋初值,定时10ms  TL1=0X00;  i++;  if(i>=100)//1秒到  {    i=0;    sys_ctrl.sec++;    if(sys_ctrl.sec>=60)//1分    {      sys_ctrl.sec=0;      sys_ctrl.min++;      if(sys_ctrl.min>=60)//1小时      {        sys_ctrl.min=0;        sys_ctrl.hour++;        if(sys_ctrl.hour>=24)sys_ctrl.hour=0;      }    }  }}


 

...全文
8827 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
forever74 2024-05-12
  • 打赏
  • 举报
回复

断章不取义,万事开头难。

太空漫步11 2024-05-10
  • 打赏
  • 举报
回复

sys_ctrl是全局变量,需要在函数外面定义一下。

zara 2024-05-09
  • 打赏
  • 举报
回复

sys_ctrl 在哪里定义的,得在文件的开头把那个 .h 文件 #include 进来吧

内容概要:该论文研究了一种基于行波理论的输电线路故障诊断方法。当输电线路发生故障时,故障点会产生向两侧传播的电流和电压行波。通过相模变换对三相电流行波解耦,利用解耦后独立模量间的关系确定故障类型和相别,再采用小波变换模极大值法标定行波波头,从而计算故障点距离。仿真结果表明,该方法能准确识别故障类型和相别,并对故障点定位具有高精度。研究使用MATLAB进行仿真验证,为输电线路故障诊断提供了有效解决方案。文中详细介绍了三相电流信号生成、相模变换(Clarke变换)、小波变换波头检测、故障诊断主流程以及结果可视化等步骤,并通过多个实例验证了方法的有效性和准确性。 适合人群:具备一定电力系统基础知识和编程能力的专业人士,特别是从事电力系统保护与控制领域的工程师和技术人员。 使用场景及目标:①适用于电力系统的故障检测与诊断;②能够快速准确地识别输电线路的故障类型、相别及故障点位置;③为电力系统的安全稳定运行提供技术支持,减少停电时间和损失。 其他说明:该方法不仅在理论上进行了深入探讨,还提供了完整的Python代码实现,便于读者理解和实践。此外,文中还讨论了行波理论的核心公式、三相线路行波解耦、行波测距实现等关键技术点,并针对工程应用给出了注意事项,如波速校准、采样率要求、噪声处理等。这使得该方法不仅具有学术价值,也具有很强的实际应用前景。

65,171

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧