|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|||||||||||
Обработка данных из порта03.03.2013, 06:03. Показов 6107. Ответов 46
Метки нет (Все метки)
Добрый день. Данные с порта считываются каждую секунду. Эти данные надо обработать. Вопрос как это сделать ? А то начинаю орабатывать тут:
Код программы целеком:
1
|
|||||||||||
| 03.03.2013, 06:03 | |
|
Ответы с готовыми решениями:
46
Обработка данных с COM порта Обработка данных из com порта Обработка данных с com порта. |
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
|||||||||||
| 07.04.2013, 08:59 | |||||||||||
|
Привет.
Пришлось кое-что подучить, чтобы появился очередной вопрос. ![]() Здесь протокол для задачи. Кликните здесь для просмотра всего текста
Adress=16 Lenght=1 Type=unsign. char Explanation=O2(Oxygen, e.g. 209=20,9%) 1. Вот здесь зачем конвертируется unsign.char в массив unsign.char. И почему именно 133 ???
2. Вот это условие: Если ?????????, то переменной Т присваиваем значение ??????????? Можно подробней?
0
|
|||||||||||
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|
| 18.04.2013, 12:23 [ТС] | |
|
1. Вот здесь зачем конвертируется unsign.char в массив unsign.char. И почему именно 133 ???
Эт я не конвертирую а создаю новый массив (или я только так думаю, я же еще не спец, главное работает) А 133 именно потому что я сниффером вижу ну или по документации что размер ответа устройства 133 байта 2. Вот это условие: Если ?????????, то переменной Т присваиваем значение ??????????? Можно подробней? А это проверка если в буфере порта реально 133 байта то считываем эти байты в созданный массив buffrdBVR и далее обрабатываем его. Например выводим температуру. Проверку делаем что бы избежать считывания и обработки в наш массив левых или некорректных данных.
1
|
|
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
|
| 18.04.2013, 18:25 | |
|
20-й байт это по твоему протоколу температура?
0
|
|
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|
| 18.04.2013, 19:02 [ТС] | |
|
Ты уш извиняй но описание функций то можно и посмотреть, чтоб таких вопросов не возникало. 20 это номер байта с которого берет нужные 4 байта функция.
1
|
|
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
||||||
| 25.04.2013, 20:41 | ||||||
|
Привет. Посмотри пож. код. Не работает.
Где неправильно?
25-й адрес длинной 2 байта (signed int) - это температура окр. среды.
0
|
||||||
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
||||||
| 26.04.2013, 11:47 [ТС] | ||||||
|
Во первых должно быть вот так, а во вторых что именно работает не так ??
1
|
||||||
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
|
| 26.04.2013, 15:04 | |
|
Что не работает конкретно...
Создал форму, добавил метку label1. Добавил компонент serialPort1. Создал код на основе твоего кода и протокола задачи. Во вложении "протокол задачи". Сделал настройки компонента порта в соответствии с настройками порта в протоколе задачи. a) подключил прибор с которого снимаются данные. Посмотрел "снифером" (Serial port Monitor), что прибор действительно посылает данные, что кабель исправен и ось тоже. б) Скомпилировал код. Ошибок компиляции нет. Появилась форма с меткой. Метка как была с двумя нулями, так и осталась. Я понимаю, что это примитив, что нужно в цикле опрашивать "читать" 25, 26 байты. Но при запуске формы должен же был "прилететь" хоть какой-то мусор? Ты вот пишешь, что преобразуем 4 байта начиная с 25-го. В протоколе "длина =2 байта". Т.е. 25-й, 26-й. Попробовал твой код из предыдущего поста. Тоже самое. Метка с двумя нулями.
0
|
|
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
||||||||||||||||||||||||||
| 26.04.2013, 16:22 [ТС] | ||||||||||||||||||||||||||
|
Скинь мне весь проект, гляну че ты там накодил.
И справку смотри по классам, например вот этот метод работает только для 32 битного числа, то есть для 4 байт.
http://msdn.microsoft.com/ru-r... erter.aspx Добавлено через 10 минут И кстате как компилятор у тебя вот это пропускает ???
Тут подругому надо делать ! Добавлено через 4 минуты Вот пример как должно быть
И со сниффера информацию мне дай. И еще во тут посмотри
0
|
||||||||||||||||||||||||||
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
|
| 26.04.2013, 17:37 | |
|
Во вложении скрин снифера. Видно, что байты бегут непрерывным потоком. Где начало, где конец -непонятно.
0
|
|
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
||
| 26.04.2013, 17:50 | ||
Вот это: "buffrdBVR" -это ты просто "обозвал" буфер? В течение часа проект скину.
0
|
||
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|
| 26.04.2013, 18:03 [ТС] | |
|
Teбе и не надо смотреть данные в буфере, тебе надо посмотреть доходят ли они до "buffrdBVR"! И я же тебе давал сниффер пользуйся им он пишет где запрос где ответ, там все понятно а тут куча данных. Для анализа не очень пригодна.
0
|
|
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
|
| 26.04.2013, 18:25 | |
|
Здесь архив с проектом задачи.
0
|
|
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|
| 26.04.2013, 18:37 [ТС] | |
|
Как все сложно. )) во. Посмотри что у тебя попадает сюда buffrdBVR при выполнении программы.
Добавлено через 2 минуты И учти у меня VS 2010. И сниффер поставь мой и сними им данные! С то там хрен поймешь че.
0
|
|
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
|
| 26.04.2013, 18:41 | |
|
ты мне посылал конвертер чисел. Каким снифером пользуешься?
Как посмотреть, каким способом посмотреть, что попадает в буфер?
0
|
|
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|
| 26.04.2013, 18:47 [ТС] | |
|
А точно, завтр скину, и проект гляну я щас с телефона, запарилмя писать.
Добавлено через 31 секунду А точно, завтр скину, и проект гляну я щас с телефона, запарился писать.
0
|
|
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|
| 27.04.2013, 05:32 [ТС] | |
|
Вот пользуйся вот етой прогой. Там данные такого формата:
Запрос:18.11.2012 9:09:30.26864 (+0.9375 seconds) 02 03 10 02 00 40 E1 09 Ответ:18.11.2012 9:09:30.29964 (+0.0313 seconds) 02 03 80 02 06 35 62 0E 00 0C 0B 12 09 0B 15 7A 2C 50 03 02 C8 8E AB 41 34 90 01 3F 1E 39 7D 3F DA 71 AB 42 EE 3E 01 44 B8 BF 2E 03 00 00 94 1B 28 00 F2 2F D4 3E 00 00 A6 47 D4 00 4B 04 39 3E 00 00 00 00 00 00 00 00 00 00 01 27 8D 15 C2 F5 3D 7F BE 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 00 00 05 00 00 00 5E 8F 42 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 BD 20 F8
0
|
|
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
||||||||||||||||
| 27.04.2013, 06:01 [ТС] | ||||||||||||||||
|
Ну ты ваще молодец, глянул я твой проект. Во первых ты уверен что ты правильно настроил порт ? Скорость, номер порта, стоп биты, RTS и тд ? И вот в этот параметр ReceivedBytesThreshold поставь 72. Это число байт которые должны быть доступны перед запуском события порта Read.
Во вторых как ты хочешь получить ответ от порта не послав туда ничего ??? Да и вообще ты его даже не открыл, его нужно еще открыть потом посылать туда данные. Добавь на форму таймер, укажи через какое время будут у тебя записываться данные в порт! Вот мой код для открытия и записи данных в порт. У меня каждую секунду туда записывается данные.
Я вот послал командой информацию в порт:
Запрос:18.11.2012 9:09:30.26864 (+0.9375 seconds) 02 03 10 02 00 40 E1 09 И прибор мне на этот запрос отвечает Ответ:18.11.2012 9:09:30.29964 (+0.0313 seconds) 02 03 80 02 06 35 62 0E 00 0C 0B 12 09 0B 15 7A 2C 50 03 02 C8 8E AB 41 34 90 01 3F 1E 39 7D 3F DA 71 AB 42 EE 3E 01 44 B8 BF 2E 03 00 00 94 1B 28 00 F2 2F D4 3E 00 00 A6 47 D4 00 4B 04 39 3E 00 00 00 00 00 00 00 00 00 00 01 27 8D 15 C2 F5 3D 7F BE 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 00 00 05 00 00 00 5E 8F 42 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 BD 20 F8 Добавлено через 6 минут Вот поэтому у тебя никаких ошибок и не выдает, у тебя не разу дело до события serialPort1_DataReceived не дошло, поэтому ошибки о которой я говорил выше не выдает. (то что ты из другого потока пытаешься изменить label2)
1
|
||||||||||||||||
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
||
| 29.04.2013, 14:46 | ||
Я считал, что после установления связи, когда сигналы RTS (запрос на передачу), CTS (чист для передачи что-ли) обменялись, начинается обмен данными. Я препода спросил, он ответил, что при подаче питания на прибор и при исправном кабеле и com port hardware, передача данных начинается немедленно. И отправил меня изучать теорию (UART).
0
|
||
|
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
|
|
| 29.04.2013, 15:15 [ТС] | |
|
Я не специалист пока еще, но вот у меня ни один из имеющихся приборов не отправляет сам себе никакие данные. Надо сначала ему отправить запрос и только после этого в зависимости от запроса я получаю те или иные данные в виде ответа от прибора.
Добавлено через 1 минуту Но вот правильно на строить порт и открыть его надо в любом случае! Добавлено через 1 минуту Я думаю у тебя тоже прибор не ответит пока в него не пошлёшь запрос. Добавлено через 1 минуту Тем более откуда он сам знает какие данные тебе присылать и через какой период ? Добавлено через 4 минуты Протокол modbuse (не помню как правильно пишется) rtu ? Если да просчитай про него. Добавлено через 12 секунд Протокол modbuse (не помню как правильно пишется) rtu ? Если да просчитай про него.
0
|
|
|
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
|
||||||
| 29.04.2013, 15:26 | ||||||
|
Потом, я же проверил свойством
Снифер, который ты мне прислал вообще отказывается что-то показывать. проверил Port Monitor(ом), данные идут. Пока "перевариваю" и пробую все-что ты мне прислал (замечания, софт и т.д.). И вообще, на MSDN какие-то примеры свойств компонентов приводят, вроде и С++ закладку выбираешь. Очень отличаются от того, что у тебя и других в коде на VS 2010. Взять тот же (IsOpen).
0
|
||||||
| 29.04.2013, 15:26 | |
|
Обработка данных с COM порта без использования Sleep Обработка ошибки при потере COM порта Обработка данных с COM порта
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|