Имя: Пароль:
1C
1С v8
Работа с COM портом
0 soleg78
 
27.01.13
19:48
Доброго времени суток!
платформа 8.2.15
пробую подключить весы через СОМ порт
для этого пробую написать следующее:

Процедура ПриНачалеРаботыСистемы()

ЗагрузитьВнешнююКомпоненту("vk_rs232");
       Попытка
           rs232=Новый("AddIn.vk_rs232");
           
           ИмяПорта="Com4";
           rs232.ОткрытьПорт(ИмяПорта);
       Исключение
           Сообщить("Объект не найден");
       КонецПопытки;

Все проходит без ошибок

не могу считать текущие данные
в Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)приходят одни и теже значения

например

Источник =vk_rs232
Событие = BarCodeValue // почему BarCode???? это вродя для сканера
Данные = ST,GS,    0.55,kg , где 0.55-это вес который получаеться на весах при запуске системмы

кто может поделится как ОнЛайн считывать данные с СОМ порта?
1 oleg_km
 
27.01.13
19:55
Terminal считывает? Мы пользуемся ActiveX из MS Visual Studio 2003 уже года три. Иногда подвисает, приходится перезапускать компьютер, но мне кажется это просто беда COM
2 soleg78
 
27.01.13
20:00
Terminal - пока локально, но потом надо прикрутить в терминальном режиме

с весов есть только СОМ выход

"Мы пользуемся ActiveX из MS Visual Studio 2003 "...А поделиться кусочком кода можите ?
3 soleg78
 
27.01.13
20:22
а может эта компонента вообще не для сканера?
4 oleg_km
 
27.01.13
20:26
Моя компонента просто для КОМ-порта, поэтому работает с любым устройством подключенным к КОМ порту, физическому или виртуальному. До этого пользовались 1С-ной забыл как называется на диске ИТС есть. У нас с ее помощью работают сканеры ШК и GPRS модем принимает и отсылает СМС

кусочек кода:
Процедура ИнициализироватьСканер() Экспорт
   ЭлементыФормы.Сканер.CommPort = ПолучитьОбщуюНастройку("Системные\ШтрихКод\ПортСканера");
   
   Попытки = 3;
   Пока Попытки <> 0 Цикл
       Ошибка = "";
       Попытка
           ЭлементыФормы.Сканер.PortOpen = Истина;
       Исключение
           Ошибка = ОписаниеОшибки();
           Если НЕ СтрСодержит(Ошибка, "Invalid port number") Тогда
               ЗаписьЖурналаРегистрации("Сканер Штрих-кодов", УровеньЖурналаРегистрации.Предупреждение,,, Ошибка);
           КонецЕсли;
       КонецПопытки;
       
       Если СтрСодержит(Ошибка, "Port already open") Тогда
           Попытки = Попытки - 1;
           GetAddIn().Sleep(2000);
       Иначе
           Попытки = 0;
       КонецЕсли;
   КонецЦикла;
   
   ОбновитьКнопкуШК();
   Данные = "";
КонецПроцедуры

Процедура ОсвободитьСканер() Экспорт
   Если ПроверитьПорт() Тогда
       ЭлементыФормы.Сканер.PortOpen = Ложь;
   КонецЕсли;
   
   ОбновитьКнопкуШК();
КонецПроцедуры

Процедура СканерOnComm(Элемент)
   Буфер = Элемент.Input;
   
   Буфер = СтрЗаменить(Буфер, Символы.ВК, "");
   Буфер = СтрЗаменить(Буфер, Символы.ПС, "");
   
   Данные = Данные + Буфер;
   ПодключитьОбработчикОжидания("ОбработатьЧтениеШтрихкода", 0.1, Истина);
КонецПроцедуры

Там вобщемто все просто, есть событие при приходе данных и все
AdBlock убивает бесплатный контент. 1Сергей