- 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/
MAKAKA 21.05.2020 04:12 # 0
--А как правильно: Иран или Ирак?
--Вроде, и так, и так говорят
TEH3OPHblu_nemyx 02.06.2020 21:57 # 0
j123123 21.05.2020 11:20 # 0
bormand 21.05.2020 11:29 # +2
TEH3OPHblu_nemyx 03.06.2020 23:06 # 0
https://www.format.com/
http://edit.com/
https://www.diskcopy.com/
guest8 21.05.2020 14:04 # −999
Fike 21.05.2020 23:18 # 0
Что он там, транзистор припаять не может?
KOPOHABuPYC 21.05.2020 23:32 # 0
MAKAKA 02.06.2020 20:57 # 0
причем в том форуме все остальные тоже дебилы, и главному дебилу помочь не могут
TEH3OPHblu_nemyx 02.06.2020 21:05 # 0
MAKAKA 02.06.2020 21:12 # 0
TEH3OPHblu_nemyx 02.06.2020 21:12 # 0
MAKAKA 02.06.2020 21:14 # +1
Но он работает с ним через "AddIn.Line8".
Скорее всего 1С его видит, потому что .dllка лежит в той же папке, что и 1С
А не втой, где его денвер
TEH3OPHblu_nemyx 02.06.2020 21:19 # 0
1. Нет доступа к параметрам порта (скорость и т. п.).
2. Невозможно обрабатывать прерывания. Например, нам нужно быстро среагировать, когда внешняя железка в порт что-то послала, а в остальное время не нагружать систему.
guest8 02.06.2020 21:22 # −999
TEH3OPHblu_nemyx 02.06.2020 21:24 # 0
guest8 02.06.2020 21:26 # −999
TEH3OPHblu_nemyx 02.06.2020 21:34 # 0
TEH3OPHblu_nemyx 02.06.2020 21:39 # 0
https://bugs.php.net/bug.php?id=59336
Сходу гуглится расширение в стадии «proof-of-concept»:
https://github.com/dj-thd/php-ioctl
KOPOHABuPYC 03.06.2020 21:14 # 0
TEH3OPHblu_nemyx 02.06.2020 21:20 # 0
http://forum.atol.ru/index.php?showtopic=36090&st=0&p=261533
TEH3OPHblu_nemyx 02.06.2020 21:31 # 0
Да и потом он же регистрируется в реестре. В реестре можно зарегистрировать оле-оле-оле-сервер без полного пути к DLL?
MAKAKA 03.06.2020 01:29 # 0
думаю да, если покласть его в system32
TEH3OPHblu_nemyx 02.06.2020 22:19 # 0
Смотри, он пишет, что у него такой код:
Читаем тугоментацию:
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 тут не указывается, он берётся из реестра «Шіпдошз».
TEH3OPHblu_nemyx 02.06.2020 22:24 # 0
Модуль выбрасывает исключения класса 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 Неопознанная ошибка
Если бы он умел читать документацию, он бы получил кокококод ошибки, и не гадал бы на кокококофейной гуще.
guest8 02.06.2020 22:48 # −999
TEH3OPHblu_nemyx 02.06.2020 22:59 # 0
guest8 02.06.2020 23:01 # −999
MAKAKA 03.06.2020 01:33 # +1
2147746132 =- 0x80040154
0x80040154
REGDB_E_CLASSNOTREG
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/705fb797-2175-4a90-b5a3-3918024b10b8?redirectedfrom=MSDN
TEH3OPHblu_nemyx 03.06.2020 01:42 # 0
guest8 03.06.2020 01:54 # −999
TEH3OPHblu_nemyx 03.06.2020 02:14 # 0
guest8 03.06.2020 02:19 # −999
TEH3OPHblu_nemyx 03.06.2020 04:05 # 0
https://atoldriver.ru/
А вот официальный (с главной страницы его тяжело найти):
http://fs.atol.ru/SitePages/Центр%20загрузки.aspx
TEH3OPHblu_nemyx 03.06.2020 04:15 # 0
Скриншот одной из директорий:
https://i.imgur.com/3lyC1rB.png
Можно скачать руководство программиста по каждому драйверу.
TEH3OPHblu_nemyx 03.06.2020 05:41 # 0
https://frontol.ru/resources/Download_Center/
guest8 03.06.2020 02:51 # −999
TEH3OPHblu_nemyx 03.06.2020 03:40 # 0
*****
Попытаемся собрать испытательный стенд:
Выхлоп (в кодировке 1251):
TEH3OPHblu_nemyx 03.06.2020 03:43 # 0
*****
TEH3OPHblu_nemyx 03.06.2020 03:57 # 0
TEH3OPHblu_nemyx 03.06.2020 04:23 # 0
Запускаю тест: Выводит такую питушню (в 2к символов не влезает):
TEH3OPHblu_nemyx 03.06.2020 04:31 # 0
Такой код, как у него (80040154), получить пока не удалось.
guest8 03.06.2020 08:38 # −999
MAKAKA 03.06.2020 21:16 # +1
или ошибка битности, или не та dll
или и то, и другое
TEH3OPHblu_nemyx 03.06.2020 21:41 # 0
Посмотрел ещё раз тему на «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
MAKAKA 03.06.2020 21:46 # 0
Просто вот питон -- 32, там еще надо умудрица скачыать 64
TEH3OPHblu_nemyx 03.06.2020 21:58 # 0
https://windows.php.net/download
Хотя у него же WAMP, а я не знаю, какой в нём пых. Нужно смотреть.
guest8 03.06.2020 22:09 # −999
TEH3OPHblu_nemyx 03.06.2020 22:11 # 0
gost 03.06.2020 22:16 # +1
1. Заменить все двойные кавычки на одинарные;
2. Скачать и установить «NTS» версию «PHP»;
TEH3OPHblu_nemyx 03.06.2020 22:10 # 0
http://wampserver.aviatechno.net/
gost 03.06.2020 21:55 # +1
Тю, скучно как-то. Ожидал задорного треша как вот тут: (мужик запилил загрузчик произвольных x64 DLL в x32 процесс)
TEH3OPHblu_nemyx 03.06.2020 22:43 # 0
guest8 03.06.2020 23:10 # −999
TEH3OPHblu_nemyx 03.06.2020 23:13 # 0
bormand 03.06.2020 23:17 # +1
Ждём php.sys, чтобы мммаксимум уязвимостей.
TEH3OPHblu_nemyx 03.06.2020 23:24 # 0
Ещё вот что интересно: первые версии фреймворка «Phalcon» были написаны на няшной сишке, потом автор его переписал на язык программирования «Зефир»:
https://docs.zephir-lang.com/0.12/en/welcome
Реальный пример кода на «Зефире»:
guest8 04.06.2020 01:09 # −999
guest8 04.06.2020 01:33 # −999
TEH3OPHblu_nemyx 04.06.2020 02:21 # 0
MAKAKA 04.06.2020 02:23 # 0
Я мечтаю о языке с бесплатным интеропом с сишкой, и при этом с современным синтаксисом.
Может, надо стать растоблядью или свифтблядью?
jojaxon 04.06.2020 03:56 # 0
guest8 04.06.2020 09:55 # −999
jojaxon 04.06.2020 10:02 # 0
bormand 04.06.2020 10:06 # 0
Да похуй на пирфоманс. С GC неудобно же, вручную закрывать файлы приходится, вручную каскадить это закрытие в сложных объектах и т.п. Нахуй так жить?
jojaxon 04.06.2020 10:14 # 0
Как Java и скриптухи живут? Было бы проблемой, то языки сдохли бы.
bormand 04.06.2020 10:18 # 0
Ну хоть что-то, хотя это только для scoped объектов работает. Банальная задачка про класс, который держит 2 файла, превращается в кучу бойлерплейта. Даже с ExitStack'ом.
> было бы проблемой, языки сдохли бы
Ну PHP ещё жив, поэтому проблем в нём, походу, нет.
jojaxon 04.06.2020 10:21 # 0
bormand 04.06.2020 10:26 # +1
А это хуёвый дизайн из прошлого, на самом деле. Сделали гибрид из flush и close, когда буферизации не было, а теперь все страдают. Та же хуйня и с другими подобными API, где close за каким-то хером делает полезные действия помимо собственно закрытия.
Позови flush() перед close() и не будет никакого исключения в close. В общем-то на джаве это тоже рекомендуют делать.
К слову, в джаве с этим самым close() умудрились обосраться и молча недописать файл если места на диске не хватает. Лучше бы прога пизданулась по terminate, чем такое.
guest8 04.06.2020 10:25 # −999
guest8 04.06.2020 10:46 # −999
3.14159265 04.06.2020 13:34 # +1
Ну и потом дрочить weak-ref и питушиться с фрагментированной кучей.
Нахуй надо?
ГЦшня победила, пора уже признать.
>есть ARC у ябла, и смысла в ГЦ нет
И циклические зависимости он собирает?
Desktop 04.06.2020 14:04 # 0
За разрешением циклических зависимостей нужно следить самому при помощи weak/unowned.
3.14159265 04.06.2020 13:32 # 0
В жемчужины философской мысли!
guest8 04.06.2020 10:10 # −999
guest8 04.06.2020 10:56 # −999
TEH3OPHblu_nemyx 04.06.2020 16:38 # 0
Я забыл, что «Phalcon» уже не единственный фреймворк с сегфолтами. Ещё есть «YAF», его даже в документацию по «PHP» добавили:
https://www.php.net/manual/ru/book.yaf.php
Maintainer: Xinchen Hui.
TEH3OPHblu_nemyx 04.06.2020 18:16 # 0
KOPOHABuPYC 04.06.2020 20:33 # 0
TEH3OPHblu_nemyx 03.06.2020 04:55 # +1
TEH3OPHblu_nemyx 03.06.2020 04:59 # 0
TEH3OPHblu_nemyx 02.06.2020 21:47 # 0
Однако штатной обработки для подключения дисплея покупателя с драйвером Штрих, ни в комплекте поставки ТиС 9.2, ни в комплекте поставки драйверов дисплея покупателя от Штрих попросту нет. В результате получается патовая ситуация. Драйвера от АТОЛ в бесплатном режиме не предоставляют необходимый функционал, драйвера Штрих бесплатны и, казалось бы, отлично работают, но их невозможно подключить к 1С.»
Отсюда: http://dml.compkaluga.ru/forum/index.php?showtopic=68584
Какой багор )))
TEH3OPHblu_nemyx 02.06.2020 21:50 # 0
http://kkm78.ru/wp-content/uploads/2011/09/Drayver-PD.pdf
TEH3OPHblu_nemyx 02.06.2020 21:54 # 0
OpenDrawer ()
ОткрытьЯщик ()
Открывает денежный ящик.
Название Тип Дост. Значения
Выходные свойства
DrawerOpened
ЯщикОткрыт
Log RW Состояние денежного
ящика:
FALSE / TRUE
Описание свойств
DrawerOpened
ЯщикОткрыт [ВЫХ]
Если DrawerOpened = TRUE, то денежный ящик открыт.
Если DrawerOpened = FALSE, то денежный ящик закрыт.
Ящик не откроется, если он заперт на ключ.
Поддерживаемое оборудование
Метод поддерживается только моделями с подключаемым денежным
ящиком.
bormand 02.06.2020 23:05 # +1
TEH3OPHblu_nemyx 02.06.2020 23:10 # 0
TEH3OPHblu_nemyx 02.06.2020 23:31 # 0
guest8 02.06.2020 23:37 # −999
TEH3OPHblu_nemyx 02.06.2020 23:52 # 0
Noodles 03.06.2020 02:02 # 0
guest8 03.06.2020 02:08 # −999
gost 03.06.2020 00:14 # +2
Еба-а-а-ать! В аду для программистов их явно заставляют чинить и править именно такой код.
guest8 03.06.2020 00:17 # −999
gost 03.06.2020 00:19 # 0
guest8 03.06.2020 00:24 # −999
guest8 03.06.2020 00:33 # −999
TEH3OPHblu_nemyx 03.06.2020 01:25 # +1
Ловите реальный пример кода:
TEH3OPHblu_nemyx 03.06.2020 01:29 # +1
Как всё сложно... Именно поэтому «Конардо» против «ООП».
Noodles 03.06.2020 00:36 # 0
Noodles 03.06.2020 00:37 # +1
Noodles 03.06.2020 00:38 # 0
guest8 03.06.2020 00:43 # −999
guest8 03.06.2020 00:52 # −999
Noodles 03.06.2020 01:00 # +1
> <img src="null" id="<span id="
> class=" data-bx-app-ex-href="
> куча бессмысленных span
Вореции какие-то. Напоминает как выхлоп бредогенератора, когда к нему на вход код попадал.
Noodles 03.06.2020 01:04 # 0
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/
TEH3OPHblu_nemyx 03.06.2020 01:11 # 0
Noodles 03.06.2020 01:18 # 0
MAKAKA 03.06.2020 01:25 # 0
TEH3OPHblu_nemyx 03.06.2020 01:33 # 0
Погуглил «bxhtmled» — CSS-классы с таким префиксом генерирует «Битрикс». Это выхлоп «Битрикса», пропущенный через какой-то извращатель «HTML».
TEH3OPHblu_nemyx 03.06.2020 01:37 # +1
guest8 03.06.2020 01:41 # −999
TEH3OPHblu_nemyx 03.06.2020 01:46 # 0
TEH3OPHblu_nemyx 03.06.2020 06:06 # 0
• Объект «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.»
bormand 03.06.2020 07:46 # +1
j123123 03.06.2020 08:24 # +3
"Малость говнокода тензорный питух читает.
Малость объект «AddIn.Line8» присутствует с самых древних версий по v.8 (включительно).
Малость объект «AddIn.Line45» присутствует с самых древних версий по v.8 (включительно).
Малость начиная с v.9 (первый выпуск — 2013-й год) старые объекты не поддерживаются.
Малость какой багор )))"
Затем:
"Много говнокода тензорный питух читает.
Много объект «AddIn.Line8» присутствует с самых древних версий по v.8 (включительно).
Много объект «AddIn.Line45» присутствует с самых древних версий по v.8 (включительно).
Много начиная с v.9 (первый выпуск — 2013-й год) старые объекты не поддерживаются.
Много какой багор )))"
( Поют несколько раз. Ассистенты зомбирующего повторяют посе каждого раза "Зачем? Зачем?" )
guest8 03.06.2020 08:33 # −999
bormand 03.06.2020 13:17 # 0
jojaxon 03.06.2020 13:25 # 0
guest8 03.06.2020 20:13 # −999
TEH3OPHblu_nemyx 03.06.2020 14:48 # 0
guest8 03.06.2020 20:14 # −999
TEH3OPHblu_nemyx 03.06.2020 20:25 # 0
guest8 03.06.2020 20:27 # −999
bormand 03.06.2020 20:34 # 0
guest8 03.06.2020 21:04 # −999
TEH3OPHblu_nemyx 03.06.2020 20:43 # 0
TEH3OPHblu_nemyx 03.06.2020 14:58 # 0
bormand 03.06.2020 15:13 # 0
TEH3OPHblu_nemyx 03.06.2020 15:21 # 0
Там ещё есть интерфейс для «Андроида», для «iOS», и для «Йажи». Хотя я не представляю себе кассовый аппарат на «iOS» и сколько пердолинга понадобится для установки (его же без джейлбрейка не поставишь).
bormand 03.06.2020 15:26 # +1
Дык эти фискальные регистраторы часто к обычным компам подключают. Я даже сам прикручивал к одной проге.
Видимо кто-то и из айпада терминал умудрился сделать :)
Desktop 03.06.2020 15:30 # +1
- та ладно, просто погугли "кассовый аппарат iOS", куча вариантов разной степени хардварности.
Я вроде даже видел портативный принтер чеков, который надевался на телефон.
guest8 03.06.2020 17:17 # −999
TEH3OPHblu_nemyx 03.06.2020 18:14 # 0
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
guest8 03.06.2020 11:44 # −999
3.14159265 04.06.2020 01:38 # 0
guest8 04.06.2020 09:57 # −999
TEH3OPHblu_nemyx 04.06.2020 12:28 # 0
Какой багор )))
guest8 04.06.2020 09:59 # −999
jojaxon 04.06.2020 12:50 # 0