Forums Neueste Beiträge
 

SerialPort, WriteTimeout

16/09/2009 - 20:57 von Egon Baldrian | Report spam
Hallo NG,

ich arbeite mit VS2005 und .Net-Framework 2.0 SP1 und habe Probleme mit der
WriteTimeout-Eigenschaft der SerialPort-Klasse:

Ich sende mit 9600 Baud 10000 Bytes. Die WriteTimeout ist auf 2000ms
eingestellt, so dass ca. 2000 Bytes gesendet werden bevor der Timeout
auftritt. Beim auftreten des Timeout wird jedoch keine TimeoutException
ausgelöst! Warum ist das so?

Nun das Testprogramm:

static void Main(string[] args)
{
SerialPort V24;
int TxAnzahl = 10000;

//Sendedaten erzeugen
byte[] TxData = new byte[TxAnzahl];
for (int n = 0; n < TxAnzahl; n++)
{
TxData[n] = Convert.ToByte('A');
}

V24 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
V24.Handshake = Handshake.RequestToSend;
V24.WriteTimeout = 2000;
V24.WriteBufferSize = 20000;
V24.Open();

Console.WriteLine("Senden gestartet");

try
{
V24.Write(TxData, 0, TxAnzahl);
}
catch (TimeoutException)
{
Console.WriteLine("Tx Timeout");
}

Console.WriteLine("Senden beendet");

V24.Close();

Console.ReadLine();
}

Mfg
Egon Baldrian
 

Lesen sie die antworten

#1 Stefan Simon
17/09/2009 - 08:56 | Warnen spam
Ich sende mit 9600 Baud 10000 Bytes. Die WriteTimeout ist auf 2000ms
eingestellt, so dass ca. 2000 Bytes gesendet werden bevor der Timeout
auftritt. Beim auftreten des Timeout wird jedoch keine TimeoutException
ausgelöst! Warum ist das so?



Die Aussage ist mir nicht ganz verstàndlich. Tritt denn ein Timeout auf oder
werden die Daten gesendet? Ein Timeout von 2000ms bedeutet doch nicht, das
die Daten in dieser Zeit übertragen werden müssen. Das ist doch eher die
maximale Zeit zwischen 2 Paketen.

Stefan

Ähnliche fragen