- 1
- 2
- 3
- 4
- 5
Помните шутку про 1С/C++/CSH программиста?
Так вот: парень хочет работать с COM портом, но почему-то COM объект в Windows не создается.
https://phpclub.ru/talk/threads/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-failed-to-create-com-object.86770/
--А как правильно: Иран или Ирак?
--Вроде, и так, и так говорят
https://www.format.com/
http://edit.com/
https://www.diskcopy.com/
Что он там, транзистор припаять не может?
причем в том форуме все остальные тоже дебилы, и главному дебилу помочь не могут
Но он работает с ним через "AddIn.Line8".
Скорее всего 1С его видит, потому что .dllка лежит в той же папке, что и 1С
А не втой, где его денвер
1. Нет доступа к параметрам порта (скорость и т. п.).
2. Невозможно обрабатывать прерывания. Например, нам нужно быстро среагировать, когда внешняя железка в порт что-то послала, а в остальное время не нагружать систему.
https://bugs.php.net/bug.php?id=59336
Сходу гуглится расширение в стадии «proof-of-concept»:
https://github.com/dj-thd/php-ioctl
http://forum.atol.ru/index.php?showtopic=36090&st=0&p=261533
Да и потом он же регистрируется в реестре. В реестре можно зарегистрировать оле-оле-оле-сервер без полного пути к DLL?
думаю да, если покласть его в system32
Смотри, он пишет, что у него такой код:
Читаем тугоментацию:
https://www.php.net/manual/ru/com.construct.php
module_name
ProgID, Class ID или Moniker, указывающий на компонент для загрузки. Обычно ProgID - это имя приложения или DLL и имя объекта, разделенные точкой. Например: Word.Application. Class ID - это UUID, уникальный для заданного класса. Moniker - специальная форма именования, похожая по концепции к URL, которая идентифицирует ресурс и способ его загрузки.
Путь к DLL тут не указывается, он берётся из реестра «Шіпдошз».
Модуль выбрасывает исключения класса com_exception в случае потенциальной фатальной ошибки возвращенной COM. Исключения COM имеют четко определенное свойство code, соответствующее возвращенному из различных операций COM значению HRESULT. На основании этого кода вы можете построить логику обработки данных ошибок.
Т. е. вызов кокококонструктора нужно обернуть в try...catch. Расшифровка кодов HRESULT описана в пэдээфке, ссылку на которую я дал:
Код ошибки Описание
0 Ошибок нет
-1 Нет связи
-2 Операция зарезервирована для будущих версий
-3 Порт недоступен
-4 Ключ защиты не найден
-5 Работа драйвера прервана пользователем
-6 Недопустимое значение
-7 Невозможно добавить устройство
-8 Невозможно удалить устройство
-9 Устройство не найдено
-10 Неправильная последовательность операций
-11 Устройство не включено
-12 Не поддерживается в данной версии оборудования
-13 Драйвер не смог загрузить необходимые модули
-14 Порт занят приложением: (\\<имя ПК>\<описание приложения-
клиента>\<описание драйвера>)
-15..-198 Зарезервировано
… …
-198 Зарезервировано
-199 Неопознанная ошибка
Если бы он умел читать документацию, он бы получил кокококод ошибки, и не гадал бы на кокококофейной гуще.
2147746132 =- 0x80040154
0x80040154
REGDB_E_CLASSNOTREG
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/705fb797-2175-4a90-b5a3-3918024b10b8?redirectedfrom=MSDN
https://atoldriver.ru/
А вот официальный (с главной страницы его тяжело найти):
http://fs.atol.ru/SitePages/Центр%20загрузки.aspx
Скриншот одной из директорий:
https://i.imgur.com/3lyC1rB.png
Можно скачать руководство программиста по каждому драйверу.
https://frontol.ru/resources/Download_Center/
*****
Попытаемся собрать испытательный стенд:
Выхлоп (в кодировке 1251):
*****
Запускаю тест: Выводит такую питушню (в 2к символов не влезает):
Такой код, как у него (80040154), получить пока не удалось.
или ошибка битности, или не та dll
или и то, и другое
Посмотрел ещё раз тему на «phpclub», он использует именно «AddIn.Line8» (чёрт, сначала написал «Ass» вместо «Add»), значит, у него драйвера восьмой версии. Наверняка они 32-битные. Кажется, 64-битные драйвера появились только в 9-й версии.
У него два взаимоисключающих пути:
1. Поменять «пыхпых» на 32-битную версию.
2. Поменять драйвера на 64-битную версию, поменять «1С» на 64-битную версию, переписать кучу скриптов на «PHP» и «1С» (потому что в 9-й версии всё поменяли).
Есть и третий путь:
https://rakafon.blogspot.com/2009/04/32-bit-dll-64-bit.html
Просто вот питон -- 32, там еще надо умудрица скачыать 64
https://windows.php.net/download
Хотя у него же WAMP, а я не знаю, какой в нём пых. Нужно смотреть.
1. Заменить все двойные кавычки на одинарные;
2. Скачать и установить «NTS» версию «PHP»;
http://wampserver.aviatechno.net/
Тю, скучно как-то. Ожидал задорного треша как вот тут: (мужик запилил загрузчик произвольных x64 DLL в x32 процесс)
Ждём php.sys, чтобы мммаксимум уязвимостей.
Ещё вот что интересно: первые версии фреймворка «Phalcon» были написаны на няшной сишке, потом автор его переписал на язык программирования «Зефир»:
https://docs.zephir-lang.com/0.12/en/welcome
Реальный пример кода на «Зефире»:
Я мечтаю о языке с бесплатным интеропом с сишкой, и при этом с современным синтаксисом.
Может, надо стать растоблядью или свифтблядью?
Да похуй на пирфоманс. С GC неудобно же, вручную закрывать файлы приходится, вручную каскадить это закрытие в сложных объектах и т.п. Нахуй так жить?
Как Java и скриптухи живут? Было бы проблемой, то языки сдохли бы.
Ну хоть что-то, хотя это только для scoped объектов работает. Банальная задачка про класс, который держит 2 файла, превращается в кучу бойлерплейта. Даже с ExitStack'ом.
> было бы проблемой, языки сдохли бы
Ну PHP ещё жив, поэтому проблем в нём, походу, нет.
А это хуёвый дизайн из прошлого, на самом деле. Сделали гибрид из flush и close, когда буферизации не было, а теперь все страдают. Та же хуйня и с другими подобными API, где close за каким-то хером делает полезные действия помимо собственно закрытия.
Позови flush() перед close() и не будет никакого исключения в close. В общем-то на джаве это тоже рекомендуют делать.
К слову, в джаве с этим самым close() умудрились обосраться и молча недописать файл если места на диске не хватает. Лучше бы прога пизданулась по terminate, чем такое.
Ну и потом дрочить weak-ref и питушиться с фрагментированной кучей.
Нахуй надо?
ГЦшня победила, пора уже признать.
>есть ARC у ябла, и смысла в ГЦ нет
И циклические зависимости он собирает?
За разрешением циклических зависимостей нужно следить самому при помощи weak/unowned.
В жемчужины философской мысли!
Я забыл, что «Phalcon» уже не единственный фреймворк с сегфолтами. Ещё есть «YAF», его даже в документацию по «PHP» добавили:
https://www.php.net/manual/ru/book.yaf.php
Maintainer: Xinchen Hui.
Однако штатной обработки для подключения дисплея покупателя с драйвером Штрих, ни в комплекте поставки ТиС 9.2, ни в комплекте поставки драйверов дисплея покупателя от Штрих попросту нет. В результате получается патовая ситуация. Драйвера от АТОЛ в бесплатном режиме не предоставляют необходимый функционал, драйвера Штрих бесплатны и, казалось бы, отлично работают, но их невозможно подключить к 1С.»
Отсюда: http://dml.compkaluga.ru/forum/index.php?showtopic=68584
Какой багор )))
http://kkm78.ru/wp-content/uploads/2011/09/Drayver-PD.pdf
OpenDrawer ()
ОткрытьЯщик ()
Открывает денежный ящик.
Название Тип Дост. Значения
Выходные свойства
DrawerOpened
ЯщикОткрыт
Log RW Состояние денежного
ящика:
FALSE / TRUE
Описание свойств
DrawerOpened
ЯщикОткрыт [ВЫХ]
Если DrawerOpened = TRUE, то денежный ящик открыт.
Если DrawerOpened = FALSE, то денежный ящик закрыт.
Ящик не откроется, если он заперт на ключ.
Поддерживаемое оборудование
Метод поддерживается только моделями с подключаемым денежным
ящиком.
Еба-а-а-ать! В аду для программистов их явно заставляют чинить и править именно такой код.
Ловите реальный пример кода:
Как всё сложно... Именно поэтому «Конардо» против «ООП».
> <img src="null" id="<span id="
> class=" data-bx-app-ex-href="
> куча бессмысленных span
Вореции какие-то. Напоминает как выхлоп бредогенератора, когда к нему на вход код попадал.
spellcheck="false">Код PHP</span></span>" src="null" id="<?=$arFirstPhoto['SMALL']['src']; ?>" <?=($viewImgType==" :="">" data-bx-app-ex-title="" data-large="" xpreview="" xoriginal="">"
> <img src="" data-bx-app-ex-href="<?=($viewImgType==" :="">"
> <img src="null" id="<span><span>" src="null" id="<span class="bxhtmled-surrogate-inner"> <img src="null" id="<span class="bxhtmled-right-side-item-icon"></span>"
itemprop="image">>
<img src="null" id="bxid467447014" title;?>" class="bxhtmled-surrogate-item-icon"></span><span class="bxhtmled-right-side-item-icon"></span><span
class="bxhtmled-right-side-item-icon" spellcheck="false">Код PHP</span></span>"
itemprop="image"><?=$title;?><span class="bxhtmled-surrogate">
<span class="bxhtmled-right-side-item-icon"></span>" title="Код PHP</span class=" data-large="" xpreview="" title="" data-bx-app-ex-hreads/Проблема-сайте.86817/
Погуглил «bxhtmled» — CSS-классы с таким префиксом генерирует «Битрикс». Это выхлоп «Битрикса», пропущенный через какой-то извращатель «HTML».
• Объект «AddIn.Line8» присутствует только в драйверах v.8.
• Объект «AddIn.Line45» присутствует с самых древних версий по v.8 (включительно).
• Начиная с v.9 (первый выпуск — 2013-й год) старые объекты не поддерживаются. Какой багор )))
Короче, если у питуза не говно мамонта, то придётся принять за щеку изучить новую документацию и переписать код сопряжения с нуля. В новых версиях драйвера библиотеки Line1C.dll больше нет. Выгрызка из документации по 10-й версии драйвера:
«Для подключения драйвера как COM-объект необходимо зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe. Библиотека может сама обнаружить установленный через инсталлятор драйвер. Также инсталлятор автоматически регистрирует компонент заданной архитектуры в процессе установки. В проекте необходимо создать объект типа ActiveX (или OLE) класса AddIn.Fptr10. В данной документации описаны примеры работы с драйвером в виде OLE-объекта на языке Delphi.»
"Малость говнокода тензорный питух читает.
Малость объект «AddIn.Line8» присутствует с самых древних версий по v.8 (включительно).
Малость объект «AddIn.Line45» присутствует с самых древних версий по v.8 (включительно).
Малость начиная с v.9 (первый выпуск — 2013-й год) старые объекты не поддерживаются.
Малость какой багор )))"
Затем:
"Много говнокода тензорный питух читает.
Много объект «AddIn.Line8» присутствует с самых древних версий по v.8 (включительно).
Много объект «AddIn.Line45» присутствует с самых древних версий по v.8 (включительно).
Много начиная с v.9 (первый выпуск — 2013-й год) старые объекты не поддерживаются.
Много какой багор )))"
( Поют несколько раз. Ассистенты зомбирующего повторяют посе каждого раза "Зачем? Зачем?" )
Там ещё есть интерфейс для «Андроида», для «iOS», и для «Йажи». Хотя я не представляю себе кассовый аппарат на «iOS» и сколько пердолинга понадобится для установки (его же без джейлбрейка не поставишь).
Дык эти фискальные регистраторы часто к обычным компам подключают. Я даже сам прикручивал к одной проге.
Видимо кто-то и из айпада терминал умудрился сделать :)
- та ладно, просто погугли "кассовый аппарат iOS", куча вариантов разной степени хардварности.
Я вроде даже видел портативный принтер чеков, который надевался на телефон.
https://www.php.net/manual/ru/class.ffi.php
https://www.php.net/manual/ru/ffi.examples-basic.php
В «Пекле» ещё лежит реализация 2004-го года, но она для совсем древних интерпретаторов:
http://pecl.php.net/package/ffi
Протолкнул в «PHP 7.4» это расширение Дмитрий Стогов:
https://wiki.php.net/rfc/ffi
Какой багор )))