Skip to content

Instantly share code, notes, and snippets.

@WanpengQian
Last active May 31, 2022 11:28
Show Gist options
  • Save WanpengQian/43cc7762533b7c0f358ff6a358272142 to your computer and use it in GitHub Desktop.
Save WanpengQian/43cc7762533b7c0f358ff6a358272142 to your computer and use it in GitHub Desktop.
vin = 0
vout = 0
sp = SerialPorts[1]
function string.tohex(str)
return (str:gsub('.', function (c)
return string.format('%02X', string.byte(c))
end))
end
function sendcmd()
local frame=0x96
local devaddr=0x01
local cmdtype=0x01
local cmdlength=0x04
local mode=0xA1
local dipstr=''
local cmdstr=''
dipstr=dipstr..string.tohex(string.char(frame))
cmdstr=cmdstr..string.char(frame)
dipstr=dipstr..string.tohex(string.char(devaddr))
cmdstr=cmdstr..string.char(devaddr)
dipstr=dipstr..string.tohex(string.char(cmdtype))
cmdstr=cmdstr..string.char(cmdtype)
dipstr=dipstr..string.tohex(string.char(cmdlength))
cmdstr=cmdstr..string.char(cmdlength)
dipstr=dipstr..string.tohex(string.char(mode))
cmdstr=cmdstr..string.char(mode)
dipstr=dipstr..string.tohex(string.char(vin))
cmdstr=cmdstr..string.char(vin)
dipstr=dipstr..string.tohex(string.char(vout))
cmdstr=cmdstr..string.char(vout)
local chksum = frame+devaddr+cmdtype+cmdlength+mode+vin+vout
if chksum > 0x100 then
chksum = chksum - 0x100
end
dipstr=dipstr..string.tohex(string.char(chksum))
cmdstr=cmdstr..string.char(chksum)
Controls.wanshantext.String=dipstr
if not sp.IsOpen then
sp:Open( 9600, 8, N )
end
sp:Write(cmdstr)
end
function lightinled(sel)
if sel==vin then
Controls.vinled[vin].Value=false
vin=0
else
for i = 1, 8 do
if i==sel then
Controls.vinled[i].Value=true
else
Controls.vinled[i].Value=false
end
end
vin=sel
end
end
Controls.vin[1].EventHandler = function()
lightinled(1)
end
Controls.vin[2].EventHandler = function()
lightinled(2)
end
Controls.vin[3].EventHandler = function()
lightinled(3)
end
Controls.vin[4].EventHandler = function()
lightinled(4)
end
Controls.vin[5].EventHandler = function()
lightinled(5)
end
Controls.vin[6].EventHandler = function()
lightinled(6)
end
Controls.vin[7].EventHandler = function()
lightinled(7)
end
Controls.vin[8].EventHandler = function()
lightinled(8)
end
Controls.vout[0].EventHandler = function()
vout=0
sendcmd()
end
Controls.vout[1].EventHandler = function()
vout=1
sendcmd()
end
Controls.vout[2].EventHandler = function()
vout=2
sendcmd()
end
Controls.vout[3].EventHandler = function()
vout=3
sendcmd()
end
Controls.vout[4].EventHandler = function()
vout=4
sendcmd()
end
Controls.vout[5].EventHandler = function()
vout=5
sendcmd()
end
Controls.vout[6].EventHandler = function()
vout=6
sendcmd()
end
Controls.vout[7].EventHandler = function()
vout=7
sendcmd()
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment