最近在做一个快递项目,中间用到连接电子称进行称重
现在存在一个问题 我打开选项卡A中进行称重 正常
然后再打开选项卡B 在B中进行其它操作
然后关闭B或者选中选项卡A 这个时候会发现A中的重量一直不变
我用的是SerialPort 对串口数据进行的读取,代码如下
interfaceUpdataHandle1111 = new HandleInterfaceUpdataDelegate(UpdateTextBox);//实例化委托对象
Sp.PortName = App.GetBalanceComName;
Sp.BaudRate = App.GetBalanceBaud;
Sp.Parity = Parity.None;
Sp.StopBits = StopBits.One;
Sp.DataReceived += new SerialDataReceivedEventHandler(Sp_DataReceived);
Sp.ReceivedBytesThreshold = 1;
try
{
Sp.Open();
//ReceiveData(Sp);
}
catch
{
MessageBox.Show("连接电子称失败:端口" + App.GetBalanceComName + "打开失败!");
}
UnLoad事件
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (Sp.IsOpen)
{
Sp.Close();
}
}
在UserControl的UnLoad事件中添加的Sp.Close()事件
通过跟踪发现
在重新给选项卡A焦点的时候 Sp是关闭着的
后来通过网上查资料:得出重新打开选项卡相当于把UserControl重新加载了一遍
于是可以这样修改,在Load中加如下代码
if (_isFristLoad)
{
_isFristLoad = true;
}
if (!_isFristLoad)
{
if (!Sp.IsOpen)
{
Sp.Open();
}
}