Инструменты пользователя

Инструменты сайта


подключить-как-dll-через-loadlibrary

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
подключить-как-dll-через-loadlibrary [2020/04/15 21:04]
iserbin
подключить-как-dll-через-loadlibrary [2020/04/16 14:16]
iserbin [Пример на C++]
Строка 25: Строка 25:
 | 3| Нет ответа от весов. Возможно:​ \\ 1. Проверьте правильность выбора типа весов, СОМ-порта и скорость СОМ-порта. \\ 2. Некоторые весы не передают вес, если он меньше ли равен НУЛЮ. \\ 3. На некоторых весах нужно настроить специальные параметры,​ чтоб узнать как настроить нажмите кнопку "​Что нужно настроить в весах"​в программе настройки драйвера.| | 3| Нет ответа от весов. Возможно:​ \\ 1. Проверьте правильность выбора типа весов, СОМ-порта и скорость СОМ-порта. \\ 2. Некоторые весы не передают вес, если он меньше ли равен НУЛЮ. \\ 3. На некоторых весах нужно настроить специальные параметры,​ чтоб узнать как настроить нажмите кнопку "​Что нужно настроить в весах"​в программе настройки драйвера.|
 | 4| Ошибка в цене, например число меньше нуля, или больше чем к-во разрядов на весах.| | 4| Ошибка в цене, например число меньше нуля, или больше чем к-во разрядов на весах.|
-| 5| Текущий тип весов не поддерживает команды, например,​ не на все ​типы ​моделей можно передать цену, или нажать "​ТАРА"​. |+| 5| Текущий тип весов не поддерживает команду, например,​ не на все модели весов ​можно передать цену, или нажать "​ТАРА"​. |
 | 6| Связь с весами ОК, но отсутствует лицензия на драйвер. Без лицензии можно получить вес в диапазонах:​ [80..110 г.]  [2..3 кг.] ​ [19..22 кг.] ​ [95..105 кг.]| | 6| Связь с весами ОК, но отсутствует лицензия на драйвер. Без лицензии можно получить вес в диапазонах:​ [80..110 г.]  [2..3 кг.] ​ [19..22 кг.] ​ [95..105 кг.]|
 | 7| На весах "​Перегруз"​. (Некоторые модели весов передают такую информацию)| | 7| На весах "​Перегруз"​. (Некоторые модели весов передают такую информацию)|
-| 8| Нет весов в settings.ini с указанным номером **p_scales**. Возникает если нет файла "​settings.ini"​ или в нем нет такого номера весов. |+| 8| Нет весов в settings.ini с указанным номером **p_scales**. Возникает если нет файла "​settings.ini"​ или в нем нет такого номера весов. Возможно,​ не была вызвана функция "​vr1"​. |
  
 Порядок вызовов функций:​ после загрузки UniproScalesComServer.dll в программу нужно вызвать функцию:​ **vr1**, после этого можно вызывать все другие функции (gw1, pp1, pt1) в любом порядке. Порядок вызовов функций:​ после загрузки UniproScalesComServer.dll в программу нужно вызвать функцию:​ **vr1**, после этого можно вызывать все другие функции (gw1, pp1, pt1) в любом порядке.
  
-===== Пример на c# =====+===== Пример на C# =====
 <code csharp> <code csharp>
 using System; using System;
Строка 104: Строка 104:
 </​code>​ </​code>​
  
-===== Пример на  =====+===== Пример на Delphi ​=====
 <code delphi> <code delphi>
 unit Unit1; unit Unit1;
Строка 197: Строка 197:
 end. end.
  
 +</​code>​
 +===== Пример на  C++ =====
 +<code cpp>
 +#include <​windows.h>​
 +#include <​stdio.h>​
 +
 +typedef long(__stdcall *dllScalesInit)();​
 +typedef long(__stdcall *dllScalesGetWeight)(int p_scales, ​
 + double & p_weight, ​
 + double & p_price, ​
 + double &​p_cost, ​
 + long &​p_stab);​
 +typedef long(__stdcall *dllScalesSendPrice)(int p_scales, int p_price);
 +typedef long(__stdcall *dllScalesPressT)(int p_scales);
 +
 +/////////////////////////////​
 +// Global variables
 +HMODULE global_hLib;​
 +dllScalesInit global_ScalesInit;​
 +dllScalesGetWeight global_ScalesGetWeight;​
 +dllScalesSendPrice global_ScalesSendPrice;​
 +dllScalesPressT global_ScalesPressT;​
 +
 +int main()
 +{
 + global_hLib = LoadLibrary("​UniproScalesComServer.dll"​);​
 +
 + if (global_hLib == NULL)
 + {
 + printf("​Error load DLL."​);​
 + return 1;
 + }
 +
 + global_ScalesInit = (dllScalesInit)GetProcAddress(global_hLib,​ "​vr1"​);​
 + global_ScalesGetWeight = (dllScalesGetWeight)GetProcAddress(global_hLib,​ "​gw1"​);​
 + global_ScalesSendPrice = (dllScalesSendPrice)GetProcAddress(global_hLib,​ "​pp1"​);​
 + global_ScalesPressT = (dllScalesPressT)GetProcAddress(global_hLib,​ "​pt1"​);​
 +
 + if ( !global_ScalesInit ||
 + !global_ScalesGetWeight ||
 + !global_ScalesSendPrice ||
 + !global_ScalesPressT)
 + {
 + printf("​Error load functions from DLL."​);​
 + return 2;
 + }
 +
 + global_ScalesInit();​
 +
 + int res1 = 0;
 + double lv_weight;​
 + double lv_price;​
 + double lv_cost;​
 + long lv_stab;​
 +
 + res1 = global_ScalesSendPrice(1,​ 12345);
 + if (res1) ​ printf("​Error:​ %d\r\n",​ res1);
 +
 + res1 = global_ScalesGetWeight(1,​ lv_weight, lv_price, lv_cost, lv_stab);
 + if (!res1)
 + {
 + printf("​Weight:​ %6.3f; Price:​%6.2f;​ Cost: %6.2f; Stab: %d.\r\n",​
 + lv_weight,​ lv_price, lv_cost, lv_stab);
 + }
 + else
 + {
 + printf("​Error:​ %d\r\n",​ res1);
 + }
 +
 + res1 = global_ScalesPressT(1);​
 + if (res1) ​ printf("​Error:​ %d\r\n",​ res1);
 +
 + FreeLibrary(global_hLib);​
 + printf("​Press [ENTER]\r\n"​);​
 + getchar();
 +    return 0;
 +}
 </​code>​ </​code>​
  
подключить-как-dll-через-loadlibrary.txt · Последние изменения: 2020/04/18 00:01 — iserbin