Получение данных с COM-порта #567871


#0 by askharlov
Возникла новая задача: Необходимо затягивать данные в 1С с COM-порта. Кто знает как работать с RS232 в 1С отзовитесь. Скажите пожалуйста с чего начать копать задачу. П.С.: внешнее устройство не кассовый аппарат (горнолыжный хронометр)
#1 by vudo
Искать ВК! Видел компоненту для работы с COM! Например:
#2 by vudo
Вот только такая работа со стороны 1С может быть проблематичной, т.к. будут критические задержки в обработке сигнала и ответах. Может не получится из-за этого реализовать протокол обмена с хронометром...
#3 by askharlov
Спасибо, скачал, посмотрю
#4 by askharlov
Скачал vk_rs232.dll. Но там описание по созданию объекта и открытию порта для 7-ки. Как это делать в 8-ке? Есть у кого готовый фрагмент кода как подключить компоненту, подключить порт, открыть его и принять данные?
#5 by askharlov
Подключить компоненту и открыть порт вроде получилось (по крайней мере для других программ он заблокирован), но вот как принять данные???? Сделал как было в примере: КонецПроцедуры Пускаю данные с внешнего девайса на КОМ-порт, а в ответ тишина. И также вопрос как потом закрыть КОМ-порт. Написал rs232.ЗакрытьПорт, 1С не ругается, но для других проограмм порт остается недоступным.
#6 by Vladal
Объект обнули, который у тебя Новый COMОбъект
#7 by askharlov
Да, большое спасибо. Обнулил, теперь вроде закрытие порта работает
#8 by vudo
В форме в которой ОбработкаВнешнегоСобытия в свойствах формы ссылка на эту процедуру есть?
#9 by askharlov
Остался еще один вопрос: При передаче данных с хронометра на КОМ-порт у меня за одну передачу несколько раз инициализируется внешнее событие. И каждый раз в переменную "Данные" дописывается информация Вот пример: Внешнее событие: Источник=rs232  Событие=StringДанные=ID 02021    01A2 DS 04  00 START - FINISH        0637 AN   23    1 M1 20:26:45.29100  4265    06A5 AC   2 Внешнее событие: Источник=rs232  Событие=StringДанные=ID 02021    01A2 DS 04  00 START - FINISH        0637 AN   23    1 M1 20:26:45.29100  4265    06A5 AC   24    2 M1 20:27:00.06500  4265    0693 AN   25    3 M1 20:27:30.97800  4265    06B0 AN   23    1 M4 20:2 Внешнее событие: Источник=rs232  Событие=StringДанные=ID 02021    01A2 DS 04  00 START - FINISH        0637 AN   23    1 M1 20:26:45.29100  4265    06A5 AC   24    2 M1 20:27:00.06500  4265    0693 AN   25    3 M1 20:27:30.97800  4265    06B0 AN   23    1 M4 20:27:33.94900  4265    06B0 RR    0   23          48.65800    04F6 AN   25    2 M4 20:27:48.22400  4265    06A Внешнее событие: Источник=rs232  Событие=StringДанные=ID 02021    01A2 DS 04  00 START - FINISH        0637 AN   23    1 M1 20:26:45.29100  4265    06A5 AC   24    2 M1 20:27:00.06500  4265    0693 AN   25    3 M1 20:27:30.97800  4265    06B0 AN   23    1 M4 20:27:33.94900  4265    06B0 RR    0   23          48.65800    04F6 AN   25    2 M4 20:27:48.22400  4265    06AB RR    0   25          17.24600    04ED AC   26    4 M1 20:27:55.63700  4265    06A6 DE 04    010D Можно как-то побороть чтоб на одну передачу по КОМ-порту было одно внешнее событие?
#10 by big
Дык, разруливай это в самой ВК. Зачем всю шнягу в 1С-то пихать??
#11 by askharlov
не понял. как разруливать в ВК? взять ее исходник и самому дописать нужный код?
#12 by Serginio1
Пишешь public void ПодключитьСканер(int НомерПорта)       { где Берешь отсюда ВК Исходник ВК которая загружает Объект Автоматизации поддерживающий ITypeInfo и выполняет все его свойства и методы через IlanguageExtender
#13 by vudo
Скорее всего он от тебя ждет контрольного байта о получении пакета... А раз его нету, то продолжает долбить. Описание протокола обмена есть?
#14 by askharlov
описания нету
#15 by vudo
Скорее всего там 1 байт подтверждения. Попробуй в цикле различными байтами подолбить в ответ на пакеты. Если не выйдет, то только описание протокола обмена искать...
#16 by vudo
+ Правда есть еще вероятность, что ты во временной интервал ожидания ответа попасть не сможешь. Так что дело будет геморройное...
#17 by askharlov
Решил иначе: заня, что последняя строка начинается с DE анализирую Данные и когда встречается DE, тогда понимаю, что передача завершена и запускаю обработку полученных данных
#18 by defini
Вот здесь глянь, то что нужно.
#19 by vudo
Если посмотреть на данные из , так такое впечатление, что передача порвалась как минимум 3 раза... Может и твое DE 04 - это только часть пакета?
#20 by askharlov
нет, DE - это конец, по структуре данных я понимаю что есть что
#21 by mzelensky
это фишка в самой ВК. Я подправлял библиотеку
#22 by mzelensky
ТУПНЯК! я тоже так сперва хотел, но отказался. Проще взять Делфяк и внести изменение в библиотеку (добавить 1 строчку)!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям