串口数据显示在textbox里
我先把我的主要代码贴上来:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
byte[]lpBuffer=new byte [10];
uint[] m_v = new uint[5];
serialPort1.Read(lpBuffer, 0, 10);
m_v[0] = Convert.ToUInt32((lpBuffer[0] < < 4) + (lpBuffer[1] & 0x0f));
m_v[1] = Convert.ToUInt32((lpBuffer[2] < < 4) + (lpBuffer[3] & 0x0f));
m_v[2] = Convert.ToUInt32((lpBuffer[4] < < 4) + (lpBuffer[5] & 0x0f));
m_v[3] = Convert.ToUInt32((lpBuffer[6] < < 4) + (lpBuffer[7] & 0x0f));
m_v[4] = Convert.ToUInt32((lpBuffer[8] < < 4) + (lpBuffer[9] & 0x0f));
m_vol[0] = Convert.ToSingle((float)(m_v[0]) * 5 / 4095);
m_vol[1] = Convert.ToSingle((float)(m_v[1]) * 5 / 4095);
m_vol[2] = Convert.ToSingle((float)(m_v[2]) * 5 / 4095);
m_vol[3] = Convert.ToSingle((float)(m_v[3]) * 5 / 4095);
m_vol[4] = Convert.ToSingle((float)(m_v[4]) * 5 / 4095);
this.Invoke(new EventHandler(DoUpdate));
}
private void DoUpdate(object s, EventArgs e)
{
Cur_R.Text = m_vol[0].ToString();
Cur_X.Text = m_vol[1].ToString();
Cur_G.Text = m_vol[2].ToString();
Cur_B.Text = m_vol[3].ToString();
Cur_Phase.Text = m_vol[4].ToString();
}
现在的问题是:只有 Cur_R, Cur_X, Cur_G有数据,另外两个没有数据显示。但是,当我移动鼠标的时候,就会有数据显示出来,如果用MessageBox来显示m_vol[3],m_vol[4]的话,显示出来的数值是正确的。这个问题困扰了我好久,各位大虾,帮帮忙,看看到底是什么原因。
[解决办法]
或者再加上这么一句..
this.BeginInvoke(new EventHandler(DoUpdate));
Application.DoEvents();
试试,我也不肯定...
[解决办法]
Cur_Phase.Update();
加上这句
你的textbox.Update();
[解决办法]
我也发现这个问题,而且比较严重,程序在长时间工作的情况下并且没有人动鼠标等操作,感觉整个程序进程都休眠了,也不发数据也不接收数据了,但移动一下鼠标,程序又开始正常工作了。
[解决办法]
试试Refresh
[解决办法]
帮忙顶一下