当前位置:编程学习 > C#/ASP.NET >>

多线程同步 串口

开发环境:VisualStudio 2008  语言: C#

问题关键词: 多线程 ,串口

问题描述: 

  在串口中断函数中,从接收到的字符串中获得一个float变量值CurrentPressure。这个变量值是经常变化的。  
 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
                    //设置当前压力
                    string aa1;

                    CurrentPressure = float.Parse(aa1);
        }
然后先建立了一个线程
        private void button26_Click_1(object sender, EventArgs e)
        {
                    //多线程
                    myThread3 = new Thread(YuYa);
                    Control.CheckForIllegalCrossThreadCalls = false;
                    myThread3.Start(); 
        }
但是在这个函数里面,CurrentPressure值在一个生命周期里面,一直不变。
        private void YuYa()
        {
            for(int i=0;i<100;i++)
              {
                   if (CurrentPressure > 0.005 || CurrentPressure < -0.005 )
                   {

                   }
                   TimeDelay();
              }
        }

我想要的效果是在 YuYa() 能够看到变量 CurrentPressure 的变化。请问怎么改啊???? --------------------编程问答-------------------- 好像我也不知道啊!你在YuYa方法里面message.show()一下应该有结果! --------------------编程问答--------------------
引用 1 楼 yuhaijiantt 的回复:
好像我也不知道啊!你在YuYa方法里面message.show()一下应该有结果!


调试的时候监视变量CurrentPressure 。一直看不到变化,谢谢关注 --------------------编程问答--------------------  private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
  {
  //设置当前压力
  string aa1;

  CurrentPressure = float.Parse(aa1);
  }
这里面的CurrentPressure变化没有啊,他没变,线程里就肯定没变。。

不知道你的目的是什么,for(int i=0;i<100;i++)执行很快的,可能在之前完后才变呢

你要时刻巡检CurrentPressure的变化,可以通过CurrentPressure改变时间进行触发 --------------------编程问答-------------------- 不好意思,修正下错别字

可能在执行完后才变呢

你要时刻巡检CurrentPressure的变化,可以通过CurrentPressure改变事件进行触发 --------------------编程问答--------------------
引用 3 楼 hecker728 的回复:
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
  {
  //设置当前压力
  string aa1;

  CurrentPressure = float.Parse(aa1);
  }
这里面的CurrentPressure变化没有啊,他没变,线程里就肯定没变……


我这里的程序被我简化了。CurrentPressure跟串口接收到的字符串一边变化的。肯定是变化的。

我感觉好像是多线程同步的问题。不知道是不是??? --------------------编程问答-------------------- CurrentPressure在串口接收函数里面不断的被重新赋值。但是我在新建立的线程里面看不到新值。进入线程是什么样的值,退出线程还是什么的值。 --------------------编程问答-------------------- 我又去翻了下书,在这个程序里面。串口接收函数对CurrentPressure进行写。其他地方只是读数值。应该也没有什么干扰啊。为什么没有变化呢?????

请高手指点。
烧香!!!!! 请大神现身说法 --------------------编程问答-------------------- 把CurrentPressure设为静态变量试下 --------------------编程问答-------------------- 做了个简单例子测试你说的情况 不存在你说的这个问题 还是别的地方有问题 在自己检查下吧
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,