请教各位大侠:
采集上来的值在给this.textBox2.Text和this.textBox1.Text赋值时,该this.textBox1.Text的值确在this.textBox2.Text中或this.textBox2.Text的值确在this.textBox1.Text中,相互混淆,如何修改下面的代码。谢谢!
public Thread EDA17_M = null;
EDA9017_M = new Thread(new ThreadStart(EDA17_M_tx));
EDA9017_M.Start(); private void EDA17_M_tx()
{
Monitor.Enter(this);
if (E9060_K1KZ == 1)
{
Tx_ML = EDA17_Cd1;
EDA17_M1_Cj();
} else if (E9060_K1KZ == 2)
{
Tx_ML = EDA17_Cd2;
EDA17_M1_Cj();
}
else if (E9060_K1KZ == 3)
{
K1_Xweijanniu();
}
else if (E9060_K1KZ == 4)
{ K2_Xweijanniu(); }
else if (E9060_K1KZ == 5)
{ K3_Xweijanniu(); }
else if (E9060_K1KZ == 6)
{ G1_Xweijanniu(); }
else if (E9060_K1KZ == 7)
{ G2_Xweijanniu(); }
else if (E9060_K1KZ == 8)
{ G3_Xweijanniu(); }
else if (E9060_K1KZ == 9)
{ for (int i = 0; i < 4; i++)
{
switch (i)
{
case 1:
G1_Xweijanniu(); break;
case 2:
G2_Xweijanniu(); break;
case 3:
G3_Xweijanniu(); break; }
}
} Monitor.Exit(this); //break;
Thread.Sleep(5);
}
{ private void EDA9017_M1_Cj()//通道1
{ if (!isSetProperty)
{ setportProperty();
isSetProperty = true;
}
else
{
serialPort1.ReceivedBytesThreshold = 1;
serialPort1.ErrorReceived += new SerialErrorReceivedEventHandler(_seriaPort_ErrorReceived);
}
if (serialPort1.IsOpen)
{
try
{
ReceiveEventFlag = true;
serialPort1.DiscardOutBuffer();
serialPort1.DiscardInBuffer();
serialPort1.Write(Tx_ML, 0, Tx_ML.Length);
ReceiveEventFlag = false;
System.Threading.Thread.Sleep(100);
} catch (Exception)
{ MessageBox.Show("采集失败!"); return;
} } }
private void comm1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (ReceiveEventFlag) return; //禁止接收事件时直接退出
try
{
Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
int n = serialPort1.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buff1 = new byte[9];
serialPort1.Read(buff1, 0, n);
System.Threading.Thread.Sleep(100);
EDA17_Mg1_Llimit = Convert.ToUInt32((Scoft.Bclas.ClasCRC.ByteToString(buff1)).Substring(6, 4), 16);
this.Invoke((EventHandler)
(delegate
{
if (E9060_K1KZ == 1)
{
this.textBox1.Text=
Convert.ToString(Scoft.Bclas.ClasCRC.GetSiSheWuRuNumber(Bclas.ClasCRC.L_ineartn(EDA17_Rge1_Ulimit, EDA17_Rge1_Llimit, EDA17_Nf1_Ulimit, EDA17_Nf1_Llimit, EDA17_Mg1_Llimit), 2)); E9060_K1KZ = 2;
}
else if (E9060_K1KZ == 2)
{
this.textBox2.Text = Convert.ToString(Scoft.Bclas.ClasCRC.GetSiSheWuRuNumber(Bclas.ClasCRC.L_ineartn(EDA17_Rge1_Ulimit, EDA17_Rge1_Llimit, EDA17_Nf1_Ulimit, EDA17_Nf1_Llimit, EDA17_Mg1_Llimit), 2));
E9060_K1KZ = 1;//Bclas.ClasCRC.L_ineartn()线性处理,Scoft.Bclas.ClasCRC.GetSiSheWuRuNumber()四舍五入
}
})); serialPort1.DiscardInBuffer();
ReceiveEventFlag = true;
}
finally
{
Listening = false;
timer2.Start();
} }
private void timer2_Tick(object sender, EventArgs e)
{ timer2.Stop();
EDA17_M_tx();
}
采集上来的值在给this.textBox2.Text和this.textBox1.Text赋值时,该this.textBox1.Text的值确在this.textBox2.Text中或this.textBox2.Text的值确在this.textBox1.Text中,相互混淆,如何修改下面的代码。谢谢!
public Thread EDA17_M = null;
EDA9017_M = new Thread(new ThreadStart(EDA17_M_tx));
EDA9017_M.Start(); private void EDA17_M_tx()
{
Monitor.Enter(this);
if (E9060_K1KZ == 1)
{
Tx_ML = EDA17_Cd1;
EDA17_M1_Cj();
} else if (E9060_K1KZ == 2)
{
Tx_ML = EDA17_Cd2;
EDA17_M1_Cj();
}
else if (E9060_K1KZ == 3)
{
K1_Xweijanniu();
}
else if (E9060_K1KZ == 4)
{ K2_Xweijanniu(); }
else if (E9060_K1KZ == 5)
{ K3_Xweijanniu(); }
else if (E9060_K1KZ == 6)
{ G1_Xweijanniu(); }
else if (E9060_K1KZ == 7)
{ G2_Xweijanniu(); }
else if (E9060_K1KZ == 8)
{ G3_Xweijanniu(); }
else if (E9060_K1KZ == 9)
{ for (int i = 0; i < 4; i++)
{
switch (i)
{
case 1:
G1_Xweijanniu(); break;
case 2:
G2_Xweijanniu(); break;
case 3:
G3_Xweijanniu(); break; }
}
} Monitor.Exit(this); //break;
Thread.Sleep(5);
}
{ private void EDA9017_M1_Cj()//通道1
{ if (!isSetProperty)
{ setportProperty();
isSetProperty = true;
}
else
{
serialPort1.ReceivedBytesThreshold = 1;
serialPort1.ErrorReceived += new SerialErrorReceivedEventHandler(_seriaPort_ErrorReceived);
}
if (serialPort1.IsOpen)
{
try
{
ReceiveEventFlag = true;
serialPort1.DiscardOutBuffer();
serialPort1.DiscardInBuffer();
serialPort1.Write(Tx_ML, 0, Tx_ML.Length);
ReceiveEventFlag = false;
System.Threading.Thread.Sleep(100);
} catch (Exception)
{ MessageBox.Show("采集失败!"); return;
} } }
private void comm1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (ReceiveEventFlag) return; //禁止接收事件时直接退出
try
{
Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
int n = serialPort1.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buff1 = new byte[9];
serialPort1.Read(buff1, 0, n);
System.Threading.Thread.Sleep(100);
EDA17_Mg1_Llimit = Convert.ToUInt32((Scoft.Bclas.ClasCRC.ByteToString(buff1)).Substring(6, 4), 16);
this.Invoke((EventHandler)
(delegate
{
if (E9060_K1KZ == 1)
{
this.textBox1.Text=
Convert.ToString(Scoft.Bclas.ClasCRC.GetSiSheWuRuNumber(Bclas.ClasCRC.L_ineartn(EDA17_Rge1_Ulimit, EDA17_Rge1_Llimit, EDA17_Nf1_Ulimit, EDA17_Nf1_Llimit, EDA17_Mg1_Llimit), 2)); E9060_K1KZ = 2;
}
else if (E9060_K1KZ == 2)
{
this.textBox2.Text = Convert.ToString(Scoft.Bclas.ClasCRC.GetSiSheWuRuNumber(Bclas.ClasCRC.L_ineartn(EDA17_Rge1_Ulimit, EDA17_Rge1_Llimit, EDA17_Nf1_Ulimit, EDA17_Nf1_Llimit, EDA17_Mg1_Llimit), 2));
E9060_K1KZ = 1;//Bclas.ClasCRC.L_ineartn()线性处理,Scoft.Bclas.ClasCRC.GetSiSheWuRuNumber()四舍五入
}
})); serialPort1.DiscardInBuffer();
ReceiveEventFlag = true;
}
finally
{
Listening = false;
timer2.Start();
} }
private void timer2_Tick(object sender, EventArgs e)
{ timer2.Stop();
EDA17_M_tx();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货