Last active
May 31, 2022 11:28
-
-
Save WanpengQian/43cc7762533b7c0f358ff6a358272142 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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