Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
подключить-как-dll-через-loadlibrary [2020/04/15 21:07] 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; | ||
Строка 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> | ||