- 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/
https://jupyter-notebook.readthedocs.io/en/stable/comms.html
Что он там, транзистор припаять не может?
причем в том форуме все остальные тоже дебилы, и главному дебилу помочь не могут
Но он работает с ним через "AddIn.Line8".
Скорее всего 1С его видит, потому что .dllка лежит в той же папке, что и 1С
А не втой, где его денвер
1. Нет доступа к параметрам порта (скорость и т. п.).
2. Невозможно обрабатывать прерывания. Например, нам нужно быстро среагировать, когда внешняя железка в порт что-то послала, а в остальное время не нагружать систему.
Можешь тупо читать-писать, а можешь слать специфичные для драйвера ioctl.
Для ком порта в винде есть
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommstate
но вообще еще раз почеркну, что работать надо через КОМ ОБЪЕКТ жи
Скажут, он мол не ком объект
Вовсе, а ком порт
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
Почему она видит COM объект, а пых -- нет?
Я не знаю.
Я бы посоветовал сделать ему regsvr32, но может быть, что 1с 32х битная, а php 64 битный или наоборот?
Как ты понимаешь наверное, регистрируются они в разных местах в реестре. 32х битный в
HKey_Classes_Root\Wow6432Node\CLSID/APPID\
Можно предположить, что нет доступа к dll, но тогда ошибка была бы иной..
REGDB_E_CLASSNOTREG звучит как невозможность найти его в реесте
Можно взять procmon, и посмотреть куда кто лезет в реестре, и что там не находит.
Можно так же проверить доступ к объекту из других аутомейшен окружений (js/vbs @ wsh или powershell).
Наконец есть еще пермишены com
https://docs.microsoft.com/en-us/windows/win32/com/launchpermission
могут быть разные пользователи
Опотный виндузятник бы точно разобрался, но таких там нет
если я прав, то мы разгадали загадку
Жаль, у нас нет прав постить на форум пыхеров
https://atoldriver.ru/
А вот официальный (с главной страницы его тяжело найти):
http://fs.atol.ru/SitePages/Центр%20загрузки.aspx
Скриншот одной из директорий:
https://i.imgur.com/3lyC1rB.png
Можно скачать руководство программиста по каждому драйверу.
https://frontol.ru/resources/Download_Center/
https://stackoverflow.com/questions/2736424/how-to-make-com-activex-object-work-in-ie-64-bit
ему советуют
Verify that you get the keys in HKLM\Software\Classes\CLSID, not in HKLM\Software\Wow6432Node\Classes\CLSID.
*****
Попытаемся собрать испытательный стенд:
Выхлоп (в кодировке 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, чем такое.
Говно прекарсно живет, и решает проблемы через жопу.
Тут уже был тредик про проблемы ГЦ. ГЦ это километры бойлерплейта чтобы закрывать ресурсы, это случайная течка памяти, и огромные футпринты и внезапные тормоза от ГЦ.
Тоже смое делает скриптушня.
В 1991-м году изобрели питуна, потому что скриптовать на сишечке было бы сложно, тяжело и небезопасно.
Но в 2020 писать на каком-нить котлине или TypeScript можно так же легко, как и на скриптушне, но в сотню раз удобнее и безопаснее.
Скриптушня была нужна в 1991, а в 2020 не нужна.
Когда жабу пилили в 1996 (или когда там) не было еще повсеместного рефкаунта. Код изобиловал ручными new и delete, в которых питузы тупые путались, удаляли два раза одно и то же, или текли память.
Для питузов сделали ГЦ, и тогда это имело смысл.
А в 2020 уже есть смарт поинтеры, есть ARC у ябла, и смысла в ГЦ нет.
Пора бы уже это признать.
Нету смысла в оверлеях: их заменили виртуальной памятью.
Нету смысла в скриптушне: нужны языки со стат типизацией.
Нету смысла в ГЦ: нужны языки с нормальным управлением памятью и детерминированным временем жизни объекта
Ну и потом дрочить weak-ref и питушиться с фрагментированной кучей.
Нахуй надо?
ГЦшня победила, пора уже признать.
>есть ARC у ябла, и смысла в ГЦ нет
И циклические зависимости он собирает?
За разрешением циклических зависимостей нужно следить самому при помощи weak/unowned.
В жемчужины философской мысли!
Кажется что лучший ответ пока от десктопа -- свифт
Если нет, то можно и говно кушать.
Да кстати и шоколадка не панацея: ей тоже можно травануться
Я забыл, что «Phalcon» уже не единственный фреймворк с сегфолтами. Ещё есть «YAF», его даже в документацию по «PHP» добавили:
https://www.php.net/manual/ru/book.yaf.php
Maintainer: Xinchen Hui.
REGDB_E_CLASSNOTREG же, ты разве наизуст не знаешь??
а интерфейс "Dva" есть?
Однако штатной обработки для подключения дисплея покупателя с драйвером Штрих, ни в комплекте поставки ТиС 9.2, ни в комплекте поставки драйверов дисплея покупателя от Штрих попросту нет. В результате получается патовая ситуация. Драйвера от АТОЛ в бесплатном режиме не предоставляют необходимый функционал, драйвера Штрих бесплатны и, казалось бы, отлично работают, но их невозможно подключить к 1С.»
Отсюда: http://dml.compkaluga.ru/forum/index.php?showtopic=68584
Какой багор )))
Пиво Балтика 9: 80 рублей
Сухарики "кириешки с майонезом":30 рублей
Сигареты "Прима мягкая с фильтром":120 рублей
*: 942005 рублей 21 копейка
Сумма списана с вашей карты, и возврату не подлежит
http://kkm78.ru/wp-content/uploads/2011/09/Drayver-PD.pdf
OpenDrawer ()
ОткрытьЯщик ()
Открывает денежный ящик.
Название Тип Дост. Значения
Выходные свойства
DrawerOpened
ЯщикОткрыт
Log RW Состояние денежного
ящика:
FALSE / TRUE
Описание свойств
DrawerOpened
ЯщикОткрыт [ВЫХ]
Если DrawerOpened = TRUE, то денежный ящик открыт.
Если DrawerOpened = FALSE, то денежный ящик закрыт.
Ящик не откроется, если он заперт на ключ.
Поддерживаемое оборудование
Метод поддерживается только моделями с подключаемым денежным
ящиком.
soeka
Еба-а-а-ать! В аду для программистов их явно заставляют чинить и править именно такой код.
Ловите реальный пример кода:
Как всё сложно... Именно поэтому «Конардо» против «ООП».
> <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
есть такой код на индексной странице:
<a href="magazine.php?id='.$object2->getObjectId().'">
хочу передать данные на страницу magazine.php.
принять через $id = $_GET["id"]; не получается, т.к Php 7. 4.
Как можно передать и получить данные?
Заранее спасибо!
Какой багор )))
вот это шаблони3атор!
https://phpclub.ru/talk/threads/php-%D0%BE%D0%B1%D1%91%D1%80%D1%82%D0%BA%D0%B0-%D0%B4%D0%BB%D1%8F-ajax.86674/