Powershell - 如何设置TCP发送接收行结束字符? <CR> 与 <LF>

问题描述 投票:0回答:1

我试图制作一个小的 TCP 客户端发送和接收脚本来将实际日期发送到工业相机。设备期望

[date]<CR>
作为结束字符,并发送回
OK<CR>
ER<CR>
消息。

我在这里找到了用于发送的基本脚本:https://riptutorial.com/powershell/example/18118/tcp-sender

我添加了 StreamReader 函数,用 Hercules SETUP Utility 进行测试,它会返回一条返回消息...如果结束字符是

<LF>
...但我也需要
<CR>
来发送和接收。 通信手册,第 527 页。

Function Send-TCPMessage { 
    Param ( 
            [Parameter(Mandatory=$true, Position=0)]
            [ValidateNotNullOrEmpty()] 
            [string] 
            $EndPoint
        , 
            [Parameter(Mandatory=$true, Position=1)]
            [int]
            $Port
        , 
            [Parameter(Mandatory=$true, Position=2)]
            [string]
            $Message
    ) 
    Process {
        # Setup connection 
        $IP = [System.Net.Dns]::GetHostAddresses($EndPoint) 
        $Address = [System.Net.IPAddress]::Parse($IP) 
        $Socket = New-Object System.Net.Sockets.TCPClient($Address,$Port) 
    
        # Setup stream wrtier 
        $Stream = $Socket.GetStream() 
        $Writer = New-Object System.IO.StreamWriter($Stream)
        $Reader = New-Object System.IO.StreamReader($Stream)

        # Write message to stream
        $Message | % {
            $Writer.WriteLine($_)
            $Writer.Flush()
        }

        $Response = $Reader.ReadLine()

        # Close connection and stream
        $Stream.Close()
        $Socket.Close()

        return $Response
    }
}

$retunMessage = Send-TCPMessage -Port 23 -Endpoint 127.0.0.1 -message "My first TCP message !"
Write-Host "Return Message = " $retunMessage

我尝试使用 Hercules SETUP Utility 进行测试,并通过 Google 查找修改结束字符的正确参数/设置。没有成功。有人可以帮助确定,我应该设置哪些参数来将结束字符修改为

<CR>

powershell tcp streamreader
1个回答
0
投票
  • 对于带有 System.IO.StreamWriter

    writing,请设置其
    .NewLine
    属性(在写入流之前):

    $Writer.NewLine = "`r"  # CR
    
  • 对于 System.IO.StreamReader

    reading,如果您的线路仅以 CR 结束,则无需配置,因为线路定义为(添加了强调):

    字符序列 后跟回车符 (0x000d)、换行符 (0x000a)、回车符后跟换行符、Environment.NewLine 或流结束标记。

    • 换句话说:单独的 CR、单独的 LF 和 CRLF 都被识别为换行符。
© www.soinside.com 2019 - 2024. All rights reserved.