luat_lib_adc.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. @module adc
  3. @summary 数模转换
  4. @version 1.0
  5. @date 2020.07.03
  6. */
  7. #include "luat_base.h"
  8. #include "luat_adc.h"
  9. /**
  10. 打开adc通道
  11. @api adc.open(id)
  12. @int 通道id,与具体设备有关,通常从0开始
  13. @return boolean 打开结果
  14. @usage
  15. -- 打开adc通道2,并读取
  16. if adc.open(2) then
  17. log.info("adc", adc.read(2))
  18. end
  19. adc.close(2)
  20. */
  21. static int l_adc_open(lua_State *L) {
  22. if (luat_adc_open(luaL_checkinteger(L, 1), NULL) == 0) {
  23. lua_pushboolean(L, 1);
  24. }
  25. else {
  26. lua_pushboolean(L, 0);
  27. }
  28. return 1;
  29. }
  30. /**
  31. 读取adc通道
  32. @api adc.read(id)
  33. @int 通道id,与具体设备有关,通常从0开始
  34. @return int 原始值
  35. @return int 计算后的值
  36. @usage
  37. -- 打开adc通道2,并读取
  38. if adc.open(2) then
  39. log.info("adc", adc.read(2))
  40. end
  41. adc.close(2)
  42. */
  43. static int l_adc_read(lua_State *L) {
  44. int val = 0xFF;
  45. int val2 = 0xFF;
  46. if (luat_adc_read(luaL_checkinteger(L, 1), &val, &val2) == 0) {
  47. lua_pushinteger(L, val);
  48. lua_pushinteger(L, val2);
  49. return 2;
  50. }
  51. else {
  52. lua_pushinteger(L, 0xFF);
  53. return 1;
  54. }
  55. }
  56. /**
  57. 关闭adc通道
  58. @api adc.close(id)
  59. @int 通道id,与具体设备有关,通常从0开始
  60. @usage
  61. -- 打开adc通道2,并读取
  62. if adc.open(2) then
  63. log.info("adc", adc.read(2))
  64. end
  65. adc.close(2)
  66. */
  67. static int l_adc_close(lua_State *L) {
  68. luat_adc_close(luaL_checkinteger(L, 1));
  69. return 0;
  70. }
  71. #include "rotable.h"
  72. static const rotable_Reg reg_adc[] =
  73. {
  74. { "open" , l_adc_open , 0},
  75. { "read" , l_adc_read , 0},
  76. { "close" , l_adc_close, 0},
  77. { NULL, NULL , 0}
  78. };
  79. LUAMOD_API int luaopen_adc( lua_State *L ) {
  80. luat_newlib(L, reg_adc);
  81. return 1;
  82. }