亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

合山市| 奉新县| 栾城县| 蓝田县| 兴隆县| 寿阳县| 德江县| 高密市| 建阳市| 于田县| 湖北省| 彰化市| 云浮市| 黔南| 德安县| 务川| 女性| 和平区| 烟台市| 东兰县| 来安县| 天长市| 屏南县| 扶余县| 凭祥市| 资源县| 监利县| 集安市| 高邑县| 安多县| 芦溪县| 明水县| 玉溪市| 伊春市| 石河子市| 武胜县| 定南县| 乳源| 临安市| 青神县| 都兰县|