#include "hmi.h"
#include "usart.h"
#include "delay.h"
#include "guangbiao.h"
#include "timer.h"
u8 locaflag=0;//定时坐标标记位
u8 inputflag=0;//定时输入标记
u8 inputdex=0;//输入光索引号
u8 inputname=0;//输入代号标记
u8 cursrflag=0;//开始输入光标标记
u8 pgswcflag=0;//页面切换标记
u8 saveflag=0;//输入确认标记
u8 escflag=0;//返回空标记
u8 putedflg=0;//输入完成标记
u8 indexflag=0;//输入index完成标记
u8 nameflag=0;//输入name完成标记
u8 dis8x2=0;
u8 page=0;
u8 flag;
void HMI_Init(void)
{
RXFRMOK=0;
while(RXFRMOK==0)
{
Txword(0xAA00);
Tx_End();
delay_ms(100);
}
RXFRMOK=0;
}
void Slect_Word(void)
{
Txchar(0x00);
Txchar(0x81);
Txchar(0x00);
Txchar(0xF8);
Txchar(0x00);
Txchar(0x00);
Txchar(0x1F);
}
/********多个光标切换
void Txt_Input(u8 jianma,u8 cunt0,u8 flag)
{
static u16 tempx=0,tempy=0;
static u8 flagtemp=0;
if(flagtemp!=flag)//区域改变 需重新确认首地址
{
tempx=(0x0000|(u8)(coord[flag]>>8));
tempy=(0x0000|(u8)(coord[flag]));
}
Shut_GUANGBIAO(tempx,tempy);
flagtemp=flag;
Txword(0xAA98);
Txword(tempx);
Txword(tempy);
Slect_Word();
Txchar(jianma);
Tx_End();
tempx+=8;
SET_ANYGUANBIAO(tempx,tempy);
}
*/
void Txt_Input(u8 jianma,u8 cunt0,u8 flag)
{
static u16 tempx=0,tempy=0;
static u8 flagtemp=0;
if(flagtemp!=flag)//区域改变 需重新确认首地址
{
tempx=(0x0000|(u8)(coord[0]>>8));
tempy=(0x0000|(u8)(coord[0]));
}
Shut_GUANGBIAO(tempx,tempy);
flagtemp=flag;
Txword(0xAA98);
Txword(tempx);
Txword(tempy);
Slect_Word();
Txchar(jianma);
Tx_End();
tempx+=12;
SET_ANYGUANBIAO(tempx,tempy);
}
/***********************************输入法**************************************/
/*******************************************************************************/
//函数功能:输入发配置
//函数名称:u8 ASC_Input(void)
//参 数:type输入类型
//参 数: rekey返回标记
//参 数: page键盘页码
//参 数: maxstr最大字符串
//参 数: xy坐标
//参 数: initst初始字字符串()缺省
//参 数:scal 0x40(8*8) 0x41 (6*12) 0x42 (8*16) 0x43 (12*24) 0x44(16*32) 0x45(20*40) 0x46(24*28) 0x47(28*56) 0x8*(全部显示*号)
//参 数:colour 0xFFFF黑色
//返 回 值:u8 待定
//AA 7C 01 CF CF 00 01 00 00 00 00 40 43 FF FF 49 6E 70 75 74 20 46 69 6C 65 20 4E 61 6D 65 CC 33 C3 3C
//ASC_Input(ASCINPUT,0xCFCF,0x0001,0x40,0x0000,0x0000,str2,0x43,0xFFFF);
/*******************************************************************************/
void ASC_Input(u16 type,u16 Rekey,u16 page,u8 maxstr,u16 x,u16 y,u8 scal,u16 colour)
{
//u8 Reflag;
// u8 *str;
//str=initstr;
Txchar(0xAA);
Txword(type);
Txword(Rekey);
Txword(page);
Txword(x);
Txword(y);
Txchar(maxstr);
Txchar(scal);
Txword(colour);
/* while(*str)
{
Txchar(*str);
str++;
}
*/
Tx_End();
//缺少检测返回
}
/*******************************************************************************/
//函数功能:终端模式配置
//函数名称:void Teml_Config(void)
//参 数:VOID
//返 回 值:VOID
/*******************************************************************************/
void Teml_Config(void)
{
Txword(0xAAE0);
Txword(0x55AA);
Txword(0x5AA5);
Txword(0X0007);
Txchar(0x20);
//Txword(0xAA20);
Tx_End();
}
/*******************************************************************************/
//函数功能:终端模式配置
//函数名称:void Teml_Config(void)
//参 数:VOID
//返 回 值:VOID
/*******************************************************************************/
void Config_Ok(void)
{
Teml_Config();
PIC_ID(1);
//接受完成所有配置
}
/*******************************************************************************/
//函数功能:终端模式配置
//函数名称:cut_STR
//参 数:*p
//返 回 值:VOID
/*******************************************************************************/
u8 Cut_str(u8 *p)
{
u8 i,cunt=0;
cunt=Re_buf[5];//接受
for(i=0;i<cunt;i++)
p[i]=Re_buf[6+i];
return cunt;
}
/*******************************************************************************/
//函数功能:终端模式配置
//函数名称:cut_STR
//参 数:*p
//返 回 值:VOID
/*******************************************************************************/
void Mau_file(void)
{
volatile u8 *ip;
u8 i=0;
u16 j=0;
start: for(i=0;i<8;i++)
{
ip=str[i];
Put_num(coordindex[i][0],coordindex[i][1],i);
Put_Str0(coordname[i][0],coordname[i][1],ip);
}
while(1)
{
if(RXFRMOK&&Re_buf[0]==0x78)
{
if(Re_buf[1]==0xAB&&Re_buf[2]==0x20)//返回主页面
{
PIC_ID(0);
RXFRMOK=0;
break;
}
if(Re_buf[1]==0xAB&&Re_buf[2]==0x24)//新建文件
{//PBout(5)=!PBout(5);
PIC_ID(4);
index0=0;
*strpoint='\0';
}
if(Re_buf[1]==0xAB&&Re_buf[2]==0xC0)//新建ok
{
u8 i=0;
while(*(strpoint+i))
{
str[index0][i]=*(strpoint+i);
i++;
//strpoint++;
}
str[index0][i]='\0';//存储当前编号和名字
PIC_ID(2);
RXFRMOK=0;
goto start;
}
if(Re_buf[1]==0xAB&&Re_buf[2]==0xCA)//新建取消
{
PIC_ID(2);
index0=0;
*strpoint='\0';
RXFRMOK=0;
goto start;
}
if(Re_buf[1]==0xAB)
{
if(Re_buf[2]==0xAD)//下翻页
{
j+=8;
if(j>=40) j=40;
PIC_ID(2);
for(i=0;i<8;i++)
{
ip=str[i+j];
Put_num(coordindex[i][0],coordindex[i][1],i+j);
Put_Str0(coordname[i][0],coordname[i][1],ip);
}
}
if(Re_buf[2]==0xAC)//上翻页
{
if(j==0) j=0;
else j-=8;
PIC_ID(2);
for(i=0;i<8;i++)
{
ip=str[i+j];
Put_num(coordindex[i][0],coordindex[i][1],i+j);
Put_Str0(coordname[i][0],coordname[i][1],ip);
}
}
}
if(Re_buf[1]==0xAB&&Re_buf[2]==0x68)
{PIC_ID(6);
ASC_Input(ASCINPUT,0xFCCF,0x0006,0x40,0,70,0x03,0xFFFF);//输入ID是FC num
}//显示输入狂
if(Re_buf[1]==0xAB&&Re_buf[2]==0x69)
{
PIC_ID(6);
ASC_Input(ASCINPUT,0xCFCF,0x0006,0x40,0,70,0x03,0xFFFF);//输入ID是CF name
}
RXFRMOK=0;
}
if(RXFRMOK&&Re_buf[0]==0x7C)//按键返回
{
u16 k=0;
u8 num=0;
if(Re_buf[2]==0xCF)//
{
num=Re_buf[4];
if(num)
{
for(i=0;i<num;i++)
*(strpoint+i)=Re_buf[i+5];//STROINT一定要初始化?不赋初值就有问题程序一直卡在这里
*(strpoint+i)='\0'; //字符串暂时存到strpoint中
}
}
if(Re_buf[2]==0xFC)
{
num=Re_buf[4];
if(num)
{
for(i=0;i<num;i++)
{
k=k*10;
k+=(Re_buf[5+i]-0x30);
}
index0=k;//暂存
}
}
PIC_ID(4);
Put_Str0(109,127,strpoint);//name
PBout(5)=!PBout(5);
Put_num(109,73,index0);//num
PEout(5)=!PEout(5);
RXFRMOK=0;
}
}
}
/*******************************************************************************/
//函数功能:终端模式配置
//函数名称:cut_STR
//参 数:*p
//返 回 值:VOID
/*******************************************************************************/
void Reflush(void)
{
Txchar(0xAA);
Txchar(RFRSHSCRN);
Tx_End();
}
hmi.zip_hmi_迪文_迪文 HMI_迪文 通讯_迪文屏幕
版权申诉
32 浏览量
2022-09-23
00:55:37
上传
评论
收藏 3KB ZIP 举报
邓凌佳
- 粉丝: 65
- 资源: 1万+