SerialPort.ReadLine Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Läser upp till värdet NewLine i indatabufferten.
public:
System::String ^ ReadLine();
public string ReadLine();
member this.ReadLine : unit -> string
Public Function ReadLine () As String
Returer
Innehållet i indatabufferten fram till den första förekomsten av ett NewLine värde.
Undantag
Den angivna porten är inte öppen.
Exempel
Följande kodexempel visar hur klassen används SerialPort för att tillåta två användare att chatta från två separata datorer som är anslutna med en null-modemkabel. Det här kodexemplet är en del av ett större kodexempel som tillhandahålls SerialPort för klassen.
public static void Main()
{
string name;
string message;
StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
Thread readThread = new Thread(Read);
// Create a new SerialPort object with default settings.
_serialPort = new SerialPort();
// Allow the user to set the appropriate properties.
_serialPort.PortName = SetPortName(_serialPort.PortName);
_serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
_serialPort.Parity = SetPortParity(_serialPort.Parity);
_serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
_serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
_serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);
// Set the read/write timeouts
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.Open();
_continue = true;
readThread.Start();
Console.Write("Name: ");
name = Console.ReadLine();
Console.WriteLine("Type QUIT to exit");
while (_continue)
{
message = Console.ReadLine();
if (stringComparer.Equals("quit", message))
{
_continue = false;
}
else
{
_serialPort.WriteLine(
String.Format("<{0}>: {1}", name, message));
}
}
readThread.Join();
_serialPort.Close();
}
public static void Read()
{
while (_continue)
{
try
{
string message = _serialPort.ReadLine();
Console.WriteLine(message);
}
catch (TimeoutException) { }
}
}
Public Shared Sub Main()
Dim name As String
Dim message As String
Dim stringComparer__1 As StringComparer = StringComparer.OrdinalIgnoreCase
Dim readThread As New Thread(AddressOf Read)
' Create a new SerialPort object with default settings.
_serialPort = New SerialPort()
' Allow the user to set the appropriate properties.
_serialPort.PortName = SetPortName(_serialPort.PortName)
_serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate)
_serialPort.Parity = SetPortParity(_serialPort.Parity)
_serialPort.DataBits = SetPortDataBits(_serialPort.DataBits)
_serialPort.StopBits = SetPortStopBits(_serialPort.StopBits)
_serialPort.Handshake = SetPortHandshake(_serialPort.Handshake)
' Set the read/write timeouts
_serialPort.ReadTimeout = 500
_serialPort.WriteTimeout = 500
_serialPort.Open()
_continue = True
readThread.Start()
Console.Write("Name: ")
name = Console.ReadLine()
Console.WriteLine("Type QUIT to exit")
While _continue
message = Console.ReadLine()
If stringComparer__1.Equals("quit", message) Then
_continue = False
Else
_serialPort.WriteLine([String].Format("<{0}>: {1}", name, message))
End If
End While
readThread.Join()
_serialPort.Close()
End Sub
Public Shared Sub Read()
While _continue
Try
Dim message As String = _serialPort.ReadLine()
Console.WriteLine(message)
Catch generatedExceptionName As TimeoutException
End Try
End While
End Sub
Kommentarer
Observera att även om den här metoden inte returnerar NewLine värdet tas NewLine värdet bort från indatabufferten.
Som standard blockeras ReadLine metoden tills en rad tas emot. Om det här beteendet inte är önskvärt anger du ReadTimeout egenskapen till ett värde som inte är noll för att tvinga ReadLine metoden att utlösa en TimeoutException om en rad inte är tillgänglig på porten.
Om det är nödvändigt att växla mellan att läsa text och läsa binära data från strömmen väljer du ett protokoll som noggrant definierar gränsen mellan text och binära data, till exempel att manuellt läsa byte och avkoda data.
Note
SerialPort Eftersom klassen buffrar data och strömmen i BaseStream egenskapen inte gör det, kan de två vara i konflikt med hur många byte som är tillgängliga att läsa. Egenskapen BytesToRead kan indikera att det finns byte att läsa, men dessa byte kanske inte är tillgängliga för strömmen i BaseStream egenskapen eftersom de har buffrats till SerialPort klassen.