中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LUA怎么實現串口數據采集與TCP單向透傳

發布時間:2021-07-27 22:23:29 來源:億速云 閱讀:267 作者:chen 欄目:云計算

本篇內容主要講解“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 sock
socket = require("socket")
if nil == socket then
	print( "socket environment load fail.")
	os.exit();
end

--init server socket
net_host = "192.168.17.7"
net_port = 8888
server = socket.bind(net_host,net_port)
if nil == server then
	print( "server socket bind fail.")
	os.exit();
end

::io_ret::

--wair connect
print("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")
end

client:settimeout(0)

--init serial port

serial_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:[%02X]\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:[%02X]\n",net_byte) )
		end
		]]--
	else
		print("tcp client closed")
		client = nil
		serial = nil
		goto io_ret
	end
end

serial:close()
client:close()

到此,相信大家對“LUA怎么實現串口數據采集與TCP單向透傳”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

lua
AI

梓潼县| 益阳市| 江阴市| 林周县| 靖远县| 陵川县| 太保市| 修文县| 新巴尔虎左旗| 美姑县| 眉山市| 绍兴县| 比如县| 江源县| 宜宾县| 仲巴县| 襄汾县| 龙南县| 桐梓县| 尉犁县| 辛集市| 兰西县| 云和县| 平原县| 福清市| 方正县| 定襄县| 屯留县| 新巴尔虎左旗| 湖南省| 光泽县| 东台市| 诸暨市| 淮安市| 和顺县| 民勤县| 南京市| 永靖县| 密山市| 三台县| 通渭县|