c# - 从第二次或更多次调用时如何重置增量变量
问题描述
public partial class MainForm : Form
{
private static int lineReadCounter = 0;
public string DataToSetandGet = String.Empty;
private void StatusBtn_Click(object sender, EventArgs e)
{
string StatusInfoToshow = "?S\r";
string commForMeter = string.Format(StatusInfoToshow);
try
{
if (statusofMeter.serialPortForApp.IsOpen)
{
statusofMeter.serialPortForApp.Write(commForMeter);
}
}
catch (Exception)
{
statusofMeter.ShowDataInScreenTxtb.Text = "TimeOUT Exception";
}
}
public void SerialPortInApp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
DataToSetandGet = serialPortForApp.ReadExisting();
string pattern = @"^[a-zA-Z0-9\s\-?\*?\.?\/\:\\r]{1,}$";
Match rgxs = Regex.Match(DataToSetandGet, pattern);
if (rgxs.Success && DataToSetandGet.Length > 50 &&
DataToSetandGet.IndexOf("\r") == DataToSetandGet.Length - 1)
{
lineReadCounter++;
this.BeginInvoke((Action)delegate ()
{
Textbox1.AppendText(lineReadCounter.ToString() +
DataToSetandGet.Substring(4).Replace("\n", " ").Replace("\r", "\r\n"));
});
}
}
private void CountReadings()
{
//Count Readings
string[] lines =
Regex.Split(textbox1.Text.Trim(), "\r\n");//Trim avoid white spaces
lineReadCounter = lines.Length;
label1.Text = "No. Readings: " + lineReadCounter.ToString();
}
}
如果我按下按钮StatusBtn_Click
,它会发送一个命令并显示
lineReadCounter + 读数
lineReadCounter
1
在第一次按下按钮时开始。但第二次和下一次是lineReadCounter
从 开始2
。
我如何重置lineReadCounter
或zero
每次1
按下按钮?
解决方案
放
lineReadCounter = 0;
前
statusofMeter.serialPortForApp.Write(commForMeter);
所以您的 btnClick 事件将如下所示:
private void StatusBtn_Click(object sender, EventArgs e)
{
string StatusInfoToshow = "?S\r";
string commForMeter = string.Format(StatusInfoToshow);
try
{
if (statusofMeter.serialPortForApp.IsOpen)
{
lineReadCounter = 0;
statusofMeter.serialPortForApp.Write(commForMeter);
}
}
catch (Exception)
{
statusofMeter.ShowDataInScreenTxtb.Text = "TimeOUT Exception";
}
}
我认为你订阅了SerialPort.DataReceived
事件,所以如果你调用Write()
,SerialPortInApp_DataReceived
方法将被调用。我觉得对吗?
推荐阅读
- elasticsearch - Elasticsearch '[bool] 无法解析字段 [filter]' 异常
- c - 尝试执行 ioctl 时出现一般保护错误
- c - 两个给定整数的不同位
- kernel - 内核中 MMU 上下文中的 PMM 竞技场是什么(锆石/紫红色)
- ios - 获取周开始日不同于星期一的周数 - IOS
- python - Python pp 一个 Json 配置文件
- javascript - 从 react-redux 中的元素中删除事件监听器的问题
- gem5 - gem5 中 regStats() 函数的输出存储在哪里?
- xpath - 使用 wso2 esb 更改原始有效负载
- logstash - docker 中的 logstash 错误“无法执行操作”