весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Модели:
Меркурий 313, Меркурий 314, Меркурий 315, Меркурий 330
Ответить
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

Уважаемые коллеги. Используем весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 т.к. старый драйвер в Win 8.1 не работает. Новый драйвер для 7.7 не предназначен. Весы подключены через шнур COM - USB. Работа из 1С с COM портом осуществляется через компоненту (dll) написанную на Delphi 7. Проблема в том, что не всегда в 1С возвращается отклик от весов. При том, что цена на весы отправляется. Систематику выявить не получается. Все может работать нормально и в течение рабочего дня. Может полдня работать. Может совсем не работать.
Код в 1С упрощенно выглядит так:
rs232.ЗаписатьСтроку("02 00 05 03 02 02 00");
rs232.ЗаписатьСтроку("03");
Между строками ставил задержку 0,1с.
В чем может быть проблема? Увеличить задержку или с таймаутом на порту эксперементировать?
Спасибо.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение slan »

У меня вроде работало всё без дополнительных таймаутов и задержек. Может быть дело в переходнике? Если есть возможность - попробуйте с другим переходником
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

slan писал(а):У меня вроде работало всё без дополнительных таймаутов и задержек. Может быть дело в переходнике? Если есть возможность - попробуйте с другим переходником
Спасибо за рекомендацию. Попробуем. Если есть такая возможность опишите Вашу конфигурацию (какая операционка, версия 1с) и технологию подключения (какой провод, переходник, прошивка весов, через какую компоненту отправляете команды из 1с). Я на этот вопрос довольно много времени потратил пока более-менее рабочий вариант получился.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение slan »

Я тестировал драйвер, который для 1с 8. (собственно говоря я его разработчик)
Тестировал без 1с, через самописное приложение. Весы подключал напрямую в ком-порт (стоит мультипортовка в системнике). Операционка была win7-64 на тот момент. Прошивку к весам к сожалению не вспомню, давно это было.
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

Спасибо за ответ. Более склоняемся к тому, чтобы снести Вин 8.1 и установить 7. На ней тестировалось и подобного явления не наблюдалось.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение slan »

Работа с ком-портом в драйвере для весов (который для 1с 8), идентична работе с ком-портом в драйвере 2.х для фискального регистратора. А драйвер для фискального регистратора постоянно обновляется и тестируется, в том числе и на win 8, 8.1, 10.
Так что не думаю, что как-то влияет версия windows. Хотя возможно драйвер для вашего переходника usb->com работает корректно только под какой-то определенной версией windows.
p.s. если сильно хотите, могу немного адаптировать драйвер для весов под 1с7, там ведь насколько я знаю проблема в отсутствии поддержки out-параметров в методах и safearray?
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

slan писал(а):p.s. если сильно хотите, могу немного адаптировать драйвер для весов под 1с7, там ведь насколько я знаю проблема в отсутствии поддержки out-параметров в методах и safearray?
Сильно хочу. Проблема именно в этом. Я перебрал с десяток компонент в т.ч. которые оборачивают данные из 7.7 в safearray чтобы работать с текущим драйвером, выложенном на этом форуме. Безрезультатно. Поскольку разработчики не планировали, чтобы драйвер работал с 7.7, стал искать способы самостоятельно. Сначала сделал dll на VFP чтобы просто понять возможно ли преобразовывать данные из 7.7 в safearray. Результат был положительный. Получилось взаимодействовать с последним драйвером через промежуточное преобразование. Но там возник целый ряд проблем с получением данных от 7.7 и установить готовую dll от VFP на другую машину тоже не очень просто. Решил готовое поискать. Компонент, разработчики которых, декларируют то что мне нужно масса. Но из того что нашел ничего не заработало нормально. Решил уже напрямую с портом работать. Перепробовал тоже не одну компоненту и не на одном языке. Подошла одна и то пришлось разворачивать Delphi т.к. параметры порта зашиты в коде. Разбираться как туда передавать нужные величины уже не было ни времени ни сил. Подобрал какие нужно(не с первого раза) и откомпелировал. Заработало! Но радость не долгой была. Когда на рабочую машину поставил с вин 8.1... Возможно и проблема в драйвере переходника. При установке бал глюк. Но уже не помню чего.. Подумал, что показалось и внимания особого не обратил. Вкратце примерно такая история.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение slan »

После праздников тогда займусь. Добавлю алиас для метода Подключить, вместо safearray у него будет в параметрах порт и скорость.
И добавлю свойство Вес, которые будет заполняться после вызова метода ПолучитьВес, вы же сможете вызвать этот метод с out-параметром? (я так понимаю значение не установится этого параметра, поэтому добавлю свойство)
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

Да, конечно, смогу вызвать метод с параметром. Так и было при работе со старой версией драйвера. Очень буду ждать новостей от Вас по этому поводу.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение slan »

То есть, метод с out-параметром из 1с 7 в принципе вызвать можно, однако значение этого параметра получить не удастся, правильно?
Я плохо знаком с 1с, отсюда и столько вопросов.
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

Вот ка это выглядело со старым драйвером:
OLE = CreateObject("MerkScalesDrv.arMaxMerkScalesDrvS");
OLE.Open(ПортВесов);
КолГрамм = OLE.Process(КолГрамм);
Методом Open открываем порт передавая туда только его название в переменной ПортВесов (напр. "COM1")

С настоящим драйвером:
OLE = CreateObject("MercuryCom.M315Drv1C");
Массив[1]=4; (Это номер порта)
Массив[2]=4800; (скорость)
И на этом все. т.к. Массив то вроде в 1С 7.7. есть но не safearray.
и при вызове OLE.Open(Массив[]); В разных вариантах ругается либо 1С либо драйвер.
т.е. до вызова метода GetWeight дело не доходит.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение slan »

Добавил методы ПодключитьСПараметрами и ТестУстройстваСПараметрами, тестируйте
Вложения
MercuryScaleDrv.exe
(1.32 МБ) 400 скачиваний
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

Порт открывается. Но при попытке вызвать метод ПослатьЦену или ПолучитьВес возвращается ошибка 256. т.е DeviceID у меня не верный. При вызове OpenWithParams присваивал DeviceID="" пробовал также со значениями "0" и "1". Порт с этими значениями открывается но вышеуказанные методы возвращают ошибку. Не нашел где DeviceID устанавливается или как его можно получить.
Аватара пользователя
slan
Сообщения: 1157
Зарегистрирован: 18 фев 2011, 11:36
Откуда: Курск

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение slan »

DeviceID возвращается out-параметром методом Подключить (ну или ПодключитьСПараметрами)
Видимо из 1с 7 всё же нельзя получить значение out-параметра. Верну в свойство
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

Внутри 1С 7.7 переменные передаются как по ссылке так и по значению. Как со внешними компонентами не нашел информации. Полагал, что и со внешними так же. Все с кем удалось посоветоваться работают с внешней компонентой через ее свойства. Скорее всего не передает 1с 7.7 во внешнюю компоненту переменную по ссылке.
Сейчас буду тестировать версию 1.3.0.
Аватара пользователя
amurdv
Сообщения: 9
Зарегистрирован: 29 фев 2016, 06:46

Re: весы Меркурий 315 в 1С Торговля и склад 7.7 через RS232 не всегда возвращают данные

Сообщение amurdv »

Добрый день! Хочу поблагодарить Вас за проделанную работу. Только сейчас проблему решили до конца. Чип переходника не был предназначен для работы с вин 8.1. Поэтому периодически USB "отсыхал". Лечились переподключением. Купили нужный переходник теперь работает нормально.
Когда устанавливал Ваш драйвер сначала установил "по верху". Некоторые методы не отрабатывали нормально. Не сразу додумался снести и установить заново. Также русские алеасы методов у меня не работали. Заменил все английскими и все ок. Выражаю Вам глубокую благодарность за то, что не остались равнодушны к моим злоключениям. Думаю, что я не единственный кто подключает данные весы в подобной конфигурации к 7.7. Поэтому думаю, можно Вас поблагодарить и от их лица поскольку они уже избавлены от проблем постигших меня(писать свои драйвера и т.п.) хотя наверное, знать об этом не будут.
Всего Вам наилучшего!
Ответить