0

RFID リーダーがいくつかのタグをスキャンした後に、テキスト/説明を追加したいと考えています。IF ステートメントを使用してみましたが、何もしませんでした。

その出力はタグ番号ですが、追加したいテキストは表示または表示されませんでした。助けてください、ありがとう!

出力を 00000919BEAE = ミルクにしたい

コードは次のとおりです。

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;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
    Dictionary<string, string> tags = new Dictionary<string, string>() { 
{ "00000919BEAE", "Milk" } ,
{"0000092A1132", "Fruits"}};
    public string RxString;

      public Form1()
      {
          InitializeComponent();
      }

      private void buttonStart_Click(object sender, EventArgs e)
      {
          serialPort1.PortName = "COM15";
          serialPort1.BaudRate = 9600;

          serialPort1.Open();
          if (serialPort1.IsOpen)
          {
              buttonStart.Enabled = false;
              buttonStop.Enabled = true;
              textBox1.ReadOnly = false;
          }
      }

      private void buttonStop_Click(object sender, EventArgs e)
      {
          if (serialPort1.IsOpen)
          {
              serialPort1.Close();
              buttonStart.Enabled = true;
              buttonStop.Enabled = false;
              textBox1.ReadOnly = true;
          }

      }

      private void Form1_FormClosing(object sender, FormClosingEventArgs e)
      {
          if (serialPort1.IsOpen) serialPort1.Close();
      }

      private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
      {
          // If the port is closed, don't try to send a character.

          if(!serialPort1.IsOpen) return;

          // If the port is Open, declare a char[] array with one element.
          char[] buff = new char[1];

          // Load element 0 with the key character.

          buff[0] = e.KeyChar;

          // Send the one character buffer.
          serialPort1.Write(buff, 0, 1);

          // Set the KeyPress event as handled so the character won't
          // display locally. If you want it to display, omit the next line.
          e.Handled = true;


      }



      private void DisplayText(object sender, EventArgs e)
      {
          textBox1.AppendText(RxString);
          if (tags.ContainsKey(RxString))
          {
              Console.Write(tags[RxString]); // this will print Milk
          }

      }

      private void serialPort1_DataReceived
        (object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
      {
          RxString = serialPort1.ReadExisting();
          this.Invoke(new EventHandler(DisplayText));

      }





    }
 }
4

2 に答える 2