I know this maybe could be to older...but I think it could help someone. It's a modded version source code of this plugin. I think it's easier to understand and use.

Code:
SerialPort = {Stored = {}};
SerialPort.Version = 1.3;
function SerialPort.Init(portNumber)
   local axComPort={}
   netms=0
   axComPort[portNumber]=luacom.CreateObject("NETCommOCX.NETComm")
   if (axComPort[portNumber]==nil) then
       axComPort[portNumber]=luacom.CreateObject("MSCommLib.MSComm")
       if (axComPort[portNumber]==nil) then
           --return false
           return nil;
       else
           netms=1
           axComPort[portNumber].CommPort=portNumber
           return axComPort[portNumber];
           --return true
       end
   else
       axComPort[portNumber].CommPort=portNumber
       return axComPort[portNumber];
       --return true
   end
end
-------------------------------------------------------
function SerialPort.TerminateAll(handle)
   handle=nil
end
-------------------------------------------------------
function SerialPort.Terminate(handle)
   handle.PortOpen=false
   handle=nil
end
-------------------------------------------------------
function SerialPort.Open(handle, port)
   --local oldPort = handle.CommPort
   handle.CommPort=port;
   handle.PortOpen=true;
   return handle.PortOpen;
   --handle.CommPort = oldPort
end
-------------------------------------------------------
function SerialPort.IsOpen(handle)
   return handle.PortOpen
end
-------------------------------------------------------
function SerialPort.Close(handle, port)
   --local oldPort = handle.CommPort
   handle.CommPort=port
   handle.PortOpen=false
   --handle.CommPort = oldPort
   return handle.PortOpen
end
-------------------------------------------------------
function SerialPort.SetSettings(handle,nBauds,nParity,nDatabit,nStopbit,nFlowcontrol)
   handle.Settings=nBauds..nParity..nDatabit..nStopbit..nFlowcontrol
end
-------------------------------------------------------
function SerialPort.ListAvaliblePorts(handle,nStart,nEnd)
   local ports={}
   local oldPort = handle.CommPort
   for x = nStart, nEnd do
      if x ~= 4 and x~= 5 then
         handle.CommPort=x
          if (handle.PortOpen==true) then
             --port is already open
          else
             handle.PortOpen=true
             if (handle.PortOpen==true) then
                  Table.Insert(ports, Table.Count(ports)+1, x);
                  handle.PortOpen=false
               end
          end
      end
   end
   if Table.Count(ports)>1 then
      return ports
   else
      return nil;
   end
end

function SerialPort.SetP(handle, port)
   handle.CommPort=port
end
function SerialPort.CleanBufferCount(handle)
   handle.InBufferCount = 0;
end
-------------------------------------------------------
function SerialPort.SetRTS(handle, nRTS)
   handle.RTSEnable=nRTS
end
-------------------------------------------------------
function SerialPort.SetDTR(handle, nDTR)
   handle.DTREnable=nDTR
end
-------------------------------------------------------
function SerialPort.GetRTS(handle)
   return handle.RTSEnable
end
-------------------------------------------------------
function SerialPort.GetDTR(handle)
   return handle.DTREnable
end
-------------------------------------------------------
function SerialPort.Output(handle,sOutput,nBreak)
   if (nBreak==true) then
      sOutput=sOutput..String.Char(13)
   end
   handle.Output=sOutput
end
-------------------------------------------------------
function SerialPort.Input(handle)
   if (netms==1) then
      return handle.Input
   else
      return handle.InputData
   end
end
-------------------------------------------------------
function SerialPort.BufferCount(handle)
   return handle.InBufferCount
end
-------------------------------------------------------
function SerialPort.InputLen(handle)
   return handle.InputLen
end
-------------------------------------------------------
function SerialPort.RegisterMscomm()
   bOK = Registry.DoesKeyExist(HKEY_CLASSES_ROOT,"CLSID\\{648A5600-2C6E-101B-82B6-000000000014}\\InprocServer32");
   if (bOK) then
      return false
   else
      PSDK.ExportArchive(3000, "AutoPlay\\Docs\\mscomm.ocx");
      System.RegisterActiveX("AutoPlay\\Docs\\mscomm.ocx");
      return true
   end
end
-------------------------------------------------------
function SerialPort.RegisterNetComm()
   bOK = Registry.DoesKeyExist(HKEY_CLASSES_ROOT,"CLSID\\{53867031-6B4D-4F7D-B089-5DFEC731F5FA}\\InprocServer32");
   if (bOK) then
      return false
   else
      PSDK.ExportArchive(3001, "AutoPlay\\Docs\\netcomm.ocx");
      System.RegisterActiveX("AutoPlay\\Docs\\netcomm.ocx");
      return true
   end
end