## 724UG
## 485串口收发数据
## 4G
直接上代码,代码比较简单,大家花10分钟就看懂,和普通的单片机一样写程序:
main.lua文件:
--PIN 设置引脚模式
module(...,package.seeall)
--导入引脚配置头文件
require"pins"
require"utils"
require"pm"
--蜂鸣器 输出模式 默认输出低电平 蜂鸣器不响
local Bell=pins.setup(pio.P0_6, 0,pio.PULLDOWN)
--继电器 输出模式 默认输出低电平 继电器不工作
local Control=pins.setup(pio.P0_11, 0)
--绿灯 输出模式 默认输出低电平 绿灯熄灭
local Led1=pins.setup(pio.P0_12, 0)
--红灯 输出模式 默认输出低电平 红灯熄灭
local Led2=pins.setup(pio.P0_9, 0)
--黄灯 输出模式 默认输出低电平 黄灯熄灭
local Led3=pins.setup(pio.P0_16, 0)
--串口485使能引脚
local EN485=pins.setup(pio.P0_19, 0)
local UART_ID = 2
local dataContaol=0
--配置并且打开串口
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)
--让所有工作起来
function controlData()
if dataContaol==0 then
dataContaol=1;
Led1(0)
Led2(0)
Led3(0)
Control(0)
elseif dataContaol==1 then
dataContaol=2
Led1(1)
Led2(1)
Led3(1)
Control(0)
elseif dataContaol==2 then
dataContaol=0
Led1(0)
Led2(0)
Led3(0)
Control(0)
end
log.info("dataContaol",dataContaol)
sys.timerStart(controlData,1000)
end
local function taskRead()
local cacheData,frameCnt = "",0
while true do
local s = uart.read(UART_ID,"*l")
sys.wait(10)
if s == "" then
if cacheData:len()>0 then
log.info("ata length:",cacheData)
EN485(1)
uart.write(UART_ID,cacheData)
sys.wait(1)
cacheData=""
log.info("send data\r\n")
EN485(0)
sys.wait(1)
end
else
log.info("get data\r\n")
cacheData = cacheData..s
end
end
end
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)
controlData()
sys.taskInit(taskRead)
pinsTY.lua文件:
--PIN 设置引脚模式
module(...,package.seeall)
--导入引脚配置头文件
require"pins"
require"utils"
require"pm"
--蜂鸣器 输出模式 默认输出低电平 蜂鸣器不响
local Bell=pins.setup(pio.P0_6, 0,pio.PULLDOWN)
--继电器 输出模式 默认输出低电平 继电器不工作
local Control=pins.setup(pio.P0_11, 0)
--绿灯 输出模式 默认输出低电平 绿灯熄灭
local Led1=pins.setup(pio.P0_12, 0)
--红灯 输出模式 默认输出低电平 红灯熄灭
local Led2=pins.setup(pio.P0_9, 0)
--黄灯 输出模式 默认输出低电平 黄灯熄灭
local Led3=pins.setup(pio.P0_16, 0)
--串口485使能引脚
local EN485=pins.setup(pio.P0_19, 0)
local UART_ID = 2
local dataContaol=0
--配置并且打开串口
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)
--让所有工作起来
function controlData()
if dataContaol==0 then
dataContaol=1;
Led1(0)
Led2(0)
Led3(0)
Control(0)
elseif dataContaol==1 then
dataContaol=2
Led1(1)
Led2(1)
Led3(1)
Control(0)
elseif dataContaol==2 then
dataContaol=0
Led1(0)
Led2(0)
Led3(0)
Control(0)
end
log.info("dataContaol",dataContaol)
sys.timerStart(controlData,1000)
end
local function taskRead()
local cacheData,frameCnt = "",0
while true do
local s = uart.read(UART_ID,"*l")
sys.wait(10)
if s == "" then
if cacheData:len()>0 then
log.info("ata length:",cacheData)
EN485(1)
uart.write(UART_ID,cacheData)
sys.wait(1)
cacheData=""
log.info("send data\r\n")
EN485(0)
sys.wait(1)
end
else
log.info("get data\r\n")
cacheData = cacheData..s
end
end
end
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)
controlData()
sys.taskInit(taskRead)
源代码在这里下载
链接:https://pan.baidu.com/s/1lVbWA8NWvWo1DXUJFVLdaw
提取码:9fhn
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.