cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 2551|回复: 1

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

[复制链接]
发表于 2016-1-10 11:16:14 | 显示全部楼层 |阅读模式
计算器为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[15];
    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++的流操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-11-22 10:25 , Processed in 1.596913 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表