SerialSession.psm1
|
<#
_____ _ _ _____ _ / ___/ ___ _ __|_| __ _| / ___/ ___ ___ ___ |_| ___ _ ___™ \___ \/ _ \| '__| |/ _' | \___ \/ _ \/ __/ __/| |/ _ \| '_ \ ___| | __/| | | | |_| | |___| | __/\__ \__ \| | |_| | | | | /____/\___||_| |_|\__._|_/____/\___|/___/___/|_|\___/|_| |_| INTERACTIVE AND AUTOMATED SERIAL PORT SESSIONS FOR POWERSHELL https://nextgdata.com © Alex Hoosyny #> function Enter-SerialSession { <# .SYNOPSIS etss -> Enter-SerialSession .DESCRIPTION Starts an interactive serial port session. .LINK https://nextgdata.com #> [Alias('etss')] [CmdletBinding()] param ( [String]$PortName, [Int]$BaudRate = 9600, [String]$Parity = 'None', [Int]$DataBits = 8, [String]$StopBits = 'One', [String]$Handshake = 'RequestToSend', [Int]$ReadBufferSize = 4096, [Int]$WriteBufferSize = 2048, [String]$Encoding = 'UTF-8', [Alias('tout')][Int64]$Timeout = -1, [Alias('iout')][Int64]$IdleTimeout = -1, [Alias('eout')][Int64]$ExpectTimeout = 0, [Alias('es')][Object[]]$ExpectScript, [Alias('ms')][hashtable]$KeyScript, [Alias('byte')][Switch]$ByteOutput, [Alias('pipe')][Switch]$PipeOutput, [Alias('line')][Switch]$ReadLine, [Alias('edit')][Switch]$LocalEdit, [Alias('echo')][Switch]$LocalEcho, [Alias('time')][Switch]$Timestamp, [Alias('combo')][Switch]$ComboView, [Alias('noni')][Switch]$NonInteractive, [Alias('ts')][scriptblock]$TitleScript = {& $Session.Title.Full}, [String]$TimeFormat, [String]$NewLine = "`n", [String]$EditEnding = "`r", [String]$Prompt = 'SerialSession> ', [Alias('ps')][scriptblock]$PromptScript = {gsdi | ft}, [String]$PromptColor = 'Green', [String]$AuxColor = 'DarkGray', [String]$TxColor = [Console]::ForegroundColor, [String]$RxColor = [Console]::ForegroundColor ) $private:param = @{} $param.Add('PortName', $PortName) $param.Add('BaudRate', $BaudRate) $param.Add('Parity', $Parity) $param.Add('DataBits', $DataBits) $param.Add('StopBits', $StopBits) $param.Add('Handshake', $Handshake) $param.Add('Encoding', $Encoding) $param.Add('Timeout', $Timeout) $param.Add('IdleTimeout', $IdleTimeout) $param.Add('ExpectTimeout', $ExpectTimeout) $param.Add('ReadBufferSize', $ReadBufferSize) $param.Add('ExpectScript', $ExpectScript) $param.Add('KeyScript', $KeyScript) $param.Add('ByteOutput', $ByteOutput) $param.Add('PipeOutput', $PipeOutput) $param.Add('ReadLine', $ReadLine) $param.Add('LocalEcho', $LocalEcho) $param.Add('LocalEdit', $LocalEdit) $param.Add('Timestamp', $Timestamp) $param.Add('ComboView', $ComboView) $param.Add('NonInteractive', $NonInteractive) $param.Add('TitleScript', $TitleScript) $param.Add('NewLine', $NewLine) $param.Add('EditEnding', $EditEnding) $param.Add('Prompt', $Prompt) $param.Add('PromptScript', $PromptScript) $param.Add('PromptColor', $PromptColor) $param.Add('AuxColor', $AuxColor) $param.Add('TxColor', $TxColor) $param.Add('RxColor', $RxColor) & $PSScriptRoot/Enter-SerialSession.ps1 @param } function Get-SerialDeviceInformation { <# .SYNOPSIS gsdi -> Get-SerialDeviceInformation .DESCRIPTION Serial device information. .INPUTS .OUTPUTS PSCustomObject .LINK https://nextgdata.com/SerialSession #> [Alias('gsdi')] [CmdletBinding()] Param() $SerialPort = [System.IO.Ports.SerialPort]::New() if ($IsWindows -or $PSEdition -eq 'Desktop') { [System.IO.Ports.SerialPort]::GetPortNames() } elseif ($IsMacOS) { [System.IO.Ports.SerialPort]::GetPortNames() } } |