2015-09-24 7 views
11

Я пытаюсь захватить дескриптор устройства на сенсорной панели Synaptics с помощью SDK Synaptics, в частности, используя методы в SYNCTRLLib. Однако метод SYNCTRL не смог найти его, возвращая -1.Synaptics SDK не может найти устройство

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

Где вы нашли SDK? Любой шанс, что вы могли бы разместить его в Интернете, как кажется, исчез с лица планеты. Не могу найти его нигде. – Casper

ответ

3

Я вижу, что вы используете C# оберток для Synaptics SDK. Несмотря на то, что код CPP может быть не тривиальным для вас, вы можете взглянуть на файл Образцы/ComTest.cpp. Она содержит некоторый пример логики для того, чтобы найти устройства, более конкретно на линиях 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); 
    } 

Кроме того, убедитесь, что вы зарегистрировали DLLs. Согласно ReadSynSDK.txt файл:

Для некоторых целей может быть необходимо зарегистрировать DLLs , которые предоставляются с SDK. Это можно сделать с помощью утилиты windows regsvr32 .

 Смежные вопросы

  • Нет связанных вопросов^_^