大家好,请各位高手帮帮我,我学习一个计数器的例程,它通过time控件每500毫秒获取了一个计数器的值,获取在程序里显示的值是从0开始至50000结束,后又0~50000这样循环。请看例程的代码:private void m_CntTimer_Tick(object sender, EventArgs e)
{
if (AdvCounterLib.MeasurementType.EventCounting == m_axAdvCounter.MeasurementType)
{
//1. Get the data
object varData = null;
System.UInt32 nData = 0;
bool bOverflow = false;
if (!m_axAdvCounter.ReadMeasurementValue(out varData, out bOverflow))
{
UpdateErrMsg();
return;
}
nData = (System.UInt32)varData; //2. Show the data out
txtResult.Text = nData.ToString(); //这个nData(一直都是0至50000不停循环)
}
}
我想实现每当值为30000时,nData值初始为0,且i计数一次,这样重复
用 int i 使用 i++ 计数一次,我写了大意如下的代码在如上的timer里,但是在timer里每次i都是不停的计数,
int i = 0;
if (nData == 30000)
{
i++; //每次到30000时候计数一次
textBox1.Text = i.ToString();
textBox1.Refresh();
}
苦恼我好久了。哪位大哥大姐给个思路或者代码最好了,如果表达不清楚,请告诉我,谢谢了!
{
if (AdvCounterLib.MeasurementType.EventCounting == m_axAdvCounter.MeasurementType)
{
//1. Get the data
object varData = null;
System.UInt32 nData = 0;
bool bOverflow = false;
if (!m_axAdvCounter.ReadMeasurementValue(out varData, out bOverflow))
{
UpdateErrMsg();
return;
}
nData = (System.UInt32)varData; //2. Show the data out
txtResult.Text = nData.ToString(); //这个nData(一直都是0至50000不停循环)
}
}
我想实现每当值为30000时,nData值初始为0,且i计数一次,这样重复
用 int i 使用 i++ 计数一次,我写了大意如下的代码在如上的timer里,但是在timer里每次i都是不停的计数,
int i = 0;
if (nData == 30000)
{
i++; //每次到30000时候计数一次
textBox1.Text = i.ToString();
textBox1.Refresh();
}
苦恼我好久了。哪位大哥大姐给个思路或者代码最好了,如果表达不清楚,请告诉我,谢谢了!
private void m_CntTimer_Tick(object sender, EventArgs e)
{
if (AdvCounterLib.MeasurementType.EventCounting == m_axAdvCounter.MeasurementType)
{
//1. Get the data
object varData = null;
System.UInt32 nData = 0;
bool bOverflow = false;
if (!m_axAdvCounter.ReadMeasurementValue(out varData, out bOverflow))
{
UpdateErrMsg();
return;
}
nData = (System.UInt32)varData; //2. Show the data out
txtResult.Text = nData.ToString(); //这个nData(一直都是0至50000不停循环)
}
if (nData == 30000)
{
i++; //每次到30000时候计数一次
textBox1.Text = i.ToString();
textBox1.Refresh();
}
}
你是想说i不应该不停的计数吗? 你每次把nData初始回去了,是不是原因?
你的nData从这里面算出来的。是否算出来的值每次都是30000?
if (nData == 30000)
{
i++; //每次到30000时候计数一次
textBox1.Text = i.ToString();
textBox1.Refresh();
nData=0;
}加句nData=0;
int i = 0;
if (nData == 30000)
{
i++; //每次到30000时候计数一次
textBox1.Text = i.ToString();
textBox1.Refresh();
}中的 int i = 0;
在窗体类里面定义,不要在timer的函数里面的定义.
问题解决了。需要nData = 0,忘记初始为0了,汗~,OK,结贴散分。
To libinguest,对的,加nData=0。
To hopewoo,对的,int i = 0;应该在timer外面。
谢谢大家!