main.lua 950 B

12345678910111213141516171819202122232425262728293031
  1. PROJECT = "modbus_rtu"
  2. VERSION = "1.0.0"
  3. sys = require("sys")
  4. sys.taskInit(function()
  5. uart.on(1, "recv", function(id, len)
  6. local data = uart.read(1, len)
  7. local _,addr,Instructions,reg,value,crc = pack.unpack(data,"<bbbHH")
  8. log.info("温度:", value.."℃" )
  9. end)
  10. local function modbus_send(uart_id,slaveaddr,Instructions,reg,value)
  11. local data = (string.format("%02x",slaveaddr)..string.format("%02x",Instructions)..string.format("%04x",reg)..string.format("%04x",value)):fromHex()
  12. local modbus_crc_data= pack.pack('<h', crypto.crc16("MODBUS",data))
  13. local data_tx = data..modbus_crc_data
  14. uart.write(uart_id,data_tx)
  15. end
  16. while 1 do
  17. modbus_send(1,0x01,0x03,0x01,0x01)
  18. sys.wait(2000)
  19. end
  20. end)
  21. -- 用户代码已结束---------------------------------------------
  22. -- 结尾总是这一句
  23. sys.run()
  24. -- sys.run()之后后面不要加任何语句!!!!!