📄 user_interface.c
字号:
}
return;
}
// ******************************************************************
// The code below is only compiled when in DEVELOPMODE is TRUE
//*******************************************************************
#ifdef DEVELOPMODE
void serial_handler(void)
{
if (control_flags2.Fault)
control_flags2.Fault = 0;
if (control_flags2.CheckRX)
{
CheckHelp();
if (!control_flags2.HelpMsg)
GetMsgIndex();
if (control_flags2.SendTX)
{
SendCRLF();
TXPtr = ¶meter_data[Index].line_msg[0];
SendMsg();
SendTab();
SendValue(user_parameters[Index]);
}
// initialize pointer to first char
if (control_flags2.ErrorMsg)
SendErrorMsg();
RXPtr = &InData[0];
SendCRLF();
control_flags2.SendTX = 0;
control_flags2.CheckRX = 0;
control_flags2.ErrorMsg = 0;
control_flags2.HelpMsg = 0;
}
}
void CheckHelp(void)
{
if (InData[0] == '?')
{
switch (InData[1])
{
case '?': SendHelpMsg();
break;
case 'M': SendMotorPara();
break;
case 'L': SendLimitPara();
break;
case 'C': SendControlPara();
break;
case 'S': SendStartingPara();
break;
case 'B': SendBoardPara();
break;
case 'R': SendRunMsg();
break;
case 'F': SendFaultMsg();
break;
default: SendErrorMsg();
}
}
}
void GetMsgIndex(void)
{
Index = 0;
control_flags2.SendTX = 0;
while (Index < MAXINDEX)
{
RXPtr = &InData[0];
TXPtr = ¶meter_data[Index].quick_msg[0];
while(1)
if (*RXPtr++ == *TXPtr++)
if (*RXPtr == 0x20 || *RXPtr == 0x0D)
break;
else ;
else
{control_flags2.NextIndex = 1; break;}
if (!control_flags2.NextIndex)
if (*RXPtr == 0x20)
{SaveValue();break;}
else
{control_flags2.SendTX = 1; break;}
else {control_flags2.NextIndex = 0;Index++;}
}
if (Index == MAXINDEX) control_flags2.ErrorMsg = 1;
else control_flags2.SendTX = 1;
}
void SaveValue()
{
unsigned char Temp[6]={"000000"};
unsigned char i, l;
while (*RXPtr++ != CR);
*RXPtr--; l = 5;
while (*RXPtr != 0x20)
Temp[l--] = *RXPtr--;
user_parameters[Index] = atoi(Temp);
// Now force any variables which depend on user_parameters
// to be calculated by calling process_parameters for every
// parameter.
for (i=0;i<NO_PARAMETERS;i++)
{
param=i;
process_parameters();
}
// Set param back to start of menu
param=0;
}
void SendTab(void)
{
while (U1STAbits.UTXBF);
U1TXREG = HT;
}
void SendCRLF(void)
{
while (U1STAbits.UTXBF);
U1TXREG = CR;
while (U1STAbits.UTXBF);
U1TXREG = LF;
}
void SendErrorMsg(void)
{
TXPtr = (unsigned char*)&ErrorMsg[0];
SendMsg();
control_flags2.ErrorMsg = 0;
}
void SendMsg(void)
{
while (*TXPtr)
{
while (U1STAbits.UTXBF);
U1TXREG = *TXPtr++;
}
}
void SendHelpMsg(void)
{
Index = 0;
do
{
TXPtr = &HelpMsg_data[Index].line_msg[0];
SendMsg();
TXPtr = &HelpMsg_data[Index].quick_msg[0];
SendMsg();
SendCRLF();
}
while (++Index < MAXHELPMSG);
control_flags2.HelpMsg = 1;
}
void SendHelpInfo(unsigned char Tab)
{
unsigned char i;
i=0;
Index = 0;
do
if (Index == help_info[Tab][i])
{
TXPtr = ¶meter_data[Index].line_msg[0];
SendMsg();
SendTab();
SendTab();
TXPtr = ¶meter_data[Index].quick_msg[0];
SendMsg();
SendTab();
SendTab();
SendValue(user_parameters[Index]);
SendCRLF();
i++;
}
while (++Index < MAXINDEX);
control_flags2.HelpMsg = 1;
}
void SendValue(unsigned int k)
{
//unsigned int k;
unsigned char c;
c = k/10000;
if (c > 0)
k = k - c*10000;
while (U1STAbits.UTXBF);
U1TXREG = (c + 0x30);
c = k/1000;
if (c > 0)
k = k - c*1000;
while (U1STAbits.UTXBF);
U1TXREG = (c + 0x30);
c = k/100;
if (c > 0)
k = k - c*100;
while (U1STAbits.UTXBF);
U1TXREG = (c + 0x30);
c = k/10;
if (c > 0)
k = k - c*10;
while (U1STAbits.UTXBF);
U1TXREG = (c + 0x30);
while (U1STAbits.UTXBF);
U1TXREG = (char)(k + 0x30);
}
void SendFaultMsg(void)
{
TXPtr = (unsigned char *)&FaultMessage[0];
SendMsg();
control_flags2.HelpMsg = 1;
}
void SendRunMsg(void)
{
TXPtr = (unsigned char *)&RunMessage[0];
SendMsg();
control_flags2.HelpMsg = 1;
}
void SendMotorPara(void)
{
TXPtr = (unsigned char *)&MotorParaHeader[0];
SendMsg();
SendHeader();
SendHelpInfo(MOTORPARA);
}
void SendLimitPara(void)
{
TXPtr = (unsigned char *)&LimitParaHeader[0];
SendMsg();
SendHeader();
SendHelpInfo(LIMITPARA);
}
void SendControlPara(void)
{
TXPtr = (unsigned char *)&ControlParaHeader[0];
SendMsg();
SendHeader();
SendHelpInfo(CONTROLPARA);
}
void SendStartingPara(void)
{
TXPtr = (unsigned char *)&StartingParaHeader[0];
SendMsg();
SendHeader();
SendHelpInfo(STARTINGPARA);
}
void SendBoardPara(void)
{
TXPtr = (unsigned char *)&BoardParaHeader[0];
SendMsg();
SendHeader();
SendHelpInfo(BOARDPARA);
}
void SendHeader(void)
{
TXPtr = (unsigned char *)&ParaHeader[0];
SendMsg();
}
void send_run(void)
{
unsigned int k;
k = PDC1 >> 1;
k = PTPER - k;
k = k*100;
k = k/PTPER;
TXPtr = (unsigned char *)&RunMsg1[0];
SendMsg();
SendValue(filtered_rpm);
SendTab();
TXPtr = (unsigned char *)&RunMsg2[0];
SendMsg();
SendValue(k);
while (U1STAbits.UTXBF);
U1TXREG = CR;
}
void send_fault(void)
{
if (!control_flags2.Fault)
{
control_flags2.Fault = 1;
SendCRLF();
TXPtr = (unsigned char *)&fault_data[trip_state].fault_msg[0];
SendMsg();
SendTab();
TXPtr = (unsigned char *)&fault_data[0].fault_msg[0];
SendMsg();
SendCRLF();
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -