为什么在serialPort1_PinChanged事件中设置timer2.Enable=true,timer2_Tick事件内容不执行呢?哪位老大能给解释解释呢?
在serialPort1_PinChanged事件中设置断点发现time2.Enable已经为true,就是timer_Tick事件内容不执行,因为在timer2_Tick事件设置messagebox对话框,就是不见弹出。private void serialPort1_PinChanged(object sender, SerialPinChangedEventArgs e)
        {
            if (!bInitFinish)
            {
                return;
            }
            if (e.EventType == SerialPinChange.CtsChanged)
            {
                if (bCOMPress)
                {
                    if (!timer2.Enabled)
                    {
                        timer2.Interval = 500;
                        timer2.Enabled = true;
                        bCOMPress = false;
                    }
                    //采集图像函数
                       //SnapPicture();
                 }
              }
            }private void timer2_Tick(object sender, EventArgs e)
        {
            bCOMPress = true;
            timer2.Enabled = false;
            
            MessageBox.Show("11");            
        }
在串口serialPort_PinChanged事件中,按下一次脚踏开关,会多次触发serialPort_PinChanged事件,所以在serialPort_PinChanged事件中家了一个开关变量bComPress,而bCompress改变就在timer2_tick事件,timer2事件半秒执行一次。第一次按下脚踏开关采集图片可以,再往后按下脚踏开关就不在采集图像,调试发现bCompress始终为false,所以猜测timer2_tick事件代码没执行。

解决方案 »

  1.   

      System.IO.Ports.SerialPort port = new System.IO.Ports.SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
             
               
                port.DataReceived += (port1_DataReceived);//DataReceived事件委托
                port.ErrorReceived += new SerialErrorReceivedEventHandler(port1_ErrorReceived);
                port.PinChanged += new SerialPinChangedEventHandler(port1_PinChanged);
                port.Disposed+=new EventHandler(port_Disposed);
             
                port.Open();
    结果这些事件都不能触发,是哪儿设置不对吗?