private const int EVENT_ALL_ACCESS = 0x1F0003;
private const string ActiveName = "FriendlyARM/ButtonEvent";
private IntPtr activitySignal;
[DllImport("coredll.dll")]
private static extern IntPtr OpenEvent(int desiredAccess, bool inheritHandle, string name);
[DllImport("coredll.dll")]
private static extern int WaitForSingleObject(IntPtr handle, int milliseconds);
...
activitySignal = OpenEvent(EVENT_ALL_ACCESS, false, ActiveName);
if(activitySignal == IntPtr.Zero) {
return;
}
...
void Timer1Tick(object sender, EventArgs e)
{
int status;
status = WaitForSingleObject(activitySignal, 1000);
if (status == 0) {
count++;
//System.Threading.Thread.Sleep(200);
textBox3.Text = "";
textBox3.Text += count.ToString();
textBox3.Text += "--";
textBox3.Text += status.ToString();
byte[] pout = new Byte[6];
textBox2.Text = "";
for(int i=1;i<=10;i++) {
ReadFile(kPort,pout,6,0, IntPtr.Zero);
}
for(int i=0;i<=5;i++) {
textBox2.Text += pout.ToString();
}
}
}
private const string ActiveName = "FriendlyARM/ButtonEvent";
private IntPtr activitySignal;
[DllImport("coredll.dll")]
private static extern IntPtr OpenEvent(int desiredAccess, bool inheritHandle, string name);
[DllImport("coredll.dll")]
private static extern int WaitForSingleObject(IntPtr handle, int milliseconds);
...
activitySignal = OpenEvent(EVENT_ALL_ACCESS, false, ActiveName);
if(activitySignal == IntPtr.Zero) {
return;
}
...
void Timer1Tick(object sender, EventArgs e)
{
int status;
status = WaitForSingleObject(activitySignal, 1000);
if (status == 0) {
count++;
//System.Threading.Thread.Sleep(200);
textBox3.Text = "";
textBox3.Text += count.ToString();
textBox3.Text += "--";
textBox3.Text += status.ToString();
byte[] pout = new Byte[6];
textBox2.Text = "";
for(int i=1;i<=10;i++) {
ReadFile(kPort,pout,6,0, IntPtr.Zero);
}
for(int i=0;i<=5;i++) {
textBox2.Text += pout.ToString();
}
}
}
Note:
Event 可以被抓到 但是值卻會讀到都是0000000.
Comments