Реализация передачи файлов через com-порт - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, я только недавно начал изучать с#, мой скил соу лоу, так что для того чтобы сделать следующее задание мне нужна некоторая поддержка, надеюсь получить её здесь. Итак, задача заключается в следующем, перебросить какие-то данные через ком-порт, к примеру, файл. Вот что я сумел нашкодить:

Решение задачи: «Реализация передачи файлов через com-порт»

textual
Листинг программы
  1.         //-----------------------------------
  2.         // Метод ассинхронного приёма данных
  3.         //-----------------------------------
  4.         protected override void OnDoWork(DoWorkEventArgs e)
  5.         {
  6.             Message("Поток приёма стартовал\n");
  7.  
  8.             int readedBytesCount = 0;               // счётчик считанных байтов
  9.             byte len = 0;                           // длина поля DATA
  10.             byte[] receiveBuffer = new byte[60];    // приёмный буфер
  11.             byte[] resultBuffer;                    // результирующий буфер
  12.  
  13.             while (true)
  14.             {
  15.                 readedBytesCount = 0;
  16.                 if (CancellationPending)
  17.                 {
  18.                     e.Cancel = true;
  19.                     break;
  20.                 }
  21.  
  22.                 try
  23.                 {
  24.                     if (!com.IsOpen)
  25.                     {
  26.                         Message("Порт закрыт\n");
  27.                         break;
  28.                     }
  29.                     lock (comLocker)
  30.                     {
  31.                         //stx
  32.                         readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
  33.                         if (readedBytesCount < 1)
  34.                         {
  35.                             Message("[err 0]\n");
  36.                             continue;
  37.                         }
  38.                         if (receiveBuffer[0] != 0xB5)
  39.                         {
  40.                             Message("[err 1]\n");
  41.                             continue;
  42.                         }
  43.                         //address
  44.                         readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
  45.  
  46.                         //len
  47.                         readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
  48.                         len = receiveBuffer[2];
  49.  
  50.                         //cmd
  51.                         readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
  52.  
  53.                         //data
  54.                         readedBytesCount += com.Read(receiveBuffer, readedBytesCount, len);
  55.  
  56.                         //crc
  57.                         readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
  58.  
  59.                         resultBuffer = new byte[readedBytesCount];
  60.                         Array.Copy(receiveBuffer, resultBuffer, resultBuffer.Length);
  61.  
  62.                         Debugger.MessageDateTime("COM получил пакет, генерирует событие");
  63.                         OnPackageReceived(this, new ObjectEventArgs(resultBuffer));
  64.                     }
  65.                 }
  66.                 catch (TimeoutException err) { continue; }
  67.                 catch (IOException err) { Message(err.Message); continue; }
  68.  
  69.                 Thread.Sleep(1);
  70.             }
  71.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы