http_app.lua 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. local httpplus = require "httpplus"
  2. --加载AirCAMERA_1030驱动文件
  3. local air_camera = require "AirCAMERA_1030"
  4. --打开AirCAMERA_1030摄像头
  5. --拍摄一张1280*720分辨率的照片,通过http上传到服务器;
  6. --上传结束后,等待10秒钟重复执行拍照和上传的动作;
  7. local function http_upload_photo_task_func()
  8. --打开摄像头
  9. local result = air_camera.open()
  10. --如果打开失败,直接退出这个函数
  11. if not result then
  12. log.error("http_upload_photo_task_func error", "air_camera.open fail")
  13. return
  14. end
  15. --拍摄一张1280*720分辨率的照片,通过http上传到服务器;
  16. --上传结束后,等待10秒钟重复执行拍照和上传的动作;
  17. while true do
  18. --拍摄一张1280*720分辨率的照片
  19. --如果拍摄成功,result中存储是照片数据
  20. --如果拍摄失败,result为false
  21. result = air_camera.capture()
  22. --如果拍摄失败,关闭摄像头,并且直接退出这个函数
  23. if not result then
  24. log.error("http_upload_photo_task_func error", "air_camera.capture fail")
  25. air_camera.close()
  26. return
  27. end
  28. --检查网卡(本demo使用的是socket.LWIP_STA网卡)连接状态
  29. --socket.dft()为当前使用的网卡
  30. log.info("http_upload_photo_task_func", "socket.adapter(socket.dft())", socket.adapter(socket.dft()))
  31. --如果网卡(本demo使用的是socket.LWIP_STA网卡)还没有连接成功
  32. if not socket.adapter(socket.dft()) then
  33. --在此处阻塞等待WIFI连接成功的消息"IP_READY"
  34. --或者等待30秒超时退出阻塞等待状态
  35. --如果没有等到"IP_READY"消息,关闭摄像头,并且直接退出这个函数
  36. if not sys.waitUntil("IP_READY", 30000) then
  37. log.error("http_upload_photo_task_func error", "ip network timeout")
  38. air_camera.close()
  39. return
  40. end
  41. end
  42. -- 通过网卡(本demo使用的是socket.LWIP_STA网卡)将拍摄到的照片数据result上传到服务器upload.air32.cn
  43. -- 如果上传成功,电脑上浏览器打开https://www.air32.cn/upload/data/jpg/,打开对应的测试日期目录,点击具体的测试时间照片,可以查看摄像头拍照上传的照片
  44. -- 执行httpplus.request后,等待服务器的http应答,此处会阻塞当前task,等待整个过程成功结束或者出现错误异常结束
  45. -- code表示结果,number类型,详细说明参考API手册,一般来说:
  46. -- 200表示成功
  47. -- 小于0的值表示出错,例如-8表示超时错误
  48. -- 其余结果值参考API手册
  49. local code = httpplus.request({
  50. url = "http://upload.air32.cn/api/upload/jpg",
  51. method = "POST",
  52. body = result
  53. })
  54. log.info("http_upload_photo_task_func", "httpplus.request", code)
  55. -- 打印内存信息, 调试用
  56. log.info("sys", rtos.meminfo())
  57. log.info("sys", rtos.meminfo("sys"))
  58. log.info("psram", rtos.meminfo("psram"))
  59. -- 等待10秒钟
  60. sys.wait(10000)
  61. end
  62. --关闭摄像头
  63. air_camera.close()
  64. end
  65. --创建并且启动一个task
  66. --运行这个task的主体函数http_upload_photo_task_func
  67. sys.taskInit(http_upload_photo_task_func)