вторник, 2 сентября 2014 г.

API SDK и ПО для работы с контроллерами бегущей строки BX-хх (BX-5E3, BX-5M2 и пр.)

Последнее время китайцы наклепали множество бюджетных контроллеров бегущих строк с интерфейсами USB/RS-485/Ethernet, но почти все они клоны одной и той же линейки BX-хх. Часто под нее идет стандартное ПО вроде HD2012, HD2013, HD2014, HD2015, LedShow и прочими. Но мало кто знает, что дядюшка Ляо на вполне официальном сайте предоставляет бесплатное API для удаленной работы с ними из своих приложений. Предоставлены библиотеки и примеры контроля под VC/VB/Delphi и С#.

К сожалению, портирование под JAVA отдано на откуп разработчикам. Могу лишь рекомендовать использовать JNA для вызова соответствующих функций из DLL.



Подключение библиотеки:
  hDll := LoadLibrary('BX_IV.dll');
  if hDll < 32 then exit; //Из№ыDllОЮ·ЁјУФШФтМшіц
  AddScreen := GetProcAddress(hDll, 'AddScreen');
  SendScreenInfo := GetProcAddress(hDll, 'SendScreenInfo');
  AddScreenProgram := GetProcAddress(hDll, 'AddScreenProgram');
  AddScreenProgramBmpTextArea := GetProcAddress(hDll, 'AddScreenProgramBmpTextArea');
  AddScreenProgramAreaBmpTextFile := GetProcAddress(hDll, 'AddScreenProgramAreaBmpTextFile');

  AddScreenProgramTimeArea := GetProcAddress(hDll, 'AddScreenProgramTimeArea');
  AddScreenProgramTimeAreaFile := GetProcAddress(hDll, 'AddScreenProgramTimeAreaFile');
  AddScreenProgramLunarArea := GetProcAddress(hDll, 'AddScreenProgramLunarArea');
  AddScreenProgramLunarAreaFile := GetProcAddress(hDll, 'AddScreenProgramLunarAreaFile');
  AddScreenProgramClockArea := GetProcAddress(hDll, 'AddScreenProgramClockArea');
  AddScreenProgramClockAreaFile := GetProcAddress(hDll, 'AddScreenProgramClockAreaFile');
  AddScreenProgramChroArea := GetProcAddress(hDll, 'AddScreenProgramChroArea');
  AddScreenProgramChroAreaFile := GetProcAddress(hDll, 'AddScreenProgramChroAreaFile');

  AddScreenProgramTemperatureArea := GetProcAddress(hDll, 'AddScreenProgramTemperatureArea');
  AddScreenProgramHumidityArea := GetProcAddress(hDll, 'AddScreenProgramHumidityArea');
  AddScreenProgramNoiseArea := GetProcAddress(hDll, 'AddScreenProgramNoiseArea');

  DeleteScreen := GetProcAddress(hDll, 'DeleteScreen');
  DeleteScreenProgram := GetProcAddress(hDll, 'DeleteScreenProgram');
  DeleteScreenProgramArea := GetProcAddress(hDll, 'DeleteScreenProgramArea');
  DeleteScreenProgramAreaBmpTextFile := GetProcAddress(hDll, 'DeleteScreenProgramAreaBmpTextFile');
  SetScreenTimerPowerONOFF := GetProcAddress(hDll, 'SetScreenTimerPowerONOFF');
  SetScreenAdjustLight := GetProcAddress(hDll, 'SetScreenAdjustLight');
  SaveUSBScreenInfo := GetProcAddress(hDll, 'SaveUSBScreenInfo');
  GetScreenStatus := GetProcAddress(hDll, 'GetScreenStatus');
  comb_ControlType.Items.Clear;
  for I := 1 to Length(Screen_Control) do
    comb_ControlType.Items.Add(Screen_Control[I - 1]);
  comb_ControlType.ItemIndex := CONTROLLER_BX_5E3_INDEX;
  comb_SendModeChange(self);
  InitializeCriticalSection(CS);
Например вывод температуры:
var  nResult : Cardinal;
begin
  nResult := AddScreenProgramHumidityArea(spnedt_ScreenNo.Value, spnedt_curProgramOrd.Value
    , 0, 0, spnedt_Width.Value, spnedt_Height.Value,
    0,
    0,
    0,
    100,
    5,
    0,
    0,
    0,
    0,
    clRed,
    clRed,
    'Test:',
    'text',
    12,
    clRed,
    0);

Задание режима скринсейвера:
var  nResult : Cardinal;
begin
  nResult := SetScreenTimerPowerONOFF(spnedt_ScreenNo.Value, 7, 0, 8, 0
    , 255, 255, 255, 255
    , 255, 255, 255, 255);
  mmo1.Lines.Add('SetScreenTimerPowerONOFF' + '---' + GetErrorMessage(nResult));
  if m_bSendBusy = False then  begin
    m_bSendBusy := True;
    nResult := SendScreenInfo(spnedt_ScreenNo.Value, g_nSendMode, SEND_CMD_TIMERPOWERONOFF, 0);
    m_bSendBusy := False;
  end;
Ресурсы
  1. BX-IV Dynamic Library user manual (172.1 kB)
  2. C#_Demo.zip (1.37 МB)
  3. Delphi_Demo_Thread.zip (1.67 МB)
  4. VB Demo.zip (1.35 МB)
  5. VC Demo.zip (2.46 МВ)
p.s.: проблема китайских иероглифов при отображении на бегущей светодиодной доске введенных английских символов или кириллицы решается использованием версии v.3.56 ПО LedControl c оффсайта.

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.