Я пишу приложение, в котором мне нужно отправить файл (~ 600 КБ) на другое устройство через виртуальный последовательный порт.
Когда я отправляю его с помощью терминального приложения (TeraTerm), это занимает менее 10 секунд, но с помощью моей программы это занимает 1-2 минуты.
Мой код очень прост:
port.WriteTimeout = 30000;
port.ReadTimeout = 5000;
port.WriteBufferSize = 1024 * 1024; // Buffer size larger than file size
...
fs = File.OpenRead(filename);
byte[] filedata = new byte[fs.Length];
fs.Read(filedata, 0, Convert.ToInt32(fs.Length));
...
for (int iter = 0; iter < filedata.Length; iter++) {
port.Write(filedata, iter, 1);
}
Вызов port.Write со всей длиной файла, по-видимому, всегда вызывает тайм-аут записи по неизвестной причине, поэтому я пишу по 1 байту за раз.