lizhirui 发表于 2016-1-10 11:16:14

求助-关于一个ndless程序会在计算器崩溃的问题

计算器为TI Nspire CAS with clickpad
操作系统OS3.6
程序在Ndless sdk 3.1下编译通过
OS3.6计算器或者OS3.1模拟器上上打开程序后,若按键ENTER-ENTER-1,程序正常退出,但如果按ENTER-1-ENTER计算器崩溃重启

代码如下:
#include <os.h>
#include <nspireio2.h>

int main(void) {
    nio_console csl;
      char ch;
      char strbuf;
    lcd_ingray();
    clrscr();
    // 53 columns, 29 rows. 0px offset for x/y.
    // Background color 0 (black), foreground color 15 (white)
    nio_InitConsole(&csl, 53, 29, 0, 0, 0, 15);
    nio_DrawConsole(&csl);
    nio_printf(&csl, "Press any key to contiune...\r\n");//printf大家都懂的
    wait_key_pressed();//等待按键按下,所有按键都有效。
      ch=nio_fgetc(&csl);//从指定console获取一个字符
      while ((ch!='\r')&&(ch!='\0'))
      {
                nio_fputc(&csl,ch);//在指定console显示一个字符
                ch=nio_fgetc(&csl);
      }//不知道为什么,nio_gets不能正常使用               
      nio_printf(&csl, "Press 1 key to continue...\r\n");
      while (!isKeyPressed(KEY_NSPIRE_1));//isKeyPressed可以用于检测某一个键是否按下
    nio_CleanUp(&csl);
    return 0;
}

春上冰月 发表于 2016-1-10 13:18:04

本帖最后由 超越说 于 2016-1-10 13:41 编辑

这个看起来像法师写的 Ndless 教程里的示例程序。。。http://www.cncalc.org/thread-8966-1-1.html
最后的 while (!isKeyPressed(KEY_NSPIRE_1)); 意味着最后必须按1才能退出。
另外 ENTER-ENTER-1 的按法,程序不会进入 19 行开始的那个 while 循环。
ENTER-1-ENTER 的按法,第一个 Enter 给了 17行,1-Enter给了18行,程序进入19行的循环并且输出一个 1 ,enter带来一个\r结束循环,此时程序正在等待你按1退出。
重启我怀疑是 Ndless 不稳定所致,或者输出时发生异常,写一个纯粹用fputc的程序试试。
Ndless SDK 4.0 使用另一套更简单的输入输出,nio_gets和nio_scanf都可以用,还支持类似于C++的流操作。
页: [1]
查看完整版本: 求助-关于一个ndless程序会在计算器崩溃的问题