Имя: Пароль:
1C
1С v8
Получение данных с COM-порта в 1С 8.3 x64
0 Mr-FReSH
 
28.03.19
10:43
Доброго времени суток!

1С 8.3+ x64. Стоит задача получить данные с устройства по COM-порту (простая строка).
Перелопатил половину интернета, почти все решения или под 7.7. или под 8.2 и в 8.3 не работают. проверял: нетленка, mscom, vk_rs_232, allsp_1C_ComPort

Есть ли у кого-то опыт получения данных из ком порта?
1 Garykom
 
гуру
28.03.19
11:06
Драйвером сканера ШК обычным уже пробовал?
2 Mr-FReSH
 
28.03.19
11:09
(1) Я все надеялся что до этого не дойдет, но уже открыл Розницу 2 и сейчас буду смотреть как он работает
3 1Сергей
 
28.03.19
11:11
Винда (начиная с 95-ой, кажись) не даёт напрямую обращаться к комп-порту. Нужны дрова
4 Mr-FReSH
 
28.03.19
11:18
(3) Но ведь тот же сканер ШК не требует установки дополнительных дров, все делается внутри 1С

Да и по типу той же нетленки (есть на инфостарте) драйвера никакие не ставятся
5 Mr-FReSH
 
28.03.19
12:11
Если кому все таки интересно. Через розницу получилось поймать данные через компоненту сканера ШК. (добавил оборудование сканер, повесил его на порт и в этот порт подлкючил оборудование, в отладке попал во внешее событие)

Осталось только понять как вытащить оттуда эту компоненту =)
6 Базис
 
naïve
28.03.19
12:13
(5) Под ограниченными правами ещё проверь, и в разных ОС.
7 ManyakRus
 
28.03.19
12:45
1) компонент rs232.dll работает неплохо,
но:
1) только толстый клиент
2) 1С запускать от имени администратора компьютера

Сделал чтение с комп-порта в 1С из спец. оборудования

2) "...Через розницу получилось поймать данные"
Тонкий клиент ?
если тонкий то напишите потом как сделали :)
8 dmpl
 
28.03.19
13:01
А чтение из файла "COM1" не работает?
9 Mr-FReSH
 
28.03.19
13:10
(7) Да, тонкий клиент, пока удалось вытащить данные и ВРОДЕ как начать чтение порта. Борюсь с тем, что в рознице событие приходит, а в моей вытащенной компоненте нет. Сообщю сюда, если появится результат
10 Mr-FReSH
 
28.03.19
13:34
Итак товарищи, удалось.

Компоненту можно достать из общих макетов конфигурации розница (на самом деле я думаю можно найти где-нибудь еще)
Называется Драйвер1ССканерШтрихкода
Подсовывается как двоичные данные в вашей конфигурации с любым названием

Дальше код

Вызывал из МодуляУправляемогоПриложения ПриНачалеРаботыСистемы, но думаю это не так важно

Сам код:

Процедура ПриНачалеРаботыСистемы()
    ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаРаботыCOM", "Scanner");
    ОбъектДрайвера = Новый ("AddIn.Scanner.Scanner");
    Результат = (ОбъектДрайвера.Подсоединить("СканерШтрихкода") = 0);
    ОбъектДрайвера.ИмяСобытия = "ПолученШтрихкод";
    ОбъектДрайвера.COMКодировка = "UTF-8";
    ОбъектДрайвера.БитДанных = 8;
    ОбъектДрайвера.Порт = 1;
    ОбъектДрайвера.Скорость = 9600;
    ОбъектДрайвера.СуффиксСтрока = Символы.ПС;
    
    Результат = (ОбъектДрайвера.Занять(1) = 0);
    ОбъектДрайвера.УстройствоВключено = 1;
    ОбъектДрайвера.ПосылкаДанных      = 1;
    ОбъектДрайвера.ОчиститьВход();
    ОбъектДрайвера.ОчиститьВыход()
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    а=0;
КонецПроцедуры


Код внутри обработки внешнего события просто для точки останвы использовал
Инициализации компонены выглядит несуразно, просто смотрел как работает в рознице и подтыкал свои данные;
И вуаля, оно заработало =)