Перейти к содержанию
    

Терминал COM-порт для передачи HEX

А порт-то предварительно открыт?
да, если порт закрыт, то программа не закрывается... Я там посмотрел, она по ходу txt только ACSII символы понимает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, если порт закрыт, то программа не закрывается... Я там посмотрел, она по ходу txt только ACSII символы понимает
"Ох, уж эти сказки, ох уж эти сказочники!" :biggrin:

Bra@y's terminal все передает в том виде, в котором ему предлагают. Вот сейчас специально для проверки взял файл (картинку) из своей аватары (AV-3882.JPG - 1412 байт). Замкнул RXD и TXD на разъеме COM-порта. Открыл порт в терминале. Включил логгирование приема (StartLog). C помощью функции Send File передал AV-3882.JPG. Выключил логгирование приема (StopLog). Редактором FAR открыл созданный терминалом файл 20101021001659.log. Вырезал из него заголовок и окончание лога, не относящиеся собственно к переданным данным. Сохранил файл (размер 1412 байт). Сравнил два файла. Результат

Сравнение файлов 20101021001659.log и AV-3882.JPG

FC: различия не найдены

Еще вопросы имеются? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

txt файлы он декодирует в ACSII, а вот бинарный действительно, передает как есть. Только скорость передачи почему-то мала. 5 мин ждал, а он до конца еще 80кбайт не передал, хотя по идее со скоростью 57600бит/с=7200б/с должен за 12сек управиться...

Спасибо

з.ы. странно, почему снизу за надписью TX: постоянно ноль. Как отслеживать на каком этапе передача...

RX: же отображается нормально...

 

 

В общем ждал ждал пока передастся, но так и не дождался. Его по ходу с такими большими файлами переклинивает... =(

А может программатор посоветуете? Спасибо.

Изменено пользователем Alt.F4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

txt файлы он декодирует в ACSII, а вот бинарный действительно, передает как есть.
Декодировать на приеме для отображения он может и в ASCII и в HEX, там разные опции можно использовать. А вот на передаче он ничего не декодирует.

Только скорость передачи почему-то мала. 5 мин ждал, а он до конца еще 80кбайт не передал, хотя по идее со скоростью 57600бит/с=7200б/с должен за 12сек управиться...
Неправильно считаете. 80*1024*10бит/57600бит/с=14,2с. 10 бит это для одного символа, если режим 8,n,1. Если четность включена, то 11 бит/символ. Тормозить этот терминал может, если у него одновременно прием идет. У вас "эхо" случайно не идет на вход COM-порта?

з.ы. странно, почему снизу за надписью TX: постоянно ноль. Как отслеживать на каком этапе передача...

RX: же отображается нормально...

Это статистика самого терминала. Учет переданных байт из файла там не ведется. Только сообщение в статусе - столько-то байт передано.

В общем ждал ждал пока передастся, но так и не дождался. Его по ходу с такими большими файлами переклинивает... =(
Попробовал отправить файл 250кБ (258 690 байт) на скорости 115200 - порядка 30 сек получается. Расчетное время 258690*10/115200=22,46с. Следует учитывать, что поток в COM-порт не совсем непрерывный. ОС может его прерывать, если другие задачи имеются/выполняются. Ограничение на размер принимаемого/передаваемого файла у Br@y's Terminal имеется, но до 0,5МБайт он передает без особых проблем по-моему.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал еще через RS232pro (в поиске нашел), но она отправила только 10-ую часть файла!!! (замыкал TXD и RXD)

У вас "эхо" случайно не идет на вход COM-порта?
в настройках программы не нашел такой галки...

Попробовал отправить файл 250кБ (258 690 байт) на скорости 115200 - порядка 30 сек получается.
А как у Вас определяется, что файл передан?

Мои действия: запускаю терминал, если нога RXD висит в воздухе, то начинается бесконечный приме помех, сажу на МК, выбираю файл для отправки, жму открыть и... все, ничего не происходит не через 30сек, не через 5мин...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в настройках программы не нашел такой галки...
Ее там и нет. Я просто предположил, что у вас эхо принимается.

А как у Вас определяется, что файл передан?
Сообщение в статусной строке. Send file: 1412 byte send.

Мои действия: запускаю терминал, если нога RXD висит в воздухе, то начинается бесконечный приме помех,
Вот из-за этого и тормозит терминал.

сажу на МК, выбираю файл для отправки, жму открыть и... все, ничего не происходит не через 30сек, не через 5мин...
Запустите какой-нибудь сниффер или осциллографом гляньте сигнал на TXD COM-порта. Я бы конечно мог два порта друг на друга посадить или на второй комп принимать, но мне на сегодня уже лень другие эксперименты ставить :)

post-3882-1287608715_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сообщение в статусной строке. Send file: 1412 byte send.
Опа, у меня такого не появляется.

Осцилографа нету =(. Сниффер - это типа монитора следящего за состоянием порта?

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

Делаю так: выбираю, жму открыть, и снизу ничего не появляется!

post-56256-1287609594_thumb.jpg

post-56256-1287609604_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гм. Это вы по моей ссылке скачали? :cranky: Какая-то больно древняя версия. Попробуйте эту или погуглите более свежую. На номер версии 1.9b можно не смотреть. Смотрите на дату обновления.

 

Вот тут версия этого года имеется. 2010-06-30.

P.S. попробовал новую версию. Отличий не обнаружилось. Тот же самый файл 250кБ передает за те же самые 29 секунд.

Terminal_20080315.zip

Изменено пользователем rezident

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тот, который Вы прикрепили, надпись Send*** писал сразу после выбора файла, тот который по ссылке (этого года) - написал через некоторое время.

Спасибо большое! Завтра буду пытаться записать в Data Flash.

Изменено пользователем Alt.F4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тот, который Вы прикрепили, надпись Send*** писал сразу после выбора файла,
А какая у вас операционка? Похоже, что она как-то слишком уж буферизирует потоки COM-порта.

Спасибо большое! Завтра буду пытаться записать в Data Flash.
Да не за что вроде. Программа-то терминал не моя ведь :) Успехов!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какая у вас операционка?
Win XP sp2

Да не за что вроде. Программа-то терминал не моя ведь smile.gif Успехов!
Кроме программы, Вы очень многое делаете чтобы помочь людям, это заслуживает огромного уважения!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я, можно сказать, гонюсь за двумя зайцами, одновременно решаю вопрос передачи больших фалов и изучаю работу с DataFlash.

Ваш ответ в той теме отбросил все вопросы! Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/22/2010 at 3:00 PM, Alt.F4 said:

Я, можно сказать, гонюсь за двумя зайцами, одновременно решаю вопрос передачи больших фалов и изучаю работу с DataFlash.

Ваш ответ в той теме отбросил все вопросы! Спасибо!

Вот в этой теме можно скачать терминал для передачи файлов. Ограничение 1 МБ, но могу и больше сделать, если нужно. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

народ. перестаньте париться. идете в Visual  Studio

Spoiler

 private void MainForm_Load(object sender, EventArgs e)
        {
            serial_port = new SerialPort();
            serial_port.ReadBufferSize = 1024 * 32;
            serial_port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            ports = SerialPort.GetPortNames();
            if (ports.Length > 0)
            {
                comboBoxPortName.Items.Clear();
                comboBoxPortName.Items.AddRange(ports);
                comboBoxPortName.SelectedIndex = 0;
            }
            comboBoxBaudRate.SelectedIndex = 12;
        }


private void buttonConnect_Click(object sender, EventArgs e)
        {
            //check comport parameters
            if (comboBoxPortName.SelectedIndex == -1 || comboBoxBaudRate.SelectedIndex == -1)
            {
                MessageBox.Show("Serial Port Parameters Missing!");
                return;
            }

            if (serial_port.IsOpen)
                serial_port.Close();

            try
            {
                if (!serial_port.IsOpen)
                {
                    serial_port.PortName = comboBoxPortName.SelectedItem.ToString();
                    serial_port.BaudRate = Convert.ToInt32(comboBoxBaudRate.SelectedItem.ToString());
                    serial_port.Open();
                }

                buttonConnect.Enabled = false;
                buttonDisconnect.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 

и посылаете что хотите, как хотите и куда хотите.

serial_port.Write(my_string);
serial_port.Write(bytes_array, offset, size);

20 строк кода и весь мир UART у ваших ног.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...