光电编码器连接GPIO口,程序中新建线程扫描捕捉GPIO信号,用委托事件机制通知主程序,程序具体逻辑判读如下: /// <summary> /// 启动新的线程 /// </summary> public void InitPin() { newThread = new Thread(new ThreadStart(Turn)); newThread.Start(); } /// <summary> /// 捕捉信号 /// </summary> private void Turn() { curA = this.Parse(GpioRead(0x17)[0], 3); while (true) { Thread.Sleep(1); curB = this.Parse(GpioRead(0x17)[0], 3); curC = this.CurrAddBefo(curB, curA); curD = this.Parse(GpioRead(0x1f)[0], 1); if (curC == 2 || curC == 4 || curC == 11 || curC == 13) { if (ClockWise != null) { ClockWise(); curA = this.Parse(GpioRead(0x17)[0], 3); } } else if (curC == 1 || curC == 7 || curC == 8 || curC == 14) { if (AntiClockWise != null) { AntiClockWise(); curA = this.Parse(GpioRead(0x17)[0], 3); } } else if (curD == 0) { if (ButtonPush != null) { ButtonPush(); } } } }