SerialPort.ReadLine Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Giriş arabelleğindeki NewLine değeri okur.
public:
System::String ^ ReadLine();
public string ReadLine();
member this.ReadLine : unit -> string
Public Function ReadLine () As String
Döndürülenler
Bir değerin ilk oluşumuna kadar giriş arabelleğinin NewLine içeriği.
Özel durumlar
Belirtilen bağlantı noktası açık değil.
Zaman aşımı süresi sona ermeden önce işlem tamamlanmadı.
-veya-
Hiçbir bayt okunmadı.
Örnekler
Aşağıdaki kod örneği, iki kullanıcının null modem kablosuyla bağlanan iki ayrı bilgisayardan sohbet etmelerine izin vermek için sınıfının kullanımını SerialPort gösterir. Bu kod örneği, sınıfı için sağlanan daha büyük bir kod örneğinin SerialPort parçasıdır.
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
Açıklamalar
Bu yöntem değeri döndürmese NewLine de değerin NewLine giriş arabelleğinden kaldırıldığını unutmayın.
Varsayılan olarak, ReadLine yöntem bir satır alınana kadar engeller. Bu davranış istenmeyen bir davranışsa, yöntemini bağlantı noktasında bir çizgi yoksa atmaya TimeoutException zorlamak ReadLine için özelliğini sıfır olmayan bir değere ayarlayınReadTimeout.
Metin okuma ile akıştan ikili verileri okuma arasında geçiş yapmak gerekiyorsa, el ile bayt okuma ve verilerin kodunu çözme gibi metin ve ikili veriler arasındaki sınırı dikkatle tanımlayan bir protokol seçin.
Uyarı
SerialPort Sınıfı verileri arabelleğe alır ve özelliğinde BaseStream yer alan akış arabelleğe almadığından, bu ikisi okunabilecek bayt sayısıyla ilgili çakışabilir. BytesToRead özelliği, okunacak baytlar olduğunu gösterebilir, ancak bu baytlar sınıfına arabelleğe alındıkları için özelliğin BaseStream içerdiği akış için SerialPort erişilebilir olmayabilir.