|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
Работа с монохроматором МХД-2 через COM-порт06.09.2013, 13:13. Показов 12167. Ответов 46
Метки нет (Все метки)
Уважаемые форумчане, подскажите пожалуйста как отправить команду монохроматору на c# если в инструкции по программированию устройства написано: Команды передаются в виде последовательности байт, заканчивающейся кодом <СR>. Каждый байт передаётся в виде двухсимвольного hex-кода. Первый байт последовательности – код команды, далее следуют параметры команды, последним передаётся контрольный байт длины посылки. Формат: 4С XX XX 03 <CR>. XXXX длина волны в Hex
0
|
|
| 06.09.2013, 13:13 | |
|
Ответы с готовыми решениями:
46
Работа с клавиатурой через порт:
digitalRead(), замена, работа через порт |
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
| 11.09.2013, 13:45 [ТС] | |
|
Кроме этого ничего нет.
0
|
|
|
|
||
| 11.09.2013, 14:21 | ||
|
...название-то монохроматора есть? Он у вас по реальному физическому COM-порту или виртуальному COM-порту over USB? Если последнее, то в диспетчере оборудования под каким именем?
Что до полного ответа:
1
|
||
|
Заблокирован
|
|||||||||||||
| 11.09.2013, 14:24 | |||||||||||||
Добавлено через 9 минут
0
|
|||||||||||||
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
||||||
| 11.09.2013, 14:47 [ТС] | ||||||
|
монохроматор МХД-2, связь по реальному физическому COM-порту.
вот обработчик чтения:
stroka L???:04 A0 0F 97 15 Но когда я обращаюсь к элементам stroka, char l = stroka[0]; то он мне возвращает:L, A так как монохроматор отправляет по 8 бит Как три посылки по 8 бит соединить в один буфер?
0
|
||||||
|
|
|
| 11.09.2013, 14:51 | |
|
...это в настройках порта битность 8. Вы вот это "4C 8D 13 03 3A 30 34 20 41 30 20 30 46 20 39 37 20 31 35 0D 0A" откуда взяли? Прямо из bufferin. Не заметил у вас накопления данных. Приведите логи со сниффера в режиме HEX отображения данных, это сразу покажет что на самом деле шлется и принимается. Portmon, к примеру. Логи в текстовом файле к посту.
1
|
|
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
| 11.09.2013, 15:05 [ТС] | |
|
скачал Portmon, записал log, вот что получилось
0
|
|
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
| 11.09.2013, 15:17 [ТС] | |
|
вот в hex
0
|
|
|
|
|||
| 11.09.2013, 15:20 | |||
|
Итак, послали в порт пакет:
============== Вам после посылки запроса нужно установить счетчик и завести глобальный буфер (тот же массив). По приему данных - первый пакет занести в буфер, по приему следующего пакета соединить его по +. Дальше работать со склеенным пакетом.
1
|
|||
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
| 11.09.2013, 15:25 [ТС] | |
|
реакця монохроматора на запрос вида: 52 01 0D (Чтение текущего состояния)
0
|
|
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
| 11.09.2013, 15:28 [ТС] | |
|
я в программировании новичок, не совсем понимаю как установить счетчик (чего счетчик?) и как объявить глобальный буфер...
0
|
|
|
|
|||
| 11.09.2013, 16:21 | |||
|
...просто глобальная переменная, вне event-a чтения данных. Пришел пакет, инкрементировали переменную, занесли пакет в другую переменную, пришел второй пакет - берем предыдущий пакет и соединяем с текущим, что то вроде old+=new.
Впрочем, можно и по другому: анализируем приходящие пакеты на предмет наличия нулевого байта с командой. Скажем if buf[0] == 0x52 (или что там у вас, 0х4с), если да, тогда начинаем анализ принятого пакета с 5-го байта: 30 - 0 - байт состояния 34 - 4 20 - пробел далее устанавливаем флаг, по которому считаем, что пришел второй кусок данных в 13 байт. =========== в последнем логе не увидел запроса вида:
Еще раз снимите. Добавлено через 47 минут ...так что там с логом на запрос:
1
|
|||
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
| 11.09.2013, 16:58 [ТС] | |
|
к сожалению с монохроматором смогу работать только завтра.рабочий день кончился...
0
|
|
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
|
| 12.09.2013, 09:28 [ТС] | |
|
вот запрос 5201
1
|
|
|
|
||
| 12.09.2013, 10:38 | ||
|
о-как, 16-ти байтный ответ:
1
|
||
|
1 / 1 / 0
Регистрация: 06.09.2013
Сообщений: 24
|
||
| 12.09.2013, 14:45 [ТС] | ||
|
raxp, спасибо большое. Все получилось.
вот только монохроматор почему то не мотает...
0
|
||
|
|
|
| 12.09.2013, 16:05 | |
|
...жду большей статистики по запросам и ответам.
Не мотает возможно по причинам: 1- вы посылаете одну и ту же команду (по первому логу и первым постам), по битам состояния у меня выходит что он стоит в крайнем уже положении 2- описание протокола не полностью соответствует модификации прибора (по общим данным там еще и управление по UDP по эзернтету могет, описание это нашел, а на обмен по RS-232 нет, только ваше) 3- к примеру, неверно выставлены таймауты (мне до сих пор непонятно, почему в ваших логах потери пакетов и их раздвоение, может у вас ОС загружена еще чем то сторонним?), проверьте независимым терминалом поотправлять пакеты, тем же от aggsoft или comport toolkit, при этом не забывайте все это отснифферить и приложить на форум для анализа
0
|
|
| 12.09.2013, 16:05 | |
|
Помогаю со студенческими работами здесь
40
Работа с GPS приемником через Com порт
Работа java-аплета через 433 порт Работа с несколькими устройствами через серийный порт Работа с устройством ELM327 через СОМ-порт используя BComPort Брусникина И.В Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|