2015-09-24 11 views
11

Sto tentando di afferrare un handle del dispositivo sul Synaptics Touchpad utilizzando l'SDK di Synaptics, in particolare utilizzando i metodi in SYNCTRLLib. Tuttavia, il metodo SYNCTRL non è riuscito a trovarlo, restituendo -1.Synaptics SDK non trova il dispositivo

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

Dove hai trovato l'SDK? Qualche possibilità di metterlo online da qualche parte, come sembra che sia scomparso dalla faccia del pianeta. Non riesco a trovarlo da nessuna parte. – Casper

risposta

3

vedo che si sta utilizzando i wrapper C# per Synaptics SDK. Anche se il codice CPP potrebbe non essere banale per te, potresti dare un'occhiata al file Samples/ComTest.cpp. Esso contiene una logica esempio al fine di trovare i dispositivi, più precisamente a righe 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); 
    } 

Inoltre, assicurarsi di aver registrato i DLL. Secondo il ReadSynSDK.txt di file:

per determinati scopi, può essere necessario per registrare le DLL che sono forniti con l'SDK. Questo può essere fatto con l'utility regsvr32 di windows.

Problemi correlati