ykm_rtu.lua 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  1. --- ykm_rtu 串口驱动
  2. -- @module
  3. -- @author lcg
  4. -- @release 2018.09.10
  5. require 'utils'
  6. -- 设置本文件被全体可见:
  7. module(..., package.seeall)
  8. require "ril"
  9. require "misc"
  10. require "audio"
  11. module(..., package.seeall)
  12. local uid = 2
  13. -- rtu的参数:
  14. rtu_para = {
  15. id = "00000001",
  16. -- server = "yfzhwlw.com",
  17. server = "120.27.222.26",
  18. port = 9999,
  19. user = "ftpbzytest",
  20. pwd = "123456",
  21. pix = "0" -- 默认高分辨率
  22. }
  23. -- 获取rtu所有参数
  24. local rtu_all_para = {
  25. id = "",
  26. imei = "",
  27. server = "",
  28. user = "",
  29. res = "0"
  30. }
  31. -- 注意:读rtu所有参数时,都要等到开机,初始化rtu结果通过mqtt上报回传后,才可以读;
  32. local imei = ""
  33. local imei_id = ""
  34. -- 主机下发指令集合
  35. local order = {
  36. ReadId = '#READID;',
  37. ReadImei = '#READIMEI;',
  38. ReadFtpAddr = '#READFTPSERVER;',
  39. ReadFtpUser = '#READFTPUSER;',
  40. ReadRes = '#READPICRESOLUTION;',
  41. ReadLog = '#READLOG;',
  42. SetId = "",
  43. SeRes = 'PicResolution#',
  44. SetFtpServer = 'FTPServer#' .. rtu_para.server .. '#' .. rtu_para.port .. '#*',
  45. SetFtpUser = 'FTPUser#' .. rtu_para.user .. '#*',
  46. SetFtpPwd = 'FTPPassword#' .. rtu_para.pwd .. '#*',
  47. -- WriteImei =
  48. SetImei = '#SETIMEI,',
  49. -- 重启依科曼rtu:
  50. Reboot = '#SYSRESET;',
  51. YF_RTU_Reboot = '#RESET;',
  52. -- 取消摄像头时间间隔拍照的指令
  53. Cancel_Time_Takephoto = '#SETPICSHOOTINTERVAL,0;',
  54. -- 取消摄像头定时刻拍照的指令
  55. Cancel_At_Time_Takephoto = 'PictureTime#24:00:00#*',
  56. Cancel_At_Time_Takephoto2 = '#SETFTPPICSENDTIMEPOINT,FFFFFF;',
  57. -- 拍照指令:
  58. TakePhoto = 'SendPicture#*',
  59. --升级指令
  60. Update = '#UPDATE;'
  61. }
  62. --- console.setup
  63. -- @param id 串口id
  64. -- @param baudrate 串口波特率
  65. -- @return 无
  66. -- @usage console.setup(1, 115200)
  67. function setup(id, baudrate)
  68. -- 默认串口2
  69. uart_id = id or 2
  70. -- 默认波特率115200
  71. baudrate = baudrate or 115200
  72. -- -- 初始化串口
  73. uart.setup(uart_id, baudrate, 8, uart.PAR_NONE, uart.STOP_1)
  74. end
  75. -- 清空串口的接收缓冲区:
  76. local function flush_uart_tmp()
  77. local clear_uart_tmp = uart.read(uid,'*l')
  78. log.error("****************************clear_uart_tmp:",clear_uart_tmp)
  79. end
  80. -- 设置RTU的ID:
  81. local function setid()
  82. flush_uart_tmp()
  83. uart.write(uid, '*' .. rtu_para.id .. '*(12,XXX=' .. imei_id .. ')*')
  84. sys.wait(100)
  85. local tmp = uart.read(uid,'*l')
  86. log.info("tmp:",tmp)
  87. while tmp:find("Config") == nil do
  88. tmp = uart.read(uid,'*l')
  89. log.info("tmp:",tmp)
  90. sys.wait(1000)
  91. local cnt = 0
  92. cnt = cnt + 1
  93. if cnt > 5 then
  94. cnt = 0
  95. rtu_init_res = "setid timeout!!!"
  96. sys.wait(10000)
  97. break
  98. end
  99. end
  100. end
  101. -- 设置RTU的IMEI:
  102. local function setimei()
  103. order.SetImei = order.SetImei .. imei ..';'
  104. flush_uart_tmp()
  105. uart.write(uid, order.SetImei)
  106. sys.wait(100)
  107. local tmp = uart.read(uid,'*l')
  108. log.info("tmp:",tmp)
  109. local cnt = 0
  110. while tmp:find("SETOK") == nil do
  111. tmp = uart.read(uid,'*l')
  112. log.info("tmp:",tmp)
  113. sys.wait(1000)
  114. cnt = cnt + 1
  115. if cnt > 5 then
  116. cnt = 0
  117. rtu_init_res = "setimei timeout!!!"
  118. sys.wait(10000)
  119. break
  120. end
  121. end
  122. end
  123. --
  124. function get_rtuinfo()
  125. flush_uart_tmp()
  126. uart.write(uid, "#READRTUINFO;")
  127. sys.wait(100)
  128. local tmp = uart.read(uid,'*l')
  129. log.info("tmp:",tmp)
  130. local cnt = 0
  131. while tmp:find("RTUINFO") == nil do
  132. tmp = uart.read(uid,'*l')
  133. log.info("tmp:",tmp)
  134. sys.wait(1000)
  135. cnt = cnt + 1
  136. if cnt > 20 then
  137. cnt = 0
  138. rtu_init_res = "read rtu info timeout!!!"
  139. sys.wait(10000)
  140. break
  141. end
  142. end
  143. return tmp
  144. end
  145. -- 设置RTU的ftp:
  146. local function setftp()
  147. order.SetFtpServer = '*' .. rtu_para.id .. '*' .. order.SetFtpServer
  148. order.SetFtpUser = '*' .. rtu_para.id .. '*' .. order.SetFtpUser
  149. order.SetFtpPwd = '*' .. rtu_para.id .. '*' .. order.SetFtpPwd
  150. flush_uart_tmp()
  151. uart.write(uid, order.SetFtpServer)
  152. sys.wait(100)
  153. local tmp = uart.read(uid,'*l')
  154. log.info("tmp:",tmp)
  155. local cnt = 0
  156. while tmp:find("FTPServer") == nil do
  157. tmp = uart.read(uid,'*l')
  158. log.info("tmp:",tmp)
  159. sys.wait(1000)
  160. cnt = cnt + 1
  161. if cnt > 5 then
  162. cnt = 0
  163. rtu_init_res = "set FTPServer timeout!!!"
  164. sys.wait(10000)
  165. break
  166. end
  167. end
  168. cnt = 0
  169. flush_uart_tmp()
  170. uart.write(uid, order.SetFtpUser)
  171. sys.wait(100)
  172. tmp = uart.read(uid,'*l')
  173. log.info("tmp:",tmp)
  174. while tmp:find("FTPUser") == nil do
  175. tmp = uart.read(uid,'*l')
  176. log.info("tmp:",tmp)
  177. sys.wait(1000)
  178. cnt = cnt + 1
  179. if cnt > 5 then
  180. cnt = 0
  181. rtu_init_res = "set FTPUser timeout!!!"
  182. sys.wait(10000)
  183. break
  184. end
  185. end
  186. cnt = 0
  187. flush_uart_tmp()
  188. uart.write(uid, order.SetFtpPwd)
  189. sys.wait(100)
  190. tmp = uart.read(uid,'*l')
  191. log.info("tmp:",tmp)
  192. while tmp:find("FTPPassword") == nil do
  193. tmp = uart.read(uid,'*l')
  194. log.info("tmp:",tmp)
  195. sys.wait(1000)
  196. cnt = cnt + 1
  197. if cnt > 5 then
  198. cnt = 0
  199. rtu_init_res = "set FTPPassword timeout!!!"
  200. sys.wait(10000)
  201. break
  202. end
  203. end
  204. end
  205. -- 开机配置图片分辨率:
  206. local function setres(res)
  207. res = res or 0
  208. order.PicResolution = '*' .. rtu_para.id .. '*' .. 'PicResolution#' .. res .. '#*'
  209. flush_uart_tmp()
  210. uart.write(uid, order.PicResolution)
  211. sys.wait(100)
  212. local tmp = uart.read(uid,'*l')
  213. log.info("tmp:",tmp)
  214. while tmp:find("Set PicResolution") == nil or tmp:find("SendPicture") == nil do
  215. tmp = uart.read(uid,'*l')
  216. log.info("tmp:",tmp)
  217. sys.wait(1000)
  218. end
  219. end
  220. -- 屏幕、平台下发配置图片分辨率:
  221. function control_setres(res)
  222. res = res or 0
  223. order.SeRes = '*' .. imei_id .. '*' .. 'PicResolution#' .. res .. '#*'
  224. flush_uart_tmp()
  225. uart.write(uid, order.SeRes)
  226. log.info("order.SeRes:",order.SeRes)
  227. -- sys.wait(100)
  228. tmp = uart.read(uid,'*l')
  229. log.info("tmp:",tmp)
  230. -- while tmp:find("OK") == nil do
  231. -- local cnt = 0
  232. -- tmp = uart.read(uid,'*l')
  233. -- log.info("tmp:",tmp)
  234. -- cnt = cnt + 1
  235. -- -- 如果超过500*10ms = 5s,跳出循环
  236. -- if cnt >= 10 then
  237. -- break
  238. -- end
  239. -- sys.wait(500)
  240. -- end
  241. end
  242. -- 配置RTU参数:
  243. local function RtuConfig()
  244. -- 设置Imei:
  245. setimei()
  246. sys.wait(1000)
  247. -- 设置FTP服务器:
  248. setftp()
  249. sys.wait(1000)
  250. -- 设置默认分辨率:高
  251. -- setres(9)
  252. -- sys.wait(1000)
  253. -- 设置ID:
  254. setid()
  255. sys.wait(1000)
  256. -- 重启:rtu
  257. flush_uart_tmp()
  258. -- uart.write(uid,order.Reboot)
  259. uart.write(uid,order.YF_RTU_Reboot)
  260. end
  261. -- 重启依科曼rtu:
  262. function RtuReboot()
  263. flush_uart_tmp()
  264. uart.write(uid,order.Reboot)
  265. end
  266. -- 升级云飞rtu:
  267. function YF_RtuUpdate()
  268. local u_cnt = 0
  269. flush_uart_tmp()
  270. uart.write(uid,order.Update)
  271. local temp = uart.read(uid,'*l')
  272. while temp == nil or temp == "" do
  273. temp = uart.read(uid,'*l')
  274. u_cnt = u_cnt + 1
  275. if u_cnt == 100 then
  276. temp = -1
  277. u_cnt = 0
  278. break
  279. end
  280. sys.wait(100)
  281. end
  282. log.warn("return data is=============================:",temp)
  283. return temp
  284. end
  285. -- 重启云飞rtu:
  286. function YF_RTU_Reboot()
  287. flush_uart_tmp()
  288. uart.write(uid,order.YF_RTU_Reboot)
  289. end
  290. --上传RTU-LOG
  291. function UploadLog()
  292. local u_cnt = 0
  293. flush_uart_tmp()
  294. uart.write(uid,order.ReadLog)
  295. local temp = uart.read(uid,'*l')
  296. while temp == nil or temp == "" do
  297. temp = uart.read(uid,'*l')
  298. u_cnt = u_cnt + 1
  299. if u_cnt == 100 then
  300. u_cnt = 0
  301. temp = -1
  302. break
  303. end
  304. sys.wait(100)
  305. end
  306. log.warn("return log status=============================:",temp)
  307. return temp
  308. end
  309. -- 取消rtu的定时间间隔拍照:
  310. function Rtu_Cancel_Time()
  311. flush_uart_tmp()
  312. uart.write(uid,order.Cancel_Time_Takephoto)
  313. end
  314. -- 取消rtu的定时刻拍照:
  315. function Rtu_Cancel_AtTime()
  316. flush_uart_tmp()
  317. uart.write(uid,'*' .. imei_id .. '*' .. order.Cancel_At_Time_Takephoto)
  318. sys.wait(2000)
  319. flush_uart_tmp()
  320. -- uart.write(uid,order.Cancel_At_Time_Takephoto2)
  321. -- flush_uart_tmp()
  322. end
  323. -- 拍照:
  324. function takephoto()
  325. local take_err_flag,cnt = 0,0
  326. flush_uart_tmp()
  327. uart.write(uid,order.TakePhoto)
  328. sys.wait(2000)
  329. local tmp = uart.read(uid,'*l')
  330. log.info("tmp:",tmp)
  331. while tmp:find("ok") == nil do
  332. tmp = uart.read(uid,'*l')
  333. log.info("tmp:",tmp)
  334. sys.wait(200)
  335. cnt = cnt + 1
  336. -- 如果超过100*100ms = 10s,跳出循环
  337. if cnt >= 25 then
  338. cnt = 0
  339. flush_uart_tmp()
  340. --uart.write(uid,order.TakePhoto)
  341. sys.wait(2000)
  342. tmp = uart.read(uid,'*l')
  343. log.info("tmp:",tmp)
  344. while tmp:find("ok") == nil do
  345. tmp = uart.read(uid,'*l')
  346. log.info("tmp:",tmp)
  347. sys.wait(200)
  348. cnt = cnt + 1
  349. -- 如果超过100*100ms = 10s,跳出循环
  350. if cnt >= 25 then
  351. cnt = 0
  352. flush_uart_tmp()
  353. --uart.write(uid,order.TakePhoto)
  354. sys.wait(2000)
  355. tmp = uart.read(uid,'*l')
  356. log.info("tmp:",tmp)
  357. while tmp:find("ok") == nil do
  358. tmp = uart.read(uid,'*l')
  359. log.info("tmp:",tmp)
  360. sys.wait(200)
  361. cnt = cnt + 1
  362. -- 如果超过100*100ms = 10s,跳出循环
  363. if cnt >= 25 then
  364. take_err_flag = 1
  365. break
  366. end
  367. end
  368. break
  369. end
  370. end
  371. break
  372. end
  373. end
  374. if take_err_flag == 0 then
  375. -- 接收到拍照指令的响应后,播放快门声音
  376. audio.play('/ldata/kuaimen.mp3')
  377. log.warn("===================takephoto is ok!!!")
  378. else
  379. -- 播放音效标识拍照失败
  380. audio.play('/ldata/ykmrtuok.mp3')
  381. log.warn("===================takephoto is fail!!!")
  382. end
  383. return tmp
  384. end
  385. -- rtu初始化的结果:
  386. rtu_init_res = ""
  387. sys.taskInit(
  388. function()
  389. setup(uid, 9600)
  390. -- 上点开机15s后,开始设置rtu:
  391. sys.wait(30000)
  392. imei = misc.getimei()
  393. imei_id = string.sub(imei, -8, -1)
  394. -- 注意:防止imei的后八位的前几位连续位0:要进行8位格式化:
  395. imei_id = string.format("%08d",imei_id)
  396. -- 拼接拍照的命令格式:
  397. order.TakePhoto = '*' .. imei_id .. '*' .. order.TakePhoto
  398. log.info("----------------------------imei_id:",imei_id)
  399. -- 读取rtu信息:
  400. -- 1、读取rtu的id,判断是否需要重新设置;同时id发送命令用到;
  401. flush_uart_tmp()
  402. uart.write(uid, order.ReadId)
  403. sys.wait(100)
  404. local tmp = uart.read(uid,'*l')
  405. log.info("tmp:",tmp)
  406. local cnt = 0
  407. while true do
  408. while tmp:match("#RTUID,(.+);") == nil or tmp == "" do
  409. flush_uart_tmp()
  410. uart.write(uid, order.ReadId)
  411. sys.wait(1000)
  412. tmp = uart.read(uid,'*l')
  413. log.info("tmp:",tmp)
  414. cnt = cnt +1
  415. if cnt >= 60 then
  416. log.warn("rtu has no reponse!!!")
  417. rtu_init_res = "rtu has no reponse!!!"
  418. sys.wait(1000)
  419. -- rtu配置完成,播放提示音:
  420. audio.play('/ldata/button.mp3')
  421. sys.wait(300)
  422. audio.play('/ldata/button.mp3')
  423. sys.wait(300)
  424. audio.play('/ldata/button.mp3')
  425. sys.wait(300)
  426. audio.play('/ldata/button.mp3')
  427. sys.wait(300)
  428. return rtu_init_res
  429. end
  430. end
  431. local test = tmp:match("#RTUID,(.+);")
  432. log.warn("type(test):",type(test),test)
  433. if type(test) == "string" then
  434. log.warn(" is string")
  435. break
  436. end
  437. end
  438. rtu_para.id = tmp:match("#RTUID,(.+);")
  439. -- rtu_para.id = string.format("%08d",rtu_para.id)
  440. -- 得到:#RTUID,0000 0001;
  441. log.info("rtu_para.id:", rtu_para.id)
  442. -- 判断:如果不是imei的后八位,则重新设置rtu参数:
  443. -- uart.write(uid, '*' .. rtu_para.id .. '*(12,XXX=' .. '00000001' .. ')*')
  444. -- local addr = read_rtu_ftpaddr()
  445. -- log.error("read_rtu_ftpaddr:",addr)
  446. rtu_init_res = "read rtu id is:" .. rtu_para.id
  447. if rtu_para.id == 1 or rtu_para.id == '1' then
  448. log.warn("rtu_init_res is 1!!!")
  449. rtu_para.id = "00000001"
  450. end
  451. sys.wait(10000)
  452. -- if rtu_para.id ~= string.sub(misc.getimei(), -8, -1) or string.match(addr,"yfzhwlw") == "yfzhwlw" then
  453. if rtu_para.id ~= imei_id then
  454. -- Rtu_Cancel_Time()
  455. -- sys.wait(2000)
  456. -- Rtu_Cancel_AtTime()
  457. sys.wait(5000)
  458. rtu_init_res = "start to set rtu para!"
  459. sys.wait(2000)
  460. RtuConfig()
  461. log.info("restart rtu here!")
  462. rtu_init_res = "rtu match ok and restarting!"
  463. sys.wait(30000)
  464. -- 30s后,等rtu重启的时间后,再播放成功的声音;
  465. -- rtu配置完成,播放提示音:
  466. audio.play('/ldata/ykmrtuok.mp3')
  467. sys.wait(1000)
  468. audio.play('/ldata/ykmrtuok.mp3')
  469. sys.wait(1000)
  470. audio.play('/ldata/ykmrtuok.mp3')
  471. sys.wait(1000)
  472. return rtu_init_res
  473. else
  474. -- Rtu_Cancel_Time()
  475. -- sys.wait(2000)
  476. -- Rtu_Cancel_AtTime()
  477. sys.wait(5000)
  478. log.info("rtu has matched and need not config!")
  479. rtu_init_res = "rtu has matched and need not config!!"
  480. sys.wait(10000)
  481. -- rtu配置完成,播放提示音:
  482. audio.play('/ldata/ykmrtuok.mp3')
  483. sys.wait(1000)
  484. audio.play('/ldata/ykmrtuok.mp3')
  485. sys.wait(1000)
  486. audio.play('/ldata/ykmrtuok.mp3')
  487. sys.wait(1000)
  488. return rtu_init_res
  489. end
  490. end
  491. )
  492. function read_rtu_id()
  493. -- 读取rtu的id
  494. flush_uart_tmp()
  495. uart.write(uid, order.ReadId)
  496. sys.wait(100)
  497. local tmp = uart.read(uid,'*l')
  498. log.info("tmp:",tmp)
  499. local cnt = 0
  500. while tmp == nil or tmp == "" do
  501. flush_uart_tmp()
  502. uart.write(uid, order.ReadId)
  503. sys.wait(1000)
  504. tmp = uart.read(uid,'*l')
  505. log.info("tmp:",tmp)
  506. cnt = cnt +1
  507. if cnt >= 6 then
  508. log.warn("read rtu id has no reponse")
  509. rtu_init_res = "read rtu id has no reponse"
  510. return rtu_init_res
  511. end
  512. end
  513. rtu_all_para.id = tmp:match("#RTUID,(.+);")
  514. rtu_all_para.id = string.format("%08d",rtu_all_para.id)
  515. log.info("rtu_all_para.id:", rtu_all_para.id)
  516. return rtu_all_para.id
  517. end
  518. function read_rtu_imei()
  519. -- 读取rtu imei
  520. flush_uart_tmp()
  521. uart.write(uid, order.ReadImei)
  522. sys.wait(100)
  523. local tmp = uart.read(uid,'*l')
  524. log.info("tmp:",tmp)
  525. local cnt = 0
  526. while tmp == nil or tmp == "" do
  527. flush_uart_tmp()
  528. uart.write(uid, order.ReadImei)
  529. sys.wait(1000)
  530. tmp = uart.read(uid,'*l')
  531. log.info("tmp:",tmp)
  532. cnt = cnt +1
  533. if cnt >= 6 then
  534. log.warn("read rtu imei has no reponse")
  535. rtu_init_res = "read rtu imei has no reponse"
  536. return rtu_init_res
  537. end
  538. end
  539. rtu_all_para.imei = tmp:match("#IMEI,(.+);")
  540. -- rtu_all_para.imei = string.format("%015d",rtu_all_para.imei)
  541. log.info("rtu_all_para.imei:", rtu_all_para.imei)
  542. return rtu_all_para.imei
  543. end
  544. function read_rtu_ftpaddr()
  545. -- 读取rtu ftpaddr
  546. flush_uart_tmp()
  547. uart.write(uid, order.ReadFtpAddr)
  548. sys.wait(100)
  549. local tmp = uart.read(uid,'*l')
  550. log.info("tmp:",tmp)
  551. local cnt = 0
  552. while tmp == nil or tmp == "" do
  553. flush_uart_tmp()
  554. uart.write(uid, order.ReadFtpAddr)
  555. sys.wait(1000)
  556. tmp = uart.read(uid,'*l')
  557. log.info("tmp:",tmp)
  558. cnt = cnt +1
  559. if cnt >= 6 then
  560. log.warn("read rtu ftpaddr has no reponse")
  561. rtu_init_res = "read rtu ftpaddr has no reponse"
  562. return rtu_init_res
  563. end
  564. end
  565. rtu_all_para.server = tmp:match("#FTPSERVERINF,(.+);")
  566. log.info("rtu_all_para.server:", rtu_all_para.server)
  567. return rtu_all_para.server
  568. end
  569. function read_rtu_ftpuser()
  570. -- 读取rtu ftpuser
  571. flush_uart_tmp()
  572. uart.write(uid, order.ReadFtpUser)
  573. sys.wait(100)
  574. local tmp = uart.read(uid,'*l')
  575. log.info("tmp:",tmp)
  576. local cnt = 0
  577. while tmp == nil or tmp == "" do
  578. flush_uart_tmp()
  579. uart.write(uid, order.ReadFtpUser)
  580. sys.wait(1000)
  581. tmp = uart.read(uid,'*l')
  582. log.info("tmp:",tmp)
  583. cnt = cnt +1
  584. if cnt >= 6 then
  585. log.warn("read rtu ftpuser has no reponse")
  586. rtu_init_res = "read rtu ftpuser has no reponse"
  587. return rtu_init_res
  588. end
  589. end
  590. rtu_all_para.user = tmp:match("#FTPUSERINF,(.+);")
  591. log.info("rtu_all_para.user:", rtu_all_para.user)
  592. return rtu_all_para.user
  593. end
  594. function read_rtu_res()
  595. -- 读取rtu res
  596. flush_uart_tmp()
  597. uart.write(uid, order.ReadRes)
  598. sys.wait(100)
  599. local tmp = uart.read(uid,'*l')
  600. log.info("tmp:",tmp)
  601. local cnt = 0
  602. while tmp == nil or tmp == "" do
  603. flush_uart_tmp()
  604. uart.write(uid, order.ReadRes)
  605. sys.wait(1000)
  606. tmp = uart.read(uid,'*l')
  607. log.info("tmp:",tmp)
  608. cnt = cnt +1
  609. if cnt >= 6 then
  610. log.warn("read rtu res has no reponse")
  611. rtu_init_res = "read rtu res has no reponse"
  612. return rtu_init_res
  613. end
  614. end
  615. rtu_all_para.res = tmp:match("#PICRESOLUTIONINF,(.+);")
  616. log.info("rtu_all_para.res:", rtu_all_para.res)
  617. return rtu_all_para.res
  618. end
  619. -- 注意:读rtu所有参数时,都要等到开机,初始化rtu结果通过mqtt上报回传后,才可以读;
  620. function read_rtu_para()
  621. rtu_all_para.id = read_rtu_id()
  622. rtu_all_para.imei = read_rtu_imei()
  623. rtu_all_para.server = read_rtu_ftpaddr()
  624. rtu_all_para.user = read_rtu_ftpuser()
  625. rtu_all_para.res = read_rtu_res()
  626. local dat = json.encode(rtu_all_para)
  627. log.info("upload read_rtu_para:", dat)
  628. return dat
  629. end
  630. function Rtu_Set_Ftp(host,port,user,pwd)
  631. log.error("%%%%%%%%%%%%%%%%%%%%%%%%%%Rtu_Set_Ftp is running:")
  632. -- *00000001*FTPServer#yfzhwlw.com#21#*
  633. local set_ftpserver = '*' .. rtu_para.id .. '*FTPServer#' .. host .. '#' .. port .. '#*'
  634. local set_ftpuser = '*' .. rtu_para.id .. '*FTPUser#' .. user .. '#*'
  635. local set_ftppwd = '*' .. rtu_para.id .. '*FTPPassword#' .. pwd .. '#*'
  636. log.error("set_ftpserver will set:",set_ftpserver)
  637. log.error("set_ftpuser will set:",set_ftpuser)
  638. log.error("set_ftppwd will set:",set_ftppwd)
  639. flush_uart_tmp()
  640. uart.write(uid, set_ftpserver)
  641. sys.wait(100)
  642. local set_ftpserver_tmp = uart.read(uid,'*l')
  643. log.info("set_ftpserver_tmp:",set_ftpserver_tmp)
  644. while set_ftpserver_tmp:find("Set FTPServer OK") == nil do
  645. set_ftpserver_tmp = uart.read(uid,'*l')
  646. log.info("set_ftpserver_tmp:",set_ftpserver_tmp)
  647. sys.wait(1000)
  648. end
  649. flush_uart_tmp()
  650. uart.write(uid, set_ftpuser)
  651. sys.wait(100)
  652. local set_ftpuser_tmp = uart.read(uid,'*l')
  653. log.info("set_ftpuser_tmp:",set_ftpuser_tmp)
  654. while set_ftpuser_tmp:find("Set FTPUser OK") == nil do
  655. set_ftpuser_tmp = uart.read(uid,'*l')
  656. log.info("set_ftpuser_tmp:",set_ftpuser_tmp)
  657. sys.wait(1000)
  658. end
  659. flush_uart_tmp()
  660. uart.write(uid, set_ftppwd)
  661. sys.wait(100)
  662. local set_ftppwd_tmp = uart.read(uid,'*l')
  663. log.info("set_ftppwd_tmp:",set_ftppwd_tmp)
  664. while set_ftppwd_tmp:find("Set FTPPassword OK") == nil do
  665. set_ftppwd_tmp = uart.read(uid,'*l')
  666. log.info("set_ftppwd_tmp:",set_ftppwd_tmp)
  667. sys.wait(1000)
  668. end
  669. return set_ftpserver_tmp,set_ftpuser_tmp,set_ftppwd_tmp
  670. end