2015-09-24 24 views
11

Próbuję chwycić uchwyt urządzenia na panelu dotykowym Synaptics za pomocą pakietu SDK Synaptics, w szczególności przy użyciu metod w SYNCTRLLib. Jednak metoda SYNCTRL nie może go znaleźć, zwracając -1.Synaptics SDK nie może znaleźć urządzenia

Syn.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using SYNCOMLib; 
using SYNCTRLLib; 

namespace TP_Test1 
{ 
    class Syn 
    { 
     SynAPICtrl SynTP_API = new SynAPICtrl(); 
     SynDeviceCtrl SynTP_Dev = new SynDeviceCtrl(); 
     SynPacketCtrl SynTP_Pack = new SynPacketCtrl(); 
     int DeviceHandle; 

     //Constructor 
     public Syn() 
     { 
      SynTP_API.Initialize(); 
      SynTP_API.Activate(); 

      //DeviceHandle == -1 ? Can't find device? 
      DeviceHandle = SynTP_API.FindDevice(new SynConnectionType(), new SynDeviceType(), 0); 
      //Below line causing Unhandled Exception 
      SynTP_Dev.Select(DeviceHandle); 
      SynTP_Dev.Activate(); 
      SynTP_Dev.OnPacket += SynTP_Dev_OnPacket; 
     } 

     public void SynTP_Dev_OnPacket() 
     { 
       Console.WriteLine(SynTP_Pack.FingerState); 
       Console.WriteLine(SynTP_Pack.X); 
       Console.WriteLine(SynTP_Pack.Y); 
     } 
    } 
} 

Program.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using SYNCOMLib; 
using SYNCTRLLib; 

namespace TP_Test1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Syn mySyn = new Syn(); 
      mySyn.SynTP_Dev_OnPacket(); 
     } 
    } 
} 
+0

Gdzie znalazłeś zestaw SDK? Jest jakakolwiek szansa, że ​​uda ci się gdzieś go umieścić w Internecie, ponieważ wygląda na to, że zniknął z powierzchni planety. Nie mogę go znaleźć nigdzie. – Casper

Odpowiedz

3

widzę, że używasz C# otoki dla Synaptics SDK. Mimo że kod CPP może nie być dla ciebie trywialny, możesz rzucić okiem na plik Samples/ComTest.cpp. Zawiera on kilka przykładów logiki w celu znalezienia urządzeń, a dokładniej w liniach 66-76:

// Find a device, preferentially a TouchPad or Styk. 
    ISynDevice *pDevice = 0; 
    long lHandle = -1; 
    if ((pAPI->FindDevice(SE_ConnectionAny, SE_DeviceTouchPad, &lHandle) && 
     pAPI->FindDevice(SE_ConnectionAny, SE_DeviceStyk, &lHandle) && 
     pAPI->FindDevice(SE_ConnectionAny, SE_DeviceAny, &lHandle)) || 
     pAPI->CreateDevice(lHandle, &pDevice)) 
    { 
    printf("Unable to find a Synaptics Device.\n"); 
    exit(-1); 
    } 

Ponadto, upewnij się, że zarejestrował DLL. Według ReadSynSDK.txt plik:

dla pewnych celów może być konieczne, aby zarejestrować DLL , które są dostarczane wraz z SDK. Można to zrobić za pomocą narzędzia windows regsvr32 .

Powiązane problemy