在终端中使用转义序列
Using escape sequences with Terminal
我正在与 Minicom Terminal (VT102)
合作。我有一个微控制器节点,它通过串行 (UART) 将数据发送到 minicom。我写了一些函数来使用终端。
typedef unsigned char uchar_t;
uchar_t clear_cmd[] = {0x1B, '[', '2', 'J', '[=10=]'};
uchar_t gotoxy_cmd[] = {0x1B, '[', 0, ';', 0, 'H', '[=10=]'};
void clearTerminal()
{
puts(clear_cmd); // puts() sends data serially to PC
}
void terminalWrite(uchar_t row, uchar_t col, const uchar_t *str)
{
gotoxy_cmd[2] = row;
gotoxy_cmd[4] = col;
puts(gotoxy_cmd);
puts(str);
}
void main()
{
init_uart(); // Initialize UART
clearTerminal();
terminalWrite(2, 12, "Admin Login"); // 2nd line 12th column
terminalWrite(4, 6, "Password: "); // 4th line 6th column
while(1);
}
[Assume all necessary header files are added]
我得到这样的输出
显示在第一行,不在指定行。
查找 "gotoxy" 命令的文档:您以 ASCII 格式发送坐标:
printf("\x1B[%u;%uH", row, col);
我正在与 Minicom Terminal (VT102)
合作。我有一个微控制器节点,它通过串行 (UART) 将数据发送到 minicom。我写了一些函数来使用终端。
typedef unsigned char uchar_t;
uchar_t clear_cmd[] = {0x1B, '[', '2', 'J', '[=10=]'};
uchar_t gotoxy_cmd[] = {0x1B, '[', 0, ';', 0, 'H', '[=10=]'};
void clearTerminal()
{
puts(clear_cmd); // puts() sends data serially to PC
}
void terminalWrite(uchar_t row, uchar_t col, const uchar_t *str)
{
gotoxy_cmd[2] = row;
gotoxy_cmd[4] = col;
puts(gotoxy_cmd);
puts(str);
}
void main()
{
init_uart(); // Initialize UART
clearTerminal();
terminalWrite(2, 12, "Admin Login"); // 2nd line 12th column
terminalWrite(4, 6, "Password: "); // 4th line 6th column
while(1);
}
[Assume all necessary header files are added]
我得到这样的输出
查找 "gotoxy" 命令的文档:您以 ASCII 格式发送坐标:
printf("\x1B[%u;%uH", row, col);