资讯详情

零基础学习CANoe Panel(14)——二极管( LED Control )和液晶屏(LCD Control)

  • ?? 我是,专注于车载诊断,尤其是车载诊断CANoe工具的使用
  • ?? 寻找组织 ,答疑解惑,钓鱼聊天,博客源码,点击加入【相亲相爱】
  • ?? 零基础学习CANoe Panel总结设计目录,点击跳转

??前言

  • ?? 本节通过简单版的电源操作面板演示液晶屏(LCD Control)控件和二极管( LED Control )控件

  • ?? 演示软硬件环境 Windows11 x64CANoe 11 SP2 x64 请添加图片描述

目录

  • ??前言
  • ?? 液晶屏(LCD Control)
    • ?? 设置数字管数量
    • ?? 数字管配色设置
    • ?? 电源连接和电压读取模板代码
    • ?? 实际测试结果
  • ?? 液晶屏(LED Control)
    • ?? On Off 设置值和颜色属性
    • ?? 设置形状属性
  • ??总结


?? 液晶屏(LCD Control)

  • 放置两个LCD Control实时显示电源电压电流
  • 放置一个 LED Control 显示电源连接状态
  • 放置两个Input/Out 配置串口连接口连接

?? 设置数字管数量

  • 数字是以小数位为界的数字管,可以设置整数位和小数位的显示位数
  • Decimal Places:设置为2个整数位
  • Number Of Digits:两个小数位设置


?? 数字管配色设置

  • 默认配置是点亮段时间,背景色和未点亮的时间
  • 下面我们简单设置一下数字管的颜色

?? 电源连接和电压读取模板代码

  • 以下代码可作为标准电源连接和电压读取的模板。实际使用时,可根据具体情况进行处理
/*@!Encoding:936*/ variables { 
           msTimer timer_V;   msTimer timer_C;   char  tempText[0x500];   int Port;   int BaudRate;   int res;    byte GetCurrentCommand [6] = { 
        'I','O','U','T',13,10};//13 CR ; 10 LF   byte GetVoltageCommand [6] = { 
        'I','O','U','T',13,10
       
        }
        ;
        //13 CR ; 10 LF 
        } on timer timer_V 
        { 
          
        //RS232Send(Port, GetCurrentCommand, elCount(GetCurrentCommand)); 
        //模拟随机值,真实硬件情况下,把RS232Send打开,然后在RS232OnReceive解析返回值 
        sysSetVariableFloat
        (sysvar
        ::Panel
        ::LCD_Voltage
        ,
        random
        (
        5
        )
        /
        10.0
        +
        random
        (
        10
        )
        )
        ; 
        setTimer
        (timer_V
        ,
        1000
        )
        ; 
        } on timer timer_C 
        { 
          
        //RS232Send(Port, GetCurrentCommand, elCount(GetCurrentCommand)); 
        //模拟随机值,真实硬件情况下,把RS232Send打开,然后在RS232OnReceive解析返回值 
        sysSetVariableFloat
        (sysvar
        ::Panel
        ::LCD_Current
        ,
        random
        (
        5
        )
        /
        10.0
        )
        ; 
        setTimer
        (timer_C
        ,
        600
        )
        ; 
        } on sysvar Panel
        ::Port 
        { 
          
        InitPower
        (
        )
        ; 
        } on sysvar Panel
        ::BaudRate 
        { 
          
        InitPower
        (
        )
        ; 
        } 
        RS232OnReceive
        (dword port
        , byte buffer
        [
        ]
        , dword number
        ) 
        { 
          
        if
        (buffer
        [
        0
        ] 
        ==
        'V'
        ) 
        { 
          
        sysSetVariableFloat
        (sysvar
        ::Panel
        ::LCD_Voltage
        ,
        random
        (
        5
        )
        /
        10
        +
        random
        (
        10
        )
        )
        ; 
        //模拟随机值 
        } 
        else 
        if
        (buffer
        [
        0
        ] 
        ==
        'C'
        ) 
        { 
          
        sysSetVariableFloat
        (sysvar
        ::Panel
        ::LCD_Current
        ,
        random
        (
        5
        )
        /
        10
        )
        ;
        //模拟随机值 
        } 
        } 
        int 
        InitPower
        (
        ) 
        { 
          Port 
        = 
        sysGetVariableInt
        (sysvar
        ::Panel
        ::Port
        )
        ; BaudRate 
        = 
        sysGetVariableInt
        (sysvar
        ::Panel
        ::BaudRate
        )
        ; 
        write
        (
        "Port:%d ;BaudRate:%d "
        ,Port
        ,BaudRate
        )
        ; res 
        = 
        RS232Open
        (Port
        )
        ; 
        if
        (res
        !=
        1
        ) 
        { 
          
        write
        (
        "Open COM %d Failed!"
        ,Port
        )
        ; 
        return 
        0
        ; 
        } res 
        = 
        RS232Configure
        (Port
        ,BaudRate
        ,
        8
        ,
        1
        ,
        0
        )
        ; 
        if
        (res
        !=
        1
        ) 
        { 
          
        write
        (
        "Configure COM %d Failed! :%d"
        ,Port
        ,res
        )
        ; 
        return 
        0
        ; 
        } res 
        = 
        RS232SetHandshake
        (Port
        ,
        0
        ,
        0
        ,
        0
        ,
        0
        ,
        0
        )
        ; 
        if
        (res
        !=
        1
        ) 
        { 
          
        write
        (
        " Configure handshaking COM %d Failed!"
        ,Port
        )
        ; 
        return 
        0
        ; 
        } 
        //配置成功 
        setTimer
        (timer_V
        ,
        500
        )
        ; 
        setTimer
        (timer_C
        ,
        600
        )
        ; 
        sysSetVariableInt
        (sysvar
        ::Panel
        ::LED_1
        ,
        1
        )
        ; 
        write
        (
        "Configure COM %d Ok!"
        ,Port
        )
        ; 
        return 
        1
        ; 
        } on stopMeasurement 
        { 
          
        rs232Close
        (Port
        )
        ; 
        } 
       

🍅 实际测试结果


📙 液晶屏(LED Control)

  • LED Control 作为一个状态显示控件,比较简单


🍅 On Off 值和颜色属性设置

  • LED Control 只有On和Off两种状态,默认 On 是1 ,OFF是0,颜色也可选


🍅 形状属性设置

  • panel提供了6种可选形状

🌎总结

  • 🍅 有需要演示中所用demo工程的,可以关注下方公众号网盘自取啦,感谢阅读。

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。

标签: 二极管sp0402u

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台