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

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


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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
подключить-как-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>​
  
подключить-как-dll-через-loadlibrary.1586977256.txt.gz · Последние изменения: 2020/04/15 22:00 — iserbin