Что определяет ReadTimeout SerialPort?
От: Andrej-V  
Дата: 31.12.06 21:46
Оценка:
С Новым годом!
Всем добра, удач, шуток, красот.
Уже как-то задавал вопрос, который здесь повторяю. Если есть что-то, что хотя бы косвенно может к нему отностиься, — выскажетесь пожалуйста:

Скажите пожалуйста, какое время определяет св-во ReadTimeout класса SerialPort.
Думал, что это время ожидания ответа. Но простая проверка опровергает.
В коде, приведенном ниже, MessageBox показывает 0. Причем 0 и в том случае, если модем выключен.
Но ведь порт не может знать включен или выключен модем. Он должен ждать 2000mc ответа.
И когда модем включен 0 — это странно. Даже если порт успел быстро получить ответ модема, то откуда он знает что это весь ответ и продолжения оного в течение назначенного времени ожидания не будет? Аналогичный вопрос по WriteTimeout: это время ожидания данных портом (аналогтчный код показывает — нет) или время, в течение которого данные с порта должны быть переданы устройству (модему) или что-то иное?



static SerialPort com = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);
private void button1_Click(object sender, EventArgs e)
  {
   if (com.IsOpen) com.Close();
   com.ReadTimeout = 2000;
   com.WriteTimeout = 1400;
   com.DtrEnable = true;
   com.Open();
   Thread.Sleep(1500);
   com.Write("ATZ\r\n");
   Thread.Sleep(500);
   DateTime dt1 = DateTime.Now;
   byte[] bytes = new byte[1000];
   int ReadBytes = com.BytesToRead;
   com.Read(bytes, 0, ReadBytes);  
   TimeSpan ts = DateTime.Now - dt1;
   MessageBox.Show(ts.TotalMilliseconds.ToString());// показывает 0 (даже если модем выключен)
   com.Close();
  }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.