Announcement
Collapse
No announcement yet.
serial port plugin for AMS 8.x
Collapse
X
-
This serial port plugin source code
Please compile to AMS8 plugin
I very need to this
Source Code : SerialPort.lua
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
Code:<ActionTemplates> <Action> <Name>SerialPort.Init</Name> <Description>Init the driver (LuaCom is needed) returns true if possible or false if not. You can register netcomm and mscomm if needed</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.Terminate</Name> <Description>close opened ports and free Com Object</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.TerminateAll</Name> <Description>Stop the driver, close opened ports and free Com Object</Description> <ReturnValueType>boolean</ReturnValueType> </Action> <Action> <Name>SerialPort.Open</Name> <Description>Open the working com port (use setport)</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.IsOpen</Name> <Description>Pool the driver and return port status</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.Close</Name> <Description>Close opened port</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.SetSettings</Name> <Description>Set settings for por connection</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>Baud rate</Name> <Description>avalible 110 300 600 1200 2400 9600 14400 19200 28800 38400 56000 128000 256000</Description> <Type>number</Type> <Default>9600</Default> <Required>1</Required> <EasyMode> <Default>"9600"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>Parity</Name> <Description>N: None E: Even M: Mark O: Odd S: Space</Description> <Type>string</Type> <Default>N</Default> <Required>1</Required> <EasyMode> <Default>"N"</Default> <DataType>string</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>Databits</Name> <Description>avalible 4, 5, 6, 7, 8</Description> <Type>number</Type> <Default>8</Default> <Required>1</Required> <EasyMode> <Default>"8"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>Stopbits</Name> <Description>avalible 1, 1.5, 2</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>Flowcontrol Handshacking</Name> <Description>0: None 1: XON/XOFF 2: RTS/CTS 3: RTS XON/XOFF</Description> <Type>number</Type> <Default>0</Default> <Required>1</Required> <EasyMode> <Default>"0"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.ListAvaliblePorts</Name> <Description>Return a table with avalible ports in the max, min range</Description> <ReturnValueType>table</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>PortStart</Name> <Description>starting number port</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>PortEnd</Name> <Description>end number port</Description> <Type>number</Type> <Default>16</Default> <Required>1</Required> <EasyMode> <Default>"16"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.SetRTS</Name> <Description>set rts line</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>RTS</Name> <Description>state of RTS line</Description> <Type>boolean</Type> <Default>true</Default> <Required>1</Required> <EasyMode> <Default>"true"</Default> <DataType>boolean</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.SetDTR</Name> <Description>set DTR line</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>DTR</Name> <Description>state of DTR line</Description> <Type>boolean</Type> <Default>true</Default> <Required>1</Required> <EasyMode> <Default>"true"</Default> <DataType>boolean</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.GetRTS</Name> <Description>get rts state</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.GetDTR</Name> <Description>get DTR state</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.Output</Name> <Description>Oiutput buffer to the serial port</Description> <ReturnValueType>boolean</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>Output</Name> <Description>String to output</Description> <Type>sting</Type> <Default></Default> <Required>1</Required> <EasyMode> <Default>""</Default> <DataType>string</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> <Arg> <Name>CRLF</Name> <Description>send CR LF at the end of output</Description> <Type>boolean</Type> <Default>true</Default> <Required>1</Required> <EasyMode> <Default>"true"</Default> <DataType>boolean</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.Input</Name> <Description>Get Input buffer</Description> <ReturnValueType>string</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.BufferCount</Name> <Description>return the buffer stored</Description> <ReturnValueType>number</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.InputLen</Name> <Description>Len of Input</Description> <ReturnValueType>number</ReturnValueType> <Arguments> <Arg> <Name>Port</Name> <Description>Port number</Description> <Type>number</Type> <Default>1</Default> <Required>1</Required> <EasyMode> <Default>"1"</Default> <DataType>number</DataType> <Constraints>none</Constraints> </EasyMode> </Arg> </Arguments> </Action> <Action> <Name>SerialPort.RegisterMscomm</Name> <Description>Register mscomm32.ocx</Description> <ReturnValueType>boolean</ReturnValueType> </Action> <Action> <Name>SerialPort.RegisterNetComm</Name> <Description>Register netcomm.ocx</Description> <ReturnValueType>boolean</ReturnValueType> </Action> </ActionTemplates>
Comment
Comment