我是靠谱客的博主 虚心紫菜,最近开发中收集的这篇文章主要介绍c# wpf 从设备读取 rfid 数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景:从键盘获取数据 按照 enter 分为 epc 和 tid。

1 创建了一个 keydown 事件 但是发现 一打开窗体输入法会自动切换 于是我选择了禁用输入法:

在 xaml 中的 window 写:
InputMethod.PreferredImeState="Off"

2 定义 keydown 事件

private void Window_KeyDown(object sender, KeyEventArgs e)
{
     string s = e.Key.ToString();
     if(s.Length == 2)
     {
          string temp = s.Substring(1,1);
          str += temp;
      }
      else
      {
          str += s;
      }
            
      if(e.Key == Key.Enter)
      {
          if(k == 0)
          {
               epc = str;   //----epc 局部变量
               epc = epc.Substring(0,epc.Length - 6);   //------去掉 return
               System.Diagnostics.Debug.WriteLine(epc);
               str = string.Empty;
          }
          if(k == 1)
          {
              tid = str;
              tid = tid.Substring(0,tid.Length - 6);
              System.Diagnostics.Debug.WriteLine(tid);
              str = string.Empty;

              //-----------数据处理

              index += 1;    //--------id 号

              tags.Add(new Tags()    //  tags 集合类 下文有定义
              {
                   id = (index + 1).ToString(),
                   Tid = tid,
                   EPC = epc,
                   result = getResult(epc)
              });

              ((this.FindName("dataGrid") as DataGrid)).ItemsSource = tags;   //-先赋值 否则更改不了背景颜色

              if (!Window.GetWindow(dataGrid).IsVisible)
              {
                 Window.GetWindow(dataGrid).Show();
              }
              dataGrid.UpdateLayout();     //--------这段话必须定义 否则改颜色时报错显示空引用

              if(getResult(epc) == "Success")
              {
                  (dataGrid.Columns[3].GetCellContent(dataGrid.Items[index]) as TextBlock).Background=Brushes.Green;    //-------改成绿色
              }
              else
              {
                 (dataGrid.Columns[3].GetCellContent(dataGrid.Items[index]) as TextBlock).Background = Brushes.Red;     //------改成红色
              }
           }
           if (k == 0)
           {
              k = 1;
           }
           else
           {
              k = 0;
           }

        }
}

3  数据绑定

1 在主类的最上面定义如下:

ObservableCollection<Tags> tags = new ObservableCollection<Tags>();

2 在需要处理数据的地方 如本文是 keydown 中 对 tags 添加新的类 写法如下:

tags.Add(new Tags()
{
      id = (index + 1).ToString(),
      Tid = tid,
      EPC = epc,
      result = getResult(epc)
});

3 添加数据源

((this.FindName("dataGrid")) as DataGrid).ItemsSource = tags;

4 在 xaml 文件中对数据进行绑定 本文的例子是 DataGrid

<DataGrid.Columns>
                <DataGridTextColumn Header="id" Width="50" Binding="{Binding id}" FontFamily="微软雅黑" FontSize="20"/>
                <DataGridTextColumn Header="tid" Width="210" Binding="{Binding Tid}" FontFamily="微软雅黑" FontSize="20"/>
                <DataGridTextColumn Header="epc" Width="290" Binding="{Binding EPC}" FontFamily="微软雅黑" FontSize="20"/>
                <DataGridTextColumn Header="result" Width="260" Binding="{Binding result}" FontFamily="微软雅黑" FontSize="20"/>
</DataGrid.Columns>

4 有关类的定义省略 有关 result 数据处理的关键定义省略。 

最后

以上就是虚心紫菜为你收集整理的c# wpf 从设备读取 rfid 数据的全部内容,希望文章能够帮你解决c# wpf 从设备读取 rfid 数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部