2015-09-24 29 views
11

Tôi đang cố gắng lấy một thiết bị xử lý trên Bàn di chuột Synaptics bằng SDK Synaptics, cụ thể là sử dụng các phương thức trong SYNCTRLLib. Tuy nhiên, phương pháp SYNCTRL không tìm thấy, trả về -1.SDK Synaptics không thể tìm thấy thiết bị

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

Bạn tìm thấy SDK ở đâu? Bất kỳ cơ hội nào bạn có thể đưa nó lên trực tuyến ở đâu đó, vì dường như nó đã biến mất khỏi mặt của hành tinh. Không thể tìm thấy nó ở bất cứ đâu. – Casper

Trả lời

3

Tôi thấy rằng bạn đang sử dụng giấy gói C# cho Synaptics SDK. Mặc dù mã CPP có thể không nhỏ đối với bạn, bạn có thể muốn xem tệp Mẫu/ComTest.cpp. Nó chứa một số ví dụ logic trong để tìm ra các thiết bị, cụ thể hơn ở dòng 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); 
    } 

Ngoài ra, hãy chắc chắn rằng bạn đã đăng ký dlls. Theo ReadSynSDK.txt file:

Đối với mục đích nhất định nó có thể là cần thiết để đăng ký dlls được cung cấp cùng với SDK. Điều này có thể được thực hiện bằng các tiện ích của windows regsvr32 .

Các vấn đề liên quan