cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 1541|回复: 8

[fx-9860/9750] Casio 的编译环境使用起来太痛苦了

[复制链接]
发表于 2023-2-27 11:09:13 | 显示全部楼层 |阅读模式

Casio fx9860 编译环境使用太痛苦 使用不习惯C语言的我是种折磨
新版的9750已经可以支持usb插拔交换数据 直接读取文本文件经测可行
所以从开发流程的角度来说,基于“设计-C语言-虚拟机仿真-真机运行” 效率还是存在问题

考虑到用Lua封装fxapi ,爬过很多了坑之后,终于让屏幕上显示出字符,
lua 的api基本和sdk一致

常见函数:(逐渐更新中)
locate(x,y)
print("..",x,y)
key() 阻塞的输入函数
iskeydown(a,b) 无阻塞的输入函数 基于sh4版本

还有一些简单的图形函数 如line rectangle cycle clear buffer_blit等
  1. lua_register(L, "locate", lua_locate);
  2.     //print
  3.     lua_register(L, "print", lua_print);
  4.     lua_register(L, "printi", lua_printi);
  5.     lua_register(L, "printr", lua_printr);
  6.     lua_register(L, "iskeydown", lua_keydown);
  7.     //graphics
  8.     lua_register(L, "line", lua_drawline);
  9.     lua_register(L, "key", lua_getKey);
  10.     lua_register(L, "clear",lua_clear_screen);
  11.     lua_register(L, "sleep", lua_sleep);
复制代码
针对lua调试做了优化,如果遇到语法错误,会显示在屏幕上

先不谈运行效率问题,直接上图

编辑页面

编辑页面


设计-lua平台编码-真机运行 实现一个简单文本浏览功能 代码看起来比Python要简洁,对缩进要求没有那么严格,
只是学习贴 不谈效率 更不谈优化 没有任何实用价值 完善后开源


  1. edit = {
  2.         cx = 3,
  3.         cy = 1,
  4.         t = 1
  5. }

  6. content = {
  7.         "VVVVV somthing",
  8.         "forexample"
  9. }

  10. function drawcaret()
  11.         if math.abs(math.ceil(math.sin(edit.t/10.0))) == 1 then
  12.                 locate(edit.cx,edit.cy)
  13.                 print("_")
  14.         end       
  15. end

  16. function draw()

  17.         clear()

  18.         for i,v in ipairs(content) do
  19.                 locate(1,i)
  20.                 print(v)
  21.         end

  22.         toolbar()
  23.         drawcaret()
  24. end

  25. function toolbar()
  26.         locate(1,8)
  27.         printr("F_1")
  28.         locate(5,8)
  29.         printr("F_2")
  30.         locate(9,8)
  31.         printr("F_3")
  32. end

  33. while (true) do
  34.         k = key()

  35.         if iskeydown(2,9) then --up
  36.                 if edit.cy > 1 then
  37.                         edit.cy = edit.cy - 1
  38.                 end
  39.         end

  40.         if iskeydown(3,8) then --down
  41.                 if edit.cy < #content then
  42.                         edit.cy = edit.cy + 1
  43.                 end
  44.         end

  45.         if iskeydown(3,9) then --left
  46.                 if edit.cx > 1 then
  47.                         edit.cx = edit.cx - 1
  48.                 end
  49.         end

  50.         if iskeydown(2,8) then --right
  51.                 edit.cx = edit.cx + 1
  52.         end

  53.         draw()
  54.         sleep(1)

  55.         edit.t = edit.t + 1
  56.         if edit.t>10000 then
  57.                 edit.t = 0
  58.         end

  59. end
复制代码



icon

icon
发表于 2023-3-1 08:39:51 | 显示全部楼层
厉害厉害, 求开源
发表于 2023-3-3 08:10:56 | 显示全部楼层
不错呦,前排支持一下
 楼主| 发表于 2023-3-9 11:17:31 | 显示全部楼层
女神节重要更新
分割线
---------------------------------------------------------------------
内置16*16中文常用点阵字库 6690简体中字 再也不需要为中文显示而烦恼了
新增两个函数
function print_line(x,y,str)
print_char(x,y,a0,a1)
a0,a1对应于中文的cp936编码
发表于 2023-3-15 08:39:49 | 显示全部楼层
厉害厉害。
发表于 2023-3-15 16:29:52 | 显示全部楼层
熟悉 GNU 那一套用 gint 还挺方便的
https://www.cncalc.org/thread-25230-1-1.html
 楼主| 发表于 2023-3-31 14:21:11 | 显示全部楼层
本帖最后由 地主家的好儿子 于 2023-3-31 14:25 编辑

4月1日前重要更新
分割线
--------------------------------------
内置动画库 类似于tween或flux的动画库 CTween

这样做动画就方便很多了
一样将cwteen 放在与main.lua同一位置
local ctween = require “ctween”
api 参考
ctween.to(obj, time, vars) 添加动画
ctween.update(dt)  动画更新对象,写在update中
发表于 2023-4-1 21:02:20 | 显示全部楼层
地主家的好儿子 发表于 2023-3-31 14:21
4月1日前重要更新
分割线
--------------------------------------

厉害,怎么实现的啊
发表于 2023-4-3 22:31:53 | 显示全部楼层
前排,楼主优秀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-2-27 02:02 , Processed in 0.062564 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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