Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
подключить-как-dll-через-loadlibrary [2020/04/15 22:00] iserbin |
подключить-как-dll-через-loadlibrary [2020/04/18 00:01] (текущий) iserbin [Общее описание] |
||
---|---|---|---|
Строка 23: | Строка 23: | ||
| 1| Не возможно установить соединение с весами. \\ Если СОМ-порт: Убедитесь в правильности имени СОМ порта, возможно, он занят другим приложением. \\ Если Ethernet: \\ 1. Проверьте правильность указания IP-адреса и TCP-порта. \\ 2. Ethernet-переходник весов должен работать в режиме: TCP-Server. \\ 3. Возможно, блокирует соединение Брандмауэр(Firewall).| | | 1| Не возможно установить соединение с весами. \\ Если СОМ-порт: Убедитесь в правильности имени СОМ порта, возможно, он занят другим приложением. \\ Если Ethernet: \\ 1. Проверьте правильность указания IP-адреса и TCP-порта. \\ 2. Ethernet-переходник весов должен работать в режиме: TCP-Server. \\ 3. Возможно, блокирует соединение Брандмауэр(Firewall).| | ||
| 2| Ошибка в работе драйвера СОМ-порта.| | | 2| Ошибка в работе драйвера СОМ-порта.| | ||
- | | 3| Нет ответа от весов. Возможно: \\ 1. Проверьте правильность выбора типа весов, СОМ-порта и скорость СОМ-порта. \\ 2. Некоторые весы не передают вес, если он меньше ли равен НУЛЮ. \\ 3. На некоторых весах нужно настроить специальные параметры, чтоб узнать как настроить нажмите кнопку "Что нужно настроить в весах"в программе настройки драйвера.| | + | | 3| Нет ответа от весов. Возможно: \\ 1. Проверьте правильность выбора типа весов, СОМ-порта и скорость СОМ-порта. \\ 2. Некоторые весы не передают вес, если он меньше ли равен НУЛЮ. \\ 3. На некоторых весах нужно настроить специальные параметры, чтоб узнать как настроить нажмите кнопку "Что нужно настроить в весах"в программе настройки драйвера. \\ 4. Соединительный кабель поврежден, отключен или распиновка неправильная (на СОМ-портовые кабеля нет стандартов, распиновку смотрите в программе настройки драйвера, клавиша "Что нужно настроить в весах") | |
| 4| Ошибка в цене, например число меньше нуля, или больше чем к-во разрядов на весах.| | | 4| Ошибка в цене, например число меньше нуля, или больше чем к-во разрядов на весах.| | ||
- | | 5| Текущий тип весов не поддерживает команды, например, не на все типы моделей можно передать цену, или нажать "ТАРА". | | + | | 5| Текущий тип весов не поддерживает команду, например, не на все модели весов можно передать цену, или нажать "ТАРА". | |
| 6| Связь с весами ОК, но отсутствует лицензия на драйвер. Без лицензии можно получить вес в диапазонах: [80..110 г.] [2..3 кг.] [19..22 кг.] [95..105 кг.]| | | 6| Связь с весами ОК, но отсутствует лицензия на драйвер. Без лицензии можно получить вес в диапазонах: [80..110 г.] [2..3 кг.] [19..22 кг.] [95..105 кг.]| | ||
| 7| На весах "Перегруз". (Некоторые модели весов передают такую информацию)| | | 7| На весах "Перегруз". (Некоторые модели весов передают такую информацию)| | ||
Строка 32: | Строка 32: | ||
Порядок вызовов функций: после загрузки UniproScalesComServer.dll в программу нужно вызвать функцию: **vr1**, после этого можно вызывать все другие функции (gw1, pp1, pt1) в любом порядке. | Порядок вызовов функций: после загрузки UniproScalesComServer.dll в программу нужно вызвать функцию: **vr1**, после этого можно вызывать все другие функции (gw1, pp1, pt1) в любом порядке. | ||
- | ===== Пример на c# ===== | + | ===== Пример на C# ===== |
<code csharp> | <code csharp> | ||
using System; | using System; | ||
Строка 46: | Строка 46: | ||
{ | { | ||
// Load parameters from INI-file | // Load parameters from INI-file | ||
- | [DllImport("UniproScalesComServer.dll", CallingConvention = CallingConvention.StdCall)] | + | [DllImport("UniproScalesComServerWin32.dll", CallingConvention = CallingConvention.StdCall)] |
public static extern int vr1(); | public static extern int vr1(); | ||
// get weight from scales | // get weight from scales | ||
- | [DllImport("UniproScalesComServer.dll", CallingConvention = CallingConvention.StdCall)] | + | [DllImport("UniproScalesComServerWin32.dll", CallingConvention = CallingConvention.StdCall)] |
public static extern int gw1(int p_scales, | public static extern int gw1(int p_scales, | ||
ref double p_weight, | ref double p_weight, | ||
Строка 57: | Строка 57: | ||
ref int p_stab ); | ref int p_stab ); | ||
// send price | // send price | ||
- | [DllImport("UniproScalesComServer.dll", CallingConvention = CallingConvention.StdCall)] | + | [DllImport("UniproScalesComServerWin32.dll", CallingConvention = CallingConvention.StdCall)] |
public static extern int pp1(int p_scales, int p_price); | public static extern int pp1(int p_scales, int p_price); | ||
// press "T" | // press "T" | ||
- | [DllImport("UniproScalesComServer.dll", CallingConvention = CallingConvention.StdCall)] | + | [DllImport("UniproScalesComServerWin32.dll", CallingConvention = CallingConvention.StdCall)] |
public static extern int pt1(int p_scales); | public static extern int pt1(int p_scales); | ||
Строка 132: | Строка 132: | ||
end; | end; | ||
- | function scalesdll_Init(): integer; stdcall; external 'UniproScalesComServer.dll' name 'vr1'; | + | function scalesdll_Init(): integer; stdcall; external 'UniproScalesComServerWin32.dll' name 'vr1'; |
function scalesdll_GetWeight( | function scalesdll_GetWeight( | ||
Строка 140: | Строка 140: | ||
var p_cost:Double; | var p_cost:Double; | ||
var p_stab:Int32 | var p_stab:Int32 | ||
- | ): integer; stdcall; external 'UniproScalesComServer.dll' name 'gw1'; | + | ): integer; stdcall; external 'UniproScalesComServerWin32.dll' name 'gw1'; |
function scalesdll_SendPrice( | function scalesdll_SendPrice( | ||
p_Num:Int32; | p_Num:Int32; | ||
p_Price:Int32 | p_Price:Int32 | ||
- | ): integer; stdcall; external 'UniproScalesComServer.dll' name 'pp1'; | + | ): integer; stdcall; external 'UniproScalesComServerWin32.dll' name 'pp1'; |
function scalesdll_PressTara( | function scalesdll_PressTara( | ||
p_Num:Int32 | p_Num:Int32 | ||
- | ): integer; stdcall; external 'UniproScalesComServer.dll' name 'pt1'; | + | ): integer; stdcall; external 'UniproScalesComServerWin32.dll' name 'pt1'; |
var | var | ||
Строка 203: | Строка 203: | ||
#include <stdio.h> | #include <stdio.h> | ||
- | typedef long (__stdcall *dllScalesInit)(); | + | typedef long(__stdcall *dllScalesInit)(); |
typedef long(__stdcall *dllScalesGetWeight)(int p_scales, | typedef long(__stdcall *dllScalesGetWeight)(int p_scales, | ||
- | double & p_weight, | + | double & p_weight, |
- | double & p_price, | + | double & p_price, |
- | double &p_cost, | + | double &p_cost, |
- | long &p_stab); | + | long &p_stab); |
typedef long(__stdcall *dllScalesSendPrice)(int p_scales, int p_price); | typedef long(__stdcall *dllScalesSendPrice)(int p_scales, int p_price); | ||
typedef long(__stdcall *dllScalesPressT)(int p_scales); | typedef long(__stdcall *dllScalesPressT)(int p_scales); | ||
Строка 214: | Строка 214: | ||
///////////////////////////// | ///////////////////////////// | ||
// Global variables | // Global variables | ||
- | HMODULE global_hLib; | + | HMODULE global_hLib; |
dllScalesInit global_ScalesInit; | dllScalesInit global_ScalesInit; | ||
dllScalesGetWeight global_ScalesGetWeight; | dllScalesGetWeight global_ScalesGetWeight; | ||
dllScalesSendPrice global_ScalesSendPrice; | dllScalesSendPrice global_ScalesSendPrice; | ||
dllScalesPressT global_ScalesPressT; | dllScalesPressT global_ScalesPressT; | ||
- | |||
- | |||
- | void(*pFunction)(int, int); | ||
int main() | int main() | ||
{ | { | ||
- | global_hLib = LoadLibrary("UniproScalesComServer.dll"); | + | global_hLib = LoadLibrary("UniproScalesComServerWin32.dll"); |
if (global_hLib == NULL) | if (global_hLib == NULL) | ||
{ | { | ||
- | printf("Ошибка загрузки DLL."); | + | printf("Error load DLL."); |
return 1; | return 1; | ||
} | } | ||
- | |||
global_ScalesInit = (dllScalesInit)GetProcAddress(global_hLib, "vr1"); | global_ScalesInit = (dllScalesInit)GetProcAddress(global_hLib, "vr1"); | ||
Строка 239: | Строка 235: | ||
global_ScalesPressT = (dllScalesPressT)GetProcAddress(global_hLib, "pt1"); | global_ScalesPressT = (dllScalesPressT)GetProcAddress(global_hLib, "pt1"); | ||
- | if (!global_ScalesInit || | + | if ( !global_ScalesInit || |
!global_ScalesGetWeight || | !global_ScalesGetWeight || | ||
!global_ScalesSendPrice || | !global_ScalesSendPrice || | ||
!global_ScalesPressT) | !global_ScalesPressT) | ||
{ | { | ||
- | printf("Ошибка загрузки функций DLL."); | + | printf("Error load functions from DLL."); |
return 2; | return 2; | ||
} | } | ||
Строка 250: | Строка 246: | ||
global_ScalesInit(); | global_ScalesInit(); | ||
- | int res1 = 0; | + | int res1 = 0; |
double lv_weight; | double lv_weight; | ||
double lv_price; | double lv_price; | ||
Строка 262: | Строка 258: | ||
if (!res1) | if (!res1) | ||
{ | { | ||
- | printf("Вес: %6.3f; Цена:%6.2f; Стоимость: %6.2f; Стабильно: %d.\r\n", | + | printf("Weight: %6.3f; Price:%6.2f; Cost: %6.2f; Stab: %d.\r\n", |
lv_weight, lv_price, lv_cost, lv_stab); | lv_weight, lv_price, lv_cost, lv_stab); | ||
} | } | ||
Строка 274: | Строка 270: | ||
FreeLibrary(global_hLib); | FreeLibrary(global_hLib); | ||
+ | printf("Press [ENTER]\r\n"); | ||
+ | getchar(); | ||
return 0; | return 0; | ||
} | } | ||
</code> | </code> | ||