多线程同步 串口
开发环境: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()一下应该有结果! --------------------编程问答--------------------
调试的时候监视变量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改变事件进行触发 --------------------编程问答--------------------
我这里的程序被我简化了。CurrentPressure跟串口接收到的字符串一边变化的。肯定是变化的。
我感觉好像是多线程同步的问题。不知道是不是??? --------------------编程问答-------------------- CurrentPressure在串口接收函数里面不断的被重新赋值。但是我在新建立的线程里面看不到新值。进入线程是什么样的值,退出线程还是什么的值。 --------------------编程问答-------------------- 我又去翻了下书,在这个程序里面。串口接收函数对CurrentPressure进行写。其他地方只是读数值。应该也没有什么干扰啊。为什么没有变化呢?????
请高手指点。
烧香!!!!! 请大神现身说法 --------------------编程问答-------------------- 把CurrentPressure设为静态变量试下 --------------------编程问答-------------------- 做了个简单例子测试你说的情况 不存在你说的这个问题 还是别的地方有问题 在自己检查下吧
补充:.NET技术 , C#