Guest User

HOST SRC

a guest
Feb 15th, 2013
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.48 KB | None | 0 0
  1. const
  2.   SEG_A = $01; SEG_B = $02; SEG_C = $04; SEG_D = $08;
  3.   SEG_E = $10; SEG_F = $20; SEG_G = $40; SEG_DP = $80;
  4.   Digits : array [0..15, 0..1] of ansichar =
  5. ( // Знакогенератор
  6.  ('0', chr(SEG_A or SEG_B or SEG_C or SEG_D or SEG_E or SEG_F)),
  7.  // Skipped
  8.  ('f', chr(SEG_A or SEG_E or SEG_F or SEG_G))
  9. );
  10.  
  11. // Преобразование символа в картинку
  12. function decode(c : ansichar; dp : boolean): byte;
  13. var i : integer;
  14. begin
  15.   Result := 0;
  16.   for i := low(Digits) to high(Digits) do
  17.     if Digits[i][0] = c then
  18.      Result := ord(Digits[i][1]);
  19.   Result := Result or ord(dp) * $80;
  20. end;<
  21.  
  22. // Коллбек для поиска устройств
  23. function TForm1.hidEnumerate(HidDev: TJvHidDevice; const Idx: Integer): Boolean;
  24. const
  25.   VID = $16C0;
  26.   PID = $05DF;
  27. begin
  28.   if (HidDev.Attributes.VendorID = VID) and (HidDev.Attributes.ProductID = PID) then begin
  29.     Dev := HidDev;
  30.     Dev.CheckOut; // Без него не заработает!
  31.   end;
  32. end;
  33.  
  34. // Отправка новой картинки
  35. procedure TForm1.Send(s : string; points: array of boolean; led : boolean);
  36. var i : integer;
  37.     d : array [0..5] of byte;
  38. begin
  39.   if Dev = nil then
  40.     exit;
  41.   if length(s) <> 4 then
  42.     exit;
  43.   if length(points) <> 4 then
  44.     exit;
  45.   d[0] := 0; // Report ID
  46.   d[1] := ord(led);
  47.   for i := 1 to 4 do
  48.     d[i+1] := decode(ansichar(s[i]), points[i-1]);
  49.   Dev.SetFeature(d,6); // Шлём feature репорт из 6 байт
  50. end;
Advertisement
Add Comment
Please, Sign In to add comment