2

Synaptics SDK を使用して、タッチパッドを使用して署名を取得したいと考えています。指を離して別の場所に置いた人を追跡できるように、タッチの絶対 X 位置と Y 位置をキャプチャしようとしています。タッチパッドを無効にしてタッチパッドの寸法にアクセスできるため、タッチパッドにアクセスできることはわかっています。

次のステップは、絶対 X 座標と Y 座標を取得することです。Synaptics PS/2 TouchPad インターフェイス ガイド(22 ページ) によると、この情報を取得できる「絶対モード」があります。今のところ、アクセスできないようです。そのモードに設定する方法がわかりません。

C# を使用して Visual Studio Express 2012 で開発しています。

また、イベントをまったくアクティブにできないようです。私はこのようなイベントを登録しようとしています:

using SYNCOMLib;
using SYNCTRLLib;

SYNCTRLLib.SynAPICtrl SynAPICtrl1 = new SynAPICtrl();
SYNCTRLLib.SynDeviceCtrl SynDeviceCtrl1 = new SynDeviceCtrl();
SYNCTRLLib.SynDisplayCtrl SynDisplayCtrl1 = new SynDisplayCtrl();

SynAPICtrl1.OnNotify += SynAPICtrl1_OnNotify;
SynDeviceCtrl1.OnPacket += SynDeviceCtrl1_OnPacket;
SynDisplayCtrl1.OnMessage += SynDisplayCtrl1_OnMessage;

関数名をコンソールに記録するだけの関数があります。

private void SynDisplayCtrl1_OnMessage(SynDisplayMessage eMessage)
{
    Console.WriteLine("SynDisplayCtrl1_OnMessage");
}

private void SynAPICtrl1_OnNotify(SynNotificationReason eReason)
{
    Console.WriteLine("SynAPICtrl1_OnNotify");
}

private void SynDeviceCtrl1_OnPacket()
{
    Console.WriteLine("SynDeviceCtrl1_OnPacket");
}

これらの関数はどれも呼び出されません (または、少なくともコンソールにログが記録されることはありません)。私は Visual Studio と C# にかなり慣れていないので、解決策は非常に簡単な修正である可能性があります。

前もって感謝します!

編集:必要に応じて、 Synaptics SDK へのリンクを次に示します。

4

2 に答える 2

1

このサイトの情報に従って、次の C# に変換しました。

私のコードの上部に:

using SYNCOMLib;
using SYNCTRLLib;

私の機能の外にあるので、それらはグローバルです

SynAPICtrl SynTP_API = new SynAPICtrl();
SynDeviceCtrl SynTP_Dev = new SynDeviceCtrl();
SynPacketCtrl SynTP_Pack = new SynPacketCtrl();
int DeviceHandle;

私のコンストラクターの中で

SynTP_API.Initialize();
SynTP_API.Activate();
DeviceHandle = SynTP_API.FindDevice(new SynConnectionType(), new SynDeviceType(), 0);
SynTP_Dev.Select(DeviceHandle);
SynTP_Dev.Activate();  
SynTP_Dev.OnPacket += SynTP_Dev_OnPacket;

最後に、イベントを処理する関数

private void SynTP_Dev_OnPacket()
{
    if (SynTP_Dev.LoadPacket(SynTP_Pack) == 1)
    {
        Console.WriteLine(SynTP_Pack.FingerState);
        Console.WriteLine(SynTP_Pack.X);
        Console.WriteLine(SynTP_Pack.Y);
    }
}

いくつかの変数名をもう少し直感的に変更するつもりですが、このコードは問題なく動作します。

于 2013-05-08T16:18:59.623 に答える