码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 如何让你的程序支持lua脚本


    最近做了一个控制机械臂的程序,使用C语言开发的,调试的时候总是需要修改代码来调整运动轨迹,

    总是要编译,实在烦人

    不过有个方法就是使用lua来调试运动逻辑

    代码如下:

    1. static int lua_getPos(lua_State*l)
    2. {
    3. int x,y;
    4. x=getX();
    5. y=getY();
    6. lua_pushnumber(l,x);
    7. lua_pushnumber(l,y);
    8. return 2;//返回两个整数到lua
    9. }
    10. static int lua_isrunning(lua_State*l)
    11. {
    12. int isRun=getIsRuning();
    13. lua_pushnumber(l,isRun);
    14. return 1;//返回一个整数到lua
    15. }
    16. static int lua_up(lua_State*l)
    17. {
    18. size_t step=luaL_checkinteger(l,1);
    19. //向上动作
    20. up(step);
    21. return 0;
    22. }
    23. static int lua_down(lua_State*l)
    24. {
    25. size_t step=luaL_checkinteger(l,1);
    26. //向下动作
    27. down(step);
    28. return 0;
    29. }
    30. static int lua_left(lua_State*l)
    31. {
    32. size_t step=luaL_checkinteger(l,1);
    33. //向左动作
    34. left(step);
    35. return 0;
    36. }
    37. static int lua_right(lua_State*l)
    38. {
    39. size_t step=luaL_checkinteger(l,1);
    40. //向右动作
    41. right(step);
    42. return 0;
    43. }
    44. lua_State* initLua()
    45. {
    46. lua_State *L;
    47. L=luaL_newstate();
    48. luaL_openlibs(L);
    49. lua_checkstack(L,1000);
    50. lua_register(L,"go_left",lua_left);
    51. lua_register(L,"go_right",lua_rigit);
    52. lua_register(L,"go_up",lua_up);
    53. lua_register(L,"go_down",lua_down);
    54. lua_register(L,"isRunning",lua_isrunning);
    55. lua_register(L,"getPos",lua_getPos);
    56. return L;
    57. }
    58. lua_State* LoadScript(char *file)
    59. {
    60. lua_State* L=initLua();
    61. if(luaL_loadfile(L,file)||lua_pcall(L,0,0,0))
    62. {
    63. lua_pop(L,1);
    64. lua_close(L);
    65. return NULL;
    66. }
    67. return L;
    68. }
    69. int main(int argc,char **argv)
    70. {
    71. loadScript(argv[1]);
    72. }

    编译需要链接lua库,之后运行程序的时候,指定一个lua脚本就可以了,以下是示例

    1. --main.lua
    2. --向左走10步
    3. go_left(10)
    4. --向下走100步
    5. go_down(100)
    6. --向耐听走15步
    7. go_right(15)
    8. x,y=getPos()
    9. print("x="..x..",y="..y)
    10. running=isRunning()
    11. if(running)
    12. print("is Running")

  • 相关阅读:
    【毕业设计】深度学习人脸性别年龄识别系统 - python
    【Metaverse系列一】元宇宙的奥秘
    AIGC AI绘画 设计Logo指令大全
    Linux 中的一堆目录上运行 mvn clean
    【开放问题】代码越少开发效率越高?可能是没被坑过
    MindSpore易点通·精讲系列–网络构建之Conv2d算子
    java学习day7(Java基础)方法和封装
    STM32移植FAT文件系统
    shell入门概述
    QT中出现ASSERT failure in QList::at: “index out of range”的情况和解决办法
  • 原文地址:https://blog.csdn.net/kof98765/article/details/133761068
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号