|
Самописный драйвер Native Api | ☑ | ||
---|---|---|---|---|
0
MasterYoda
23.03.17
✎
15:40
|
Вопрос следующий:
Пишу для себя самописный драйвер Native Api для работы с китайским принтером этикеток. Использую для этого всем известный пример с диска ИТС для ВК на С++. В "Требования к разработке драйверов подключаемого оборудования (версия 2.1)" https://its.1c.ru/db/metod8dev#content:4829:hdoc есть метод ПолучитьОписание(GetDescription) который при вызове должен вернуть 7 параметров с различными типами. Как обработать вызов данного метода в С++ чтоб он вернул эти 7 параметров. Кстати они имеют имена, которые, я так понял, в коде не используются (может ошибаюсь). Хотелось бы понять что необходимо передать в указатель pvarRetValue при вызове данного метода. Может у кого есть шаблон драйвера или фрагмент кода с обязательными методами, поделитесь пожалуйста. Заранее благодарен за помощь |
|||
1
Кирпич
23.03.17
✎
16:03
|
(0) "что необходимо передать в указатель pvarRetValue" ну наверное True, если всё хорошо.
Ибо сказано: "Обеспечить возможность реализации функционала в полном объеме (должны быть реализованы и работать все методы) для подключаемого типа оборудования. Если оборудованием данная функция не поддерживается, должно возвращаться "False", а в описании ошибки, возвращаемом методом ПолучитьОшибку (GetLastError), содержится текст, что данная функция оборудованием не поддерживается. " |
|||
2
Garykom
гуру
23.03.17
✎
16:12
|
там что используется любимая еще со времен 77 передача параметров по ссылке для заполнения?
|
|||
3
Кирпич
23.03.17
✎
16:14
|
(0) "Как обработать вызов данного метода в С++ чтоб он вернул эти 7 параметров."
ну тупо писать в переданные параметры то, что 1с требует. |
|||
4
Кирпич
23.03.17
✎
16:15
|
(2) а при чем тут 77? это всегда использовалось везде и всегда будет использоваться.
|
|||
5
Кирпич
23.03.17
✎
16:18
|
(0) "Может у кого есть шаблон драйвера или фрагмент кода с обязательными методами, поделитесь пожалуйста." бери любой драйвер, вызывай у него эти самые обязательные функции и смотри, что он тебе возвращает.
|
|||
6
Garykom
гуру
23.03.17
✎
16:26
|
(4) А тупо вернуть составное значение/структуру никак да?
Зачем извраты с
Когда можно было
ну или как то так |
|||
7
Кирпич
23.03.17
✎
16:31
|
(6) в NativeAPI структур нету. да и вариант со структурами ни чем не лучше, чем вариант с переменными.
|
|||
8
Garykom
гуру
23.03.17
✎
16:39
|
(7) Пофиг что нету, сериализация в string сейчас где угодно есть, это намного проще чем эти перечисления переменных.
И намного легче обеспечить совместимость при обновлениях. |
|||
9
Garykom
гуру
23.03.17
✎
16:43
|
(0) <paParams> Тип: tVariant* Указатель на массив структур tVariant, содержащий значения параметров метода. Если метод не имеет параметров, то содержит NULL.
|
|||
10
Кирпич
23.03.17
✎
16:53
|
(8) "это намного проще чем эти перечисления переменных". афигенно проще. ты меня когда нибудь до инфаркта доведешь. я с тобой спорить не буду.
|
|||
11
lock19
23.03.17
✎
16:54
|
(8) "сериализация в string сейчас где угодно есть"
ascii string.. |
|||
12
Garykom
гуру
23.03.17
✎
16:54
|
(10) Ну для меня проще :)
Просто как подумаю что нужно передавать/заполнять неизвестное заранее число параметров... |
|||
13
Garykom
гуру
23.03.17
✎
16:56
|
||||
14
Кирпич
23.03.17
✎
16:57
|
(12)было
Наименование = ""; Описание = ""; ТипОборудования = ""; ОбъектВК.ПолучитьОписание(Наименование, Описание,ТипОборудования) стало Описание = "" ОбъектВК.ПолучитьОписание(Описание); Наименование = ""; Описание = ""; ТипОборудования = ""; РазобратьJSON(Описание,Наименование, Описание,ТипОборудования); |
|||
15
lock19
23.03.17
✎
16:57
|
(13) utf
|
|||
16
Garykom
гуру
23.03.17
✎
17:00
|
(14) нифига передача строки в готовую функцию же которая структуру вернет
|
|||
17
Кирпич
23.03.17
✎
17:00
|
+(14) плюс еще функция РазобратьJSON на две страницы. офигенное упрощение
|
|||
18
Кирпич
23.03.17
✎
17:01
|
(16) так структур нету. есть же строки, сам говорил.
|
|||
19
Garykom
гуру
23.03.17
✎
17:02
|
(17) ну с этой точки зрения да, согласен
|
|||
20
Garykom
гуру
23.03.17
✎
17:02
|
(18) разобратьjson сразу возвращает структуру и все подразумевал
|
|||
21
Serginio1
23.03.17
✎
17:06
|
(20) Надо использовать Ъ
|
|||
22
Кирпич
23.03.17
✎
17:06
|
(20) хрен редьки не слаще
|
|||
23
Кирпич
23.03.17
✎
17:06
|
(21) ты работу то нашел?
|
|||
24
lock19
23.03.17
✎
17:08
|
(20) Так ведь разобратьНаименованиеОписаниеТипОборудования тоже сразу вернёт структуру.
|
|||
25
Garykom
гуру
23.03.17
✎
17:08
|
(24) см (22) ))
|
|||
26
lock19
23.03.17
✎
17:08
|
(21) Лучше Ё
|
|||
27
lock19
23.03.17
✎
17:09
|
(25) нет накладных на де/сериализацию
|
|||
28
Garykom
гуру
23.03.17
✎
17:10
|
(27) угу и тут к нам пришел 54-ФЗ...
|
|||
29
Кирпич
23.03.17
✎
17:10
|
(25) 22 сантиметра?
|
|||
30
Garykom
гуру
23.03.17
✎
17:12
|
(28)+ с остоянным обновлением дров в виде native api, а так можно было бы только железо прошивку обновлять и легонько код в 1С и все, дрова прежние замечательно работали бы без обновлений
|
|||
31
Кирпич
23.03.17
✎
17:12
|
(27) не спорь с ним. он может сказать, что земля плоская и хрен ты его переспоришь.
|
|||
32
Garykom
гуру
23.03.17
✎
17:12
|
(30) *с постоянным
|
|||
33
Serginio1
23.03.17
✎
17:12
|
(23) Ищу.
(26) Я Ъ уже запантентовал |
|||
34
Garykom
гуру
23.03.17
✎
17:13
|
(31) Не просто сказать, а аргументированно доказать! :)
|
|||
35
Кирпич
23.03.17
✎
17:13
|
(33) ты патентное бюро открыл что ли?
|
|||
36
Кирпич
23.03.17
✎
17:15
|
(34) ага. земля плоская, потому что мне так кажется. знаем мы твои аргументы.
|
|||
37
Serginio1
23.03.17
✎
17:15
|
(35) Нет я в статьях опубликовал, а значит имею авторские права. Шутка. Пользуйтесь на здоровье. Можно и Ё
|
|||
38
lock19
23.03.17
✎
17:17
|
(31) Ну, я так тоже умею)
|
|||
39
MasterYoda
24.03.17
✎
06:04
|
(9) paParams это входящте параметры для метода. Я не понимаю как на С++ записать в pvarRetValue эти семь параметров. Именно синтаксис. Хотелось бы взглянуть на пример, но их нет. Похоже должна вернуться структура. А как ее реализовать в tVariant не соображу. Именно в виде кода. Принцип то понятен. Пишешь то что надо, а как?
|
|||
40
Кирпич
24.03.17
✎
08:29
|
(39) в эти же параметры и пиши, балда
|
|||
41
Кирпич
24.03.17
✎
08:30
|
В документации же написано out
|
|||
42
MasterYoda
25.03.17
✎
17:10
|
Еще вопрос. Скомпилировал компоненту которая на ИТС. при вызове ее с 1С она подключается и работает, но только с англоязычными методами. Пытаешься вызвать метод, например "Компонента.Включить()" вылетает ошибка не найден метод. А при отладке в VS в переданном значении (wsPropName) кракозябры как будто не совпадает кодировка. Соответственно из массива доступных методов на русском языке не возможно найти совпадения.
Кстати использую: MS Visual Studio Community 2015 1С:Предприятие 8.3 (8.3.9.1850) |
|||
43
Garykom
гуру
25.03.17
✎
18:13
|
(42) Открой для себя разные кодировки UTF8/CP1251 и как их перекодировать
|
|||
44
MasterYoda
26.03.17
✎
10:47
|
(43) Знаю я про кодировки. Но дело в том, что демо-компонента из ИТС, как заявляет 1с и прочие программеры, должна работать "из коробки". Т.е. вопрос разности кодировок и прочих типов решен в шаблоне и примере обработки изначально. Однако у меня не робит... Не могу врубиться куда копать. Теперь из 1с приходит нормальная строка вида:
wsPropName = 0x0000000005c2e5a8 L"Включен" а в константе бардак: g_PropNamesRu = 0x000007fedf994050 {0x000007fedf961f18 L"Включен", 0x000007fedf961f38 L"ЕстьТаймер"} Мозг взрывается, и настройки проекта менял и платформы (32-, 64 бита). Не выходит каменный цветок. Помогите разобраться плиз... |
|||
45
Serginio1
26.03.17
✎
11:00
|
А g_PropNamesRu какой тип имеет?
Используй wstring |
|||
46
lock19
26.03.17
✎
11:16
|
В MS Visual Studio Community 2015 так же разумным было бы выбирать XP-совместимый тулчейн.
|
|||
47
Кирпич
26.03.17
✎
11:31
|
(44) может у тебя исходник в какой нибудь левой кодировке?
|
|||
48
MasterYoda
26.03.17
✎
12:16
|
(45) static const wchar_t *g_PropNamesRu[] = {L"Включен", L"ЕстьТаймер"};
(47) Исходники как есть с диска (46) Попробовал v140_xp результат тот же. Кто-нибудь собирал эту библиотеку? |
|||
49
Кирпич
26.03.17
✎
12:20
|
(48) ну я собирал года 3 назад. у меня всё работало
|
|||
50
Кирпич
26.03.17
✎
12:46
|
скачал, попробовал. точно не работает. преобразовал текст в UTF-8 и заработало. раньше было в UTF-8 без BOM
|
|||
51
Кирпич
26.03.17
✎
12:54
|
+(50) для автора: преобразовал файл AddInNative.cpp
|
|||
52
MasterYoda
26.03.17
✎
15:01
|
(51) Помогло. Спасибо. Неочевидное для меня решение)))
|
|||
53
Garykom
гуру
26.03.17
✎
15:28
|
(52) Кста вместо того чтобы убить кучу времени на разбор/изучение как писать нативные ВК под 1С, можно же просто взять готовую нативную ВК от Serginio1 и заюзать силу "Ъ".
100% под китайский термопринтер есть примеры на C# |
|||
54
Кирпич
26.03.17
✎
15:36
|
(53) "убить кучу времени на разбор/изучение как писать нативные ВК под 1С" - повысится ЧСВ и в резюме напишет С++, "заюзать силу 'Ъ'" - ничего не повысится нигде, да и еще будут смотреть как на дебила, если кому рассказать.
|
|||
55
MasterYoda
26.03.17
✎
17:13
|
(54) Резюме у меня нет, я не программист-профессионал, у меня даже образование юридическое, но могу писать программы по собственным ТЗ. Пишу для себя, так сказать, для общего развития. Программировать начал в 7 лет на РК-86(если кто вообще сейчас знает что это) на чистом BASIC, с тех пор только самообучение, помощь подобных форумов, но чем дальше тем менее отзывчив народ становится, ерничают. Вообще я не писатель, я более читатель, вопросы задаю мало, когда мозг совсем взрывается.
|
|||
56
MasterYoda
26.03.17
✎
17:21
|
(53) Принтер у меня и так работает как Win-принтер, но хотелось бы использовать потенциал заложенный в него китайцами.
Если я отнимаю Ваше драгоценное время, извините. А вообще, огромное спасибо за Вашу помощь, реально помогли |
|||
57
Serginio1
27.03.17
✎
11:30
|
(54) Ну на меня как на дебила не смотрят, только удивляются.
(55) Почитай для интереса Использование классов .Net в 1С для новичков |
|||
58
MasterYoda
31.03.17
✎
14:36
|
(57) Спасибо за доп информацию. Я раньше писал с использованием .Net, ща хочется что-то посвободнее(универсальнее).
Кстати я уже написал полностью взаимодействие с 1с (подключается по стандарту 1С:Совместимо) за исключением возврата ошибок. Т.к. еще не работал над исключениями и толком функционал dll-ки не написал. Но "типа" фискальная память с сохранением в файле уже робит. Еще раз спасибо за помощь. Я с начала думал, что возвращаемые данные надо как-то структурировать и записать в paParams, оказалось все проще. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |