Реализация передачи файлов через com-порт - C#
Формулировка задачи:
Здравствуйте, я только недавно начал изучать с#, мой скил соу лоу, так что для того чтобы сделать следующее задание мне нужна некоторая поддержка, надеюсь получить её здесь.
Итак, задача заключается в следующем, перебросить какие-то данные через ком-порт, к примеру, файл. Вот что я сумел нашкодить:
Решение задачи: «Реализация передачи файлов через com-порт»
textual
Листинг программы
- //-----------------------------------
- // Метод ассинхронного приёма данных
- //-----------------------------------
- protected override void OnDoWork(DoWorkEventArgs e)
- {
- Message("Поток приёма стартовал\n");
- int readedBytesCount = 0; // счётчик считанных байтов
- byte len = 0; // длина поля DATA
- byte[] receiveBuffer = new byte[60]; // приёмный буфер
- byte[] resultBuffer; // результирующий буфер
- while (true)
- {
- readedBytesCount = 0;
- if (CancellationPending)
- {
- e.Cancel = true;
- break;
- }
- try
- {
- if (!com.IsOpen)
- {
- Message("Порт закрыт\n");
- break;
- }
- lock (comLocker)
- {
- //stx
- readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
- if (readedBytesCount < 1)
- {
- Message("[err 0]\n");
- continue;
- }
- if (receiveBuffer[0] != 0xB5)
- {
- Message("[err 1]\n");
- continue;
- }
- //address
- readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
- //len
- readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
- len = receiveBuffer[2];
- //cmd
- readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
- //data
- readedBytesCount += com.Read(receiveBuffer, readedBytesCount, len);
- //crc
- readedBytesCount += com.Read(receiveBuffer, readedBytesCount, 1);
- resultBuffer = new byte[readedBytesCount];
- Array.Copy(receiveBuffer, resultBuffer, resultBuffer.Length);
- Debugger.MessageDateTime("COM получил пакет, генерирует событие");
- OnPackageReceived(this, new ObjectEventArgs(resultBuffer));
- }
- }
- catch (TimeoutException err) { continue; }
- catch (IOException err) { Message(err.Message); continue; }
- Thread.Sleep(1);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д