Страница 1 из 1
Нужна программа работы с СОМ портом
Добавлено: Пт мар 29, 2013 04:10:51
zero648
Суть вопроса в следующем, некая плата с контроллером MC68302 на ней хранятся данные, эти данные передаю по UART на ПК, нужна программа для ПК, которая бы принимала данные с СОМ порта и сохраняла их в файл в бинарном формате, также необходимо эти данные из файла отправлять обратно с компа на плату. Подскажите кто знает такую прогу с такими функциями.
Re: Нужна программа работы с СОМ портом
Добавлено: Пт мар 29, 2013 06:25:54
igor-x
есть программа putty.exe если комп на виндосе и minicom если комп с Линуксом.
это терминальные программки которые с СОМ портом могут работать. и им все равно какой контроллер у вас на связи.
данные попроинимать и передавать можно на них попробовать.
Re: Нужна программа работы с СОМ портом
Добавлено: Пт мар 29, 2013 07:04:29
Dr. Alex
Да, по большому счёту, какая разница какой контроллер. Главное что по UART и всё, а таких программ валом. ГУГЛ в помощь!!!
Re: Нужна программа работы с СОМ портом
Добавлено: Пт мар 29, 2013 12:14:53
Alexeyslav
Это можно организовать даже в DOS-е, командой "COPY COM1 file.txt" и для передачи назад - "COPY file.txt COM1". Перед этим параметры порта надо настроить командой "MODE". И правда, для DOS-а существует ограничение в первые 4 порта - COM1, COM2, COM3, COM4. Так сложилось исторически... если нужны другие порты, надо указывать "путь" к этим портам как файлу по UNC.
Re: Нужна программа работы с СОМ портом
Добавлено: Пт мар 29, 2013 12:19:48
ploop
и minicom если комп с Линуксом.
Для решения задачи автора в линуксе вообще никаких программ не надо. Можно одной командой: cat /dev/ttyXXX > file.bin
Re: Нужна программа работы с СОМ портом
Добавлено: Пт мар 29, 2013 12:27:24
igor-x
Можно одной командой: cat /dev/ttyXXX > file.bin
это если устройство тупо передает данные при включении. если же оно требует какойто иницилизации , то можно попробовать с терминалками поработать.
а так то - похоже придется автору ваять программулину для приема-передачи блоков данных(как он это пытался обьяснить в первом сообщении)
Re: Нужна программа работы с СОМ портом
Добавлено: Пт мар 29, 2013 23:21:20
zero648
igor-x писал(а):это если устройство тупо передает данные при включении. если же оно требует какойто иницилизации , то можно попробовать с терминалками поработать.
Да, кстати, так и есть, устройство при включении инициализирует все что нужно для передачи данных, тестирует оперативку, все это сопровождается индикацией (3 светодиода), затем тупо передает по UARTу 256 kB данных, которые нужно принять на компе, прошивку для MC68302 писал сам.
Re: Нужна программа работы с СОМ портом
Добавлено: Сб мар 30, 2013 01:00:45
Мурик
zero648 писал(а):нужна программа для ПК, которая бы принимала данные с СОМ порта и сохраняла их в файл в бинарном формате.
Простейшую программу, выполняющую эти действия можно написать примерно за десять минут.
Код: Выделить всё
Port.s="COM1" ; Имя порта.
Bauds = 9600 ; Скорость приема через COM порт.
FileName.s="MyFile.bin" ; Имя файла куда записывать данные.
BufferSize = 1024 ; Размер буфера приема.
*Buffer = AllocateMemory(BufferSize) ; Память под принимаемые данные из COM порта.
If *Buffer ; Буфер валидный.
; Открыли порт.
If OpenSerialPort(0, Port, Bauds, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
; Создали пустой файл.
If CreateFile(0, FileName)
; Цикл копирования данных из порта в файл.
Repeat
InBytes = AvailableSerialPortInput(0)
If InBytes>0 ; Принят хоть один байт.
If InBytes>BufferSize ; Не превышен ли размер буфера?
InBytes=BufferSize
EndIf
ReadSerialPortData(0, *Buffer, InBytes) ; Прочитали данные из порта,
WriteData(0, *Buffer, InBytes) ; и сохранили их в файле.
FlushFileBuffers(0)
Else
Delay(100) ; Если в порт данные не поступили, то ждем 100 миллисекунд.
EndIf
ForEver
CloseFile(0) ; Закрыли файл.
Else
MessageRequester("", "Не удалось создать файл "+FileName, #MB_OK|#MB_ICONERROR)
EndIf
CloseSerialPort(0) ; Закрыли порт.
Else
MessageRequester("", "Не удалось открыть порт "+Port, #MB_OK|#MB_ICONERROR)
EndIf
FreeMemory(*Buffer) ; Освободили память.
Else
MessageRequester("", "Не удалось выделить память под буфер ", #MB_OK|#MB_ICONERROR)
EndIf
Re: Нужна программа работы с СОМ портом
Добавлено: Сб мар 30, 2013 01:35:44
Alexeyslav
А условие окончания цикла? Хотябы, по нажатию кнопки чтобы закончить можно было. И счетчик принятых байт - подсчитывать и отобразить.
Не знаю на какой основе реализована задержка delay, но может чтобы не грузить систему выгодней использовать sleep(100)?
Re: Нужна программа работы с СОМ портом
Добавлено: Сб мар 30, 2013 12:13:44
Мурик
Alexeyslav писал(а):А условие окончания цикла?
К сожалению оно не было оговорено. Единственое что указанно
zero648 писал(а):тупо передает по UARTу 256 kB данных, которые нужно принять на компе
Можно к этому привязаться и прерывать цикл после приема 256 кило.
Alexeyslav писал(а):Не знаю на какой основе реализована задержка delay, но может чтобы не грузить систему выгодней использовать sleep(100)?
В винде, функция Delay(), при компиляции, заменяется на WinAPI Sleep(). В Linux и MacOS X, хз на что заменяется. Не знаком с их API.
Вообще, этот код содержит необходимый минимум функционала, требуемый для приема данных из COM порта и записи в файл. Что собственно и просил ТС.
Re: Нужна программа работы с СОМ портом
Добавлено: Сб мар 30, 2013 12:29:12
Alexeyslav
А если на один байт не рассчитаешь? Сохранить-то надо все, а если прервать прогу насильно последний кусок данных может не сохранится в файл. Поэтому надо как минимум предусмотреть ручное прерывание процесса, чтобы иметь возможность его корректно завершить.
Re: Нужна программа работы с СОМ портом
Добавлено: Сб мар 30, 2013 18:55:10
ploop
Вообще, этот код содержит необходимый минимум функционала, требуемый для приема данных из COM порта и записи в файл. Что собственно и просил ТС.
Ну нафига? В винде ведь тоже можно всё это проделать парой команд в консоли, без всяких программ. Вот только не помню я их, вероятно, будет что-то наподобие того, что описал
Alexeyslav для ДОСа.
Re: Нужна программа работы с СОМ портом
Добавлено: Сб мар 30, 2013 19:56:46
zero648
Ставил прогу Advanced Serial Port Monitor, она работает вроде нормально, принимает все что поступает на СОМ порт и сохраняет все в указанный лог файл, но, во-первых передача идет блоками по 256 байт и естественно она подписывает принимаемые блоки сигнатурами, но это пол беды, во вторых все служебные символы она сохраняет как имена - вот это вообще фарш получается, в настройках не нашел в каком формате сохранять данные.
Re: Нужна программа работы с СОМ портом
Добавлено: Пн апр 08, 2013 15:06:50
Alexeyslav
Только что узнал о такой полезной в этом деле проге - Realterm, очень функциональная программа для работы с COM-портом, много режимов вывода данных на экран, сохранение лога в файл, подсвечивание принятых/переданных байт разными цветами и многое другое. Правда, простой её не назовешь.