官网资料:http://bbs.tjc1688.com/doku.php?id=start
    什么是 串口 HMI (Human Machine Interface)
    串口 HMI 就是设备封装好 HMI 的底层功能以后,通过串口(USART 232)与用户 MCU 进行交互,MCU 可以随时通过 USART 发指令通知设备切换某个页面或者改变某个组件的属性,设备也可以随时通过 USART 通知用户 MCU 操作者目前触摸了页面上的某个组件或者设备当前进入了某个页面。
    **
    对于串口HMI,用户只需要关注的是屏幕上的这些控件的属性。

    发送指令使用字符串形式
    屏幕数据返回则是用的 16 进制
    **
    发送代码实现思路:
    (1)将上位机的一条指令拆成两部分-指令和数据。
    先发指令,再发数据.
    (2)设备接受指令结束符为”0XFF 0XFF 0XFF”三个字节

    示例1:封装成数值发送函数
    //USART_TypeDef USARTx: 选择串口输出,注意必须先初始化、使能串口
    //u16
    data:上位机上数字位相应的改变数值代码(字符串)
    //u8 len:data代码的长度
    //u16 Num:需要显示的数值,注意开头0不显示
    //u8 len2:需要显示的数值的位数
    void HMI_SendNum**(USART_TypeDef
    USARTx,u8 data,u8 len,u16 Num,u8 len2)
    {
    u8 t;
    for(t=0;t {
    while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET); //发送完成
    USART_SendData(USARTx,data[t]);
    }
    for(t=0;t<len2;t++) ** ** //将多位数的数值也拆分成单个数值一个一个发送
    {
    while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
    USART_SendData(USARTx,’0’+(Num/HMI_Pow(len2-t-1))%10); //注意的是所有的发送都是以
    ASCII 码(单个字符)的形式发送的,所以数值要加字符‘0’
    }

    while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
    *USART_SendData(USARTx,0XFF);


    while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
    USART_SendData(USARTx,0XFF);

    while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
    USART_SendData(USARTx,0XFF);
    }

    //10的乘方函数,用于判断位数
    u32 HMI_Pow(u8 n)
    {
    u32 result=1;
    while(n—)result*=10;
    return result;
    }

    示例2:printf()+发送三个结束符

    1. 1. printf("n0.val=666"); //发送命令
    2. 2. printf("\xff\xff\xff"); //发送结束符
    3. 3.
    4. 4. printf("n0.val=666\xff\xff\xff");
    5. 5.
    6. 6. printf("n0.val=%d\xff\xff\xff",MyData); //一次性发完命令和结束符
    7. 7. printf("t0.txt=\"%d\"\xff\xff\xff",MyTxt); //一次性发完命令和结束符

    串口屏文件下载:USB转ttl连接串口屏(TXD与RX,RXD与TX连接),点击下载。
    通信:单片机TX接到屏幕RX

    务必注意波特率保持一致,串口屏出厂默认9600

    串口屏往单片机发数据,需要在串口中断里处理,实现交互

    HMI逻辑语句(可用于页面切换)
    跨页面操作控件属性