Передача файлов C# и CCS

Мне нужно отправлять/получать файлы из/в SerialPort и MSP430F5438A , нажав кнопку обзора в интерфейсе С#, выбрав файл (например, текст, блокнот и т. д.), а в случае получения сохранить файл, который был отправлен из CCS на ПК!

Я действительно не мог найти ничего похожего в Google или где-то еще. Хоть кто-нибудь может сориентировать меня?

Вам следует изучить протоколы передачи модема, такие как ZModem и т. д.
@Majenko модем? я использую UART!
И? Как вы думаете, к чему подключается модем? Тот факт, что они были разработаны для использования с последовательными соединениями с модемами, не мешает им быть бесценными для последовательных соединений без модемов.
@ Маженко, извини, но я не понимаю, что ты пытаешься сказать ..
Я говорю о том, что с точки зрения компьютера и микроконтроллера нет никакой разницы между модемом и соединением UART — вам просто не нужно набирать номер. Существует множество протоколов передачи файлов, уже разработанных для работы по асинхронным последовательным каналам, таким как модемы, UART и т. д., и все они известны как протоколы передачи модема, потому что именно для этого они были впервые использованы.
@Majenko Теперь я понимаю, честно ... Я знаю, что означает UART, и я могу передавать строки / символы между компьютером и микроконтроллером, но я просто понятия не имею, «как» реализовать выбор, открытие, отправку, получение, сохранение файла процедура. Я считаю, что подсказка, ссылка, .. поможет!
Ну, с этой стороны (сторона C#) мы не можем вам помочь. Мы инженеры-электронщики, а не программисты. Спросите об этом на StackOverflow.com. Мы можем только помочь вам с передачей данных по соединению UART и реализацией этого на микроконтроллере.
Если вы собираетесь следовать маршруту модемного протокола, не начинайте со своего собственного приложения на C#, а начните с чьей-то программы последовательного терминала, которая создала его, заставьте свой встроенный код работать, протестировав его, а затем, когда это будет заведомо хорошо разработайте свой код C#. Дело в том, что всегда лучше запускать непроверенный код против проверенного кода, чем против другого непроверенного кода. Вы также можете использовать пакет виртуального последовательного порта, чтобы протестировать свой C# в сравнении со сборкой вашего кода MSP C, созданного для работы на вашем ПК.

Ответы (1)

Я бы прочитал файл в какой-то буфер вашего пользовательского интерфейса, разбил его на небольшие пакеты и отправил.

Например, в моем пользовательском интерфейсе я разрешаю пользователю загружать новый образ прошивки на мое устройство. Поэтому я отправляю этот файл прошивки по UART по одной строке за раз. Мой MSP430 считывает эту строку в буфер длиной X символов, проверяет ее, сохраняет во внешней флэш-памяти и затем получает следующую строку. Получив все данные, MSP430 переходит к своему коду загрузчика.

Вам просто нужно решить, как вы собираетесь разбивать данные на части, и соответственно размер буферов.

Мне не нужно определять какой-либо специальный последовательный протокол, потому что мои файлы уже отформатированы определенным образом, и я могу отправлять файл по одной строке за раз и анализировать его на другом конце. http://en.wikipedia.org/wiki/SREC_(формат_файла)

Но для общего приложения, возможно, вам следует определить легкий протокол. Например, каждая строка будет начинаться с определенного символа, порядкового номера, длины полезной нагрузки и, возможно, конечного байта. Что-то в этом роде:

| Byte 0               | Byte 1          | Byte 2                              | Byte 3         | Bytes 4 to (p+4) | Byte 5+p           |
|----------------------|-----------------|-------------------------------------|----------------|------------------|--------------------|
| Arbitrary Start Byte | Sequence        | Total number of packets - up to 255 | Payload Length | The data         | Arbitrary End Byte |
| 0x0A                 | Number x        | Of X                                | p < 256        |                  | 0xFF               |

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

Парсер для такого рода вещей будет относительно простым для записи с обеих сторон.

РЕДАКТИРОВАТЬ: В целях тестирования я рекомендую использовать realterm. Это гибкая двоичная терминальная программа, которая позволит вам отправлять произвольные данные, файлы и т. д. Вы также можете использовать ее для мониторинга последовательных портов.

Прежде всего, «в моем пользовательском интерфейсе я разрешаю пользователю загружать новый образ прошивки на мое устройство». это именно то, что я хочу знать, как это сделать. И что это за длина полезной нагрузки?
Длина полезной нагрузки для этой конкретной строки. Таким образом, вы будете синхронизировать строку из файла FW по одной строке за раз, по одному символу за раз. Когда MSP430 получает свой первый символ и он совпадает с начальным символом, он подготавливает память для следующего символа и так далее. Когда вы, наконец, прочитали этот 4-й символ, длину полезной нагрузки, он сообщает вам, сколько места нужно выделить для этой конкретной строки данных. Вы всегда можете сделать каждый пакет 30-символьным или около того, если хотите, или вы можете сделать длину пакета переменной. Это просто помогает вам проверить пакет и выделить место.
Вы правы, эти процедуры должны быть выполнены после того, как я создам пользовательский интерфейс, чтобы, например, нужно было нажать кнопку обзора, чтобы открыть файл с ПК, а затем реализовать эти процедуры. создание пользовательского интерфейса на C # - это то, что я действительно хочу знать!
Тогда я согласен с комментарием, сделанным на ОП. Вопрос о том, как создать диалог просмотра файлов, лучше всего подходит для переполнения стека. Но это то, что, я думаю, вы ищете: msdn.microsoft.com/en-us/library/…
Вот сообщение о переполнении стека на тему stackoverflow.com/questions/4999734/…