This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430F5529:密码超时

Guru**** 2874030 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/952854/ccs-msp430f5529-password-timeout

器件型号:MSP430F5529

工具/软件:Code Composer Studio

我有一个程序要求提供用户名和密码、以便通过终端进行简单登录、它工作正常。  我想知道使用此板上的计时器实现超时的最佳方法是什么、以便仅允许~30秒的密码输入。  我应该在 password 函数中使用 ISR 吗?

//说明:在 PuTTY //
端口中设置以下参数: COM4
//波特率:115200
//数据位:8//
奇偶校验: 无
//停止位:1
//流控制:无

#include 
#include 
#include 
#include 
#include 

//输出和输入
字符的值 firstquestion[29]="请输入用户名:";
const char 用户名[10]="用户名";
const char 用户名2[12]="用户名2";
char 用户名 input[12];
char secondquestion[21]="输入密码:";
const char 密码[9]="

密码"password2";const char 密码[10]="密码"password2";
char correctAnswer[22]="正确!!!";
char incorrectanswer[35]="用户名或密码不正确!!!!";


//循环计数
器 unsigned int i=0;

//新行和回车
符 void newline (void)
{
while (!(UCA0IFG&UCTXIFG));//等待字符
UCA0TXBUF='\n'; //将字符设置为新行
while (!(UCA0IFG&UCTXIFG));//等待字符
UCA0TXBUF='\r\n'; //set character to carriage return
}
//提示用户名
void userdata (void)
{
对于(i=0;i "enter="" key"="" will="" break="" from="" receiving="" break;="" transmit="" buffer="" equal="" receive="" echo="" print="" what="" types="" usernameinput[i]="UCA0RXBUF;" uca0rxbuf="0;" clears="" adds="" null="" end="" array="" void="" passdata(void)="" i'*'="" bonus="" passwordinput[i]="UCA0RXBUF;" correct(void)="" i

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还想知道是否可以即时更改文本颜色、就像输出"正确!!!" 绿色和"用户名或密码不正确!!!" 以红色显示。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    一个简单的超时机制是使用一个由 ACLK (tassel__ACLK、32kHz)驱动、MC_UP 和 CCR0=32768u 的定时器。 让它一直运行。 在 A0 ISR 中、只需递减("易失性")计数器变量、将其称为 TIMEOUT_COUNT。 停止递减到0..  

    若要启动超时、请在 timeout_count 中存储几秒钟、并与 RXIFG 一起轮询、如下所示:  

    >        while(!(UCA0IFG&UCRXIFG) && timeout_count > 0);          //waits for character

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    PuTTY 可以仿真 VT100终端、但我认为您必须明确地对其进行配置。 VT100可使用(直列式) Escape 序列(通常为"ESC[ "。  (是的、这是一个左方括号。)

    我使用的 VT100 (40年前)是单色的、但沿行的某个地方有人显然定义了文本颜色的 Esc 序列:

    http://wiki.parsec.com/howto/add_color_to_your_terminal_text

    如果您将此类数据流发送到不了解该数据流的终端仿真器、则唯一的危险是、在这种情况下、这些序列看起来非常有趣。 我模糊地回忆了一个退出序列、该序列允许程序询问"您是否是 VT100?"、但我不记得它是如何工作的。