gifts2017

Native компонента для чтения из Com порта

Опубликовал Владимир Вагин (compguru) в раздел Программирование - Внешние компоненты

Компонента позволяет посредством ВнешнегоСобытия получать данные из Com-порта

Компонента поставляется в x32 и x64 вариантах.

Порядок подключения:

Из макета

ПодключитьВнешнююКомпоненту("Обработка.КомПорт.Макет.Библиотека","allsp_1C_ComPort",ТипВнешнейКомпоненты.Native);
КомПорт = Новый("AddIn.allsp_1C_ComPort.allsp_1C_ComPort");

Из файла:

ПодключитьВнешнююКомпоненту("Путь к dll файлу","allsp_1C_ComPort",ТипВнешнейКомпоненты.Native);
КомПорт = Новый("AddIn.allsp_1C_ComPort.allsp_1C_ComPort");

Свойства:

КомПорт.ИмяПорта(PortName) = "COM1"; // Имя ком порта

КомПорт.РазмерБлокаДанных(BlockSize) = 1; // Размер данных, который накопит компонента прежде чем 
                                          // вызовет внешнее событие (произвольное целое число)

КомПорт.Скорость(BaudRate) = 9600;        // Скорость работы Com порта (110, 300, 600, 1200, 2400, 
                                          // 4800, 9600, 14400, 19200, 38400, 56000, 57600, 115200,
                                          // 128000, 256000)
КомПорт.СтопБит(StopBits) = 0;            // 1 стоп бит = 0, 1.5 стоп бита = 1, 2 стоп бита = 2

КомПорт.БитДанных(DataBits) = 8;          // Количество бит данных (целое число)

КомПорт.Четность(Parity) = 0;             // Четность (NOPARITY=0, ODDPARITY=1,EVENPARITY=2,
                                          // MARKPARITY=3,SPACEPARITY=4)

Методы:

КомПорт.ОткрытьПорт(); // Открывает порт
КомПорт.ЗакрытьПорт(); // Закрывает порт

Все свойства устанавливаются до открытия порта. Для изменения свойств необходимо закрыть и заново открыть порт.

Внешнее событие:

Процедура ВнешнееСобытие(Источник, Событие, Данные) // Истичник = COM_PORT, Событие = DATA_BLOCK
	ПрочитанныеДанные = Данные;
КонецПроцедуры

Дополнительныая информация

Ссылка на объект компоненты должна быть доступна на протяжении всей работы с Com  портом, во избежании выгрузки компоненты платформой.

Например так:

Перем КомПорт

Процедура ПриОткрытии()
	ПодключитьВнешнююКомпоненту("Обработка.КомПорт.Макет.Библиотека","allsp_1C_ComPort",ТипВнешнейКомпоненты.Native);    
КонецПроцедуры

Процедура ДействиеНачатьПрослушивание()
    КомПорт = Новый("AddIn.allsp_1C_ComPort.allsp_1C_ComPort");
    КомПорт = ОткрытьПорт();
КонецПроцедуры

Процедура ДействиеЗакончитьПрослушивание()
    КомПорт = ЗакрытьПорт();
    КомПорт = Неопределено;
КонецПроцедуры

Процедура ПриЗакрытии()
	Если КомПорт <> Неопределено Тогда
        КомПорт = ЗакрытьПорт();
        КомПорт = Неопределено;
    КонецЕсли;
КонецПроцедуры

КомПорт = Неопределено;

Планируется выход платной версии, с возможностью записи в COM порт и управлением сигнальными линиями.

Заключение

Внимание! Компонента выпущена в бета версии, никаких гарантий на ее работу не предусмотрено, хотя в настоящее время и работает в реальных решениях. Выложена для ознакомления и применения с целью сбора отзывов. Компонента не обременена лицензионными соглашениями и предоставляется для свободного использования на свое усмотрение как есть.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Библиотека x32
.dll 109,50Kb
17.07.16
1
.dll 109,50Kb 1 Скачать
Библиотека x64
.dll 126,50Kb
17.07.16
2
.dll 126,50Kb 2 Скачать
Архив с обеими версиями
.rar 104,03Kb
17.07.16
11
.rar 104,03Kb 11 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Ярослав Володимирович (myr4ik07) 19.07.16 10:56
Дуже дуже вдячний, якщо все гуд, то це супер, це то, що нам якраз треба з специфічним сканером штрих-кодів. Буду тестувати.
2. Ярослав Володимирович (myr4ik07) 19.07.16 11:07
Получаю
{Форма.Форма.Форма(7)}: Тип не определен (AddIn.allsp_1C_ComPort.allsp_1C_ComPort)
КомПорт = Новый("AddIn.allsp_1C_ComPort.allsp_1C_ComPort");

с таким подключением
&НаКлиенте
Перем КомПорт;

&НаКлиенте
Процедура ПриОткрытии()
	ПодключитьВнешнююКомпоненту("C:\ComPort_x64.dll","allsp_1C_ComPort",ТипВнешнейКомпоненты.Native); 
	КомПорт = Новый("AddIn.allsp_1C_ComPort.allsp_1C_ComPort");
КонецПроцедуры

...Показать Скрыть


да и
ПодключитьВнешнююКомпоненту("G:\WH-ОБМЕН\ComPort_x64.dll","allsp_1C_ComPort",ТипВнешнейКомпоненты.Native) = Ложь


Толстый клиент. Управляемое приложение.
3. Ярослав Володимирович (myr4ik07) 19.07.16 11:20
У кого то подключилась данная компонента?
4. Владимир Вагин (compguru) 19.07.16 11:21
(2) myr4ik07, Отвечу в ближайшее время
5. Владимир Вагин (compguru) 19.07.16 11:23
(3) myr4ik07, Подключать необходимо версию х32
6. Ярослав Володимирович (myr4ik07) 19.07.16 11:35
(4) compguru,
спасибо, работает, бомба
&НаКлиенте
Перем КомПорт;

&НаКлиенте
Процедура ПриОткрытии()
	ПодключитьВнешнююКомпоненту("G:\log\ComPort_x32.dll","allsp_1C_ComPort",ТипВнешнейКомпоненты.Native);
	КомПорт = Новый("AddIn.allsp_1C_ComPort.allsp_1C_ComPort");
	КомПорт.ИмяПорта = "com3";	
	КомПорт.ОткрытьПорт();
КонецПроцедуры

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
	Сообщить(Данные);
	Сообщить(Источник);
	Сообщить(Событие);
КонецПроцедуры


...Показать Скрыть
7. Владимир Вагин (compguru) 19.07.16 11:37
(6) myr4ik07, Это хорошо. Будут проблемы, пишите
8. Александр Закиров (sasha777666) 20.10.16 13:23
Как проверить используется ли порт чем-то другим
9. Руслан Галиев (RuslanGaliev) 02.11.16 14:23
(7) compguru, Компонента подключается, но внешнее событие так и не получил.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа