这些函数检索在命令窗口中按下的最后一个键,而无需明确等待输入。对于代码正在执行的情况,并且您希望轮询键盘输入,但您不希望隐藏的数字。例如,MEXKBHIT可用于在执行时中断MEX功能。
代码分布到命令窗口的键按回调函数。每次按下键时,都会运行一小块的M代码以保存密钥事件。对KBHIT(或MEX代码中的MEXKBHIT)的调用将返回有关关键事件的信息,例如ASCII代码和相关字符,以及还输入控件,alt和/或班次。
警告:Mexkbhit调用Matlab函数Kbhit。虽然Ctrl + C不会中断MEX函数,但它将中断MEX函数调用的MATLAB函数。因此,当MEX函数正在执行MEXKBHIT时,关键组合CTRL + C可能会导致问题。
在Matlab NewsReader线程“Java:添加密钥乐队到命令窗口”中的yair altman的大致密感谢,用于提供设置键按回调所需的确切代码。
文件:
KBHIT.M - MATLAB功能
mexkbhit.h - mex c文件标题
mexkbhit.c - mex c文件,包括构建图书馆的说明
mexkbhitdemo.c - 使用MEX库的演示代码。
MATLAB功能的示例使用:
Kbhit('init');
FPRINTF(1,'五秒钟键入......');
暂停(5);
键= kbhit;FPRINTF(1,'字符:%c \ n',键);
key = kbhit('struct');fprintf(1,'关键结构:\ n');DISP(键)
[key,ctrlc] = kbhit('事件');FPRINTF(1,'关键事件:\ n');DISP(键)
FPRINTF(1,'Ctrl + C按下?%d \ n',ctrlc);
Kbhit('停止')
Mex Library的示例使用:
clock_t t;
struct键k;
init_mexkbhit();
t = clock();
//民意调查5秒
Mexprintf(“等待5秒......”);
mexevalstring(“绘制”);
而((时钟() - t)/ clocks_per_sec <5){
k = mexkbhit();
if(k.character =='c'&& k.ctrl == 1){
mexprintf(“由Ctrl + C中断!”);
休息;
}
}
引用
阿曼达(2021年)。键盘输入的非等待检测(包括MEX实现)(//www.tianjin-qmedu.com/matlabcentral/fileexchange/30622-non-wait-detection-of-keyboard-input-including-mex-implementation),Matlab中央文件交换。检索到。