千家信息网

LUA怎么实现串口数据采集与TCP单向透传

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,本篇内容主要讲解"LUA怎么实现串口数据采集与TCP单向透传",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"LUA怎么实现串口数据采集与TCP单向透传"吧!
千家信息网最后更新 2024年11月25日LUA怎么实现串口数据采集与TCP单向透传

本篇内容主要讲解"LUA怎么实现串口数据采集与TCP单向透传",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"LUA怎么实现串口数据采集与TCP单向透传"吧!

前言:

LUA在游戏行业使用广泛,尤其是编写一些扩展模块与C语言之间的协调工作。其效率高于其他很多脚本语言,本人从事工业控制方向的软件开发,想让这种脚本语言来适应自己的工作环境,编有了个想法。

  1. 为什么是转发而不是串口与网络的双向透传?

    测试的时候只有打开方式是"rb"串口才能读数据,理论上用"wb"可以双向读写串口,如果您知道怎么解决这个问题请告诉我。

  2. lua串口参数怎么设置?如波特率?

    我用minicom设置好参数再运行lua脚本

  3. 网络模块支持

    使用了luasocket库(luasocket-2.0.2)

    Lua 5.2.2 Copyright (C) 1994-2013 Lua.org, PUC-Rio

--init socksocket = require("socket")if nil == socket then        print( "socket environment load fail.")        os.exit();end--init server socketnet_host = "192.168.17.7"net_port = 8888server = socket.bind(net_host,net_port)if nil == server then        print( "server socket bind fail.")        os.exit();end::io_ret::--wair connectprint("wait tcp client connect...")client = server:accept(1)if nil == client then        print("tcp client connect fail")        os.exit()else        print("tcp client connect succ")endclient:settimeout(0)--init serial portserial_port = "/dev/ttyS2"serial = io.open(serial_port,"rb")if nil == serial then        print( "serial port open fail.")        os.exit();else        print("serial port open succ")end--serial to tcp proc while true do        local ser_byte = nil        local net_byte = nil                --network data proc        net_str,net_state = client:receive(1)                --check socket        if net_state ~= "closed" then                                --check serial port                ser_str = serial:read(1)                if ser_str then                        --serial data valid                        ser_byte = string.byte( ser_str )                                                --serial to tcp                        client:send( string.char(ser_byte) )                                                --debug output                        io.write( string.format("\nSER:[X]\n",ser_byte) )                end                        --[[                if net_str then                        --network data valid                        net_byte = string.byte( net_str )                                                --tcp to serial                        serial:write(100)--string.char(net_byte) )                                                --debug output                        io.write(string.format("\nNET:[X]\n",net_byte) )                end                ]]--        else                print("tcp client closed")                client = nil                serial = nil                goto io_ret        endendserial:close()client:close()

到此,相信大家对"LUA怎么实现串口数据采集与TCP单向透传"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0