Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Передача цены товара в весы          
mact Подменю пользователя
сообщение 26.01.15, 1:46
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 2 раз
Рейтинг: 0

Доброго!
Подскажите, у меня не совсем стандартная ситуация, немогу разобраться, мне нужно из 1с передать цену на весы, таковая функция имеется в которых,
Пытаюсь сделать это так

[пытаюсь прочитать правила форума, и наконец научиться выделять код]

Фунция тарирования(Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(01)wink.gif, снимания веса работают нормально (Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(03)wink.gif , а вот запись никак не одолею, может кто подскажет что? ( порт также пробывал закрывать после работы, не реагирует.


Сообщение отредактировал logist - 26.01.15, 9:03

mact Подменю пользователя
сообщение 26.01.15, 8:47
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 2 раз
Рейтинг: 0

Маленькое уточнение, весы ICS-15NT.

mact Подменю пользователя
сообщение 26.01.15, 20:44
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 2 раз
Рейтинг: 0

Подскажите, я правильно хоть пишу в порт, или нет?
Функция Цена(Объект, Цена) Экспорт
    
    Если Объект.Драйвер.PortOpen = 1 Тогда
        
        //Передаю комманду на передачу цены
        Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(02);        
        //Пытаюсь передать цену
        Объект.Драйвер.Output = Символ(11)+Символ(22)+Символ(3);
        //закрываю порт
        Объект.Драйвер.PortOpen = 0;
    КонецЕсли;
КонецФункции // Цена()


Или
Объект.Драйвер.Output
вся запись должна быть в одной строчке
Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(02) +  Символ(11)+Символ(22)+Символ(3);

?

logist Подменю пользователя
сообщение 26.01.15, 21:14
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вы уверены, что команда на ввод данных, у драйвера, именно "Output", а не Input ? И, вероятно всё должно быть в одну строку.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mact Подменю пользователя
сообщение 26.01.15, 22:07
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 2 раз
Рейтинг: 0

Вот функция считывания данных веса
Функция Вес(Объект, Вес) Экспорт

    Перем мТаймаут, мДлина, мДанные, мРезультат, мНачало, мБуфер, мТаут;

    Результат = мНетОшибки;
    
    Если Объект.Драйвер.PortOpen = 1 Тогда
        
        мТаймаут = 2;
        мДлина   = 0;
        мДанные  = "";
        мРезультат = Ложь;
        
        Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(03);
        мНачало  = ТекущаяДата();
        Пока Истина Цикл
            
            Если Объект.Драйвер.InBufferCount>0 Тогда
                мНачало  = ТекущаяДата();
                мБуфер = Объект.Драйвер.Input;
                Сообщить("мБуфер="+мБуфер);
                мДанные = мДанные + мБуфер;
                мДлина = мДлина + СтрДлина(мБуфер);
            КонецЕсли;
            
            Если мДлина>=18 Тогда                мРезультат = Истина;
                Прервать;
            КонецЕсли;
            
            мТаут = (ТекущаяДата()-мНачало);
            Если мТаут>=мТаймаут Тогда
                мРезультат = Ложь;
                Прервать;
            КонецЕсли;
        
        КонецЦикла;
        
        Если мРезультат Тогда
            
            мБуфер = Сред(мДанные,1,6);

            мДлина  = СтрДлина(мБуфер);

            мДанные  = "";
            Пока мДлина>0 Цикл    
                мДанные = мДанные + Сред(мБуфер,мДлина,1);
                мДлина  = мДлина - 1;
            КонецЦикла;
            Попытка
                мДлина = Число(мДанные);
            Исключение
                мДлина = 0;
            КонецПопытки;
            Вес = мДлина/1000;
            
        Иначе
            
            Результат = мОшибкаНеизвестно;
            Объект.ОписаниеОшибки = "Таймаут устройства";
            
        КонецЕсли;
                
    КонецЕсли;


    Возврат Результат;

КонецФункции // Вес()


Аналогично комманду тарирования
Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(02);
тоже отрабатывает(весы переключаются в режим "Тара" и устанавливают нулевой вес), т.е. запись комманды в порт проходит.
А вот при после комманды запись нужной информации не проходит, почему, непойму. Как-бы весы ждут чего-то ещё, или неправильно передаю.




Цитата(mact @ 26.01.15, 22:01) *
Аналогично комманду тарирования
Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(02);


Сорри, не туда вставил, тарирование это
Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(01);



mact Подменю пользователя
сообщение 29.01.15, 10:12
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 23
Спасибо сказали: 2 раз
Рейтинг: 0

Всем доброго!
Победил,
оказалось для подтверждения нужно после комманды передавать завершаюший символ(00)
        Объект.Драйвер.Output = Символ(00)+Символ(00)+Символ(00)+Символ(02);
        Объект.Драйвер.Output = Цена+Символ(00);


Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 1:04
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!