1-1-250502C#字典应用
-
用户需求:
1) 通过扫码枪扫取设备条形码,作为当前拟采集数据的设备对应的标签
2) 定时(如每5秒)读取并记录一次设备的状态参数 -
基于C#的解决方案:
在C#中,声明字典,其中字典的键相当于设备的条形码,字典的值相当于定时(如每5秒)读取并记录的设备的状态参数值
序号 名称 内容
1 键 扫码枪扫描的,设备标签条码字符串
2 值 设备标签对应的定时读取参数信息,存储在List -
具体验证方式:
1) 点击bt1按钮,将当前时间标签模拟扫码枪随机扫码标签,并启用定时器timer1,开始执行定时(每5秒)读取对应状态参数(以随机数模拟),并显示在相应textbox文档中
2) 点击bt2按钮,采集数据结束,并显示结束采集时间
3) 点击bt3按钮,显示字典中的键值对,并跟实时采集文本框对应,以验证键值对是否首先存入字典
![]()
4.具体代码
1)拖动timer控件至界面,并设置Interval为5000(意为每5000ms执行一次)
![]()
2)具体代码实现
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace winform250502_设备标签及相应数据采集
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//声明随机数变量,DateTime变量,及字典
Random var随机数 = new Random();
private DateTime var当前时间;
Dictionary<DateTime, List
// 点击按钮1时,记录当前时间作为字典的键,并new一个准备存放数据的list
private void button1_Click_1(object sender, EventArgs e)
{
var当前时间 = DateTime.Now;
textBox1.Text = var当前时间.ToString();
var字典[var当前时间] = new List<int>();
timer1.Start();
}
//定义timer事件,添加字典的键值对,并遍历字典的键值对显示在textbox3中
private void timer1_Tick_1(object sender, EventArgs e)
{
var字典[var当前时间].Add(var随机数.Next(0, 101));
textBox3.Clear();
foreach (var kvp in var字典)
{
string dataString = $"条码: {kvp.Key}\n参数: {string.Join(", ", kvp.Value)}\n\n";
textBox3.AppendText(dataString);
}
}
//点击button2,模拟结束当前设备参数采集,记录当前关闭时间并关闭timer事件,
private void button2_Click_1(object sender, EventArgs e)
{
var当前时间 = DateTime.Now;
textBox2.Text = var当前时间.ToString();
timer1.Stop();
}
//点击button3,同样遍历显示字典键值对.即设备标签及对应参数,以验证是否首先存入字典,以便于后续扩展
private void button3_Click_1(object sender, EventArgs e)
{
textBox4.Clear();
foreach (var kvp in var字典)
{
string dataString = $"条码: {kvp.Key}\n参数: {string.Join(", ", kvp.Value)}\n\n";
textBox4.AppendText(dataString);
}
}
}
}


浙公网安备 33010602011771号