Фильтрация отсканированного MAC-адреса и отображение в текстовом поле или списке без дублирования - PullRequest
0 голосов
/ 12 октября 2018

Инструмент Image Winform Я работаю над инструментом, который подключен к моему Bluetooth-приемнику, сканирует и получает MAC-адрес устройств BLE.Пока я могу сканировать, и MAC-адрес постоянно отображается в текстовом поле.У меня проблема с фильтрацией MAC-адреса? (Наш назначенный MAC-адрес 88 99 66 55 4X XX, последний 12-разрядный бесплатный).Как я могу отфильтровать это во время сканирования и поместить его в список или текстовое поле для последующего использования.

    public SerialPort serialport;
    private bool buttonWasClicked = false;



    public Form1()
    {
        InitializeComponent();


        foreach (string s in SerialPort.GetPortNames())
        {
            cmPort.Items.Add(s);
        }




    }


    public void serialport_connect(String port, int baudrate)
    {
        DateTime dt = DateTime.Now;
        String dtn = dt.ToShortTimeString();


        serialport = new SerialPort(port, baudrate);


        try
        {
            serialport.Open();


            textBox1.AppendText(" OPEN " + "[" + dtn + "] " + " Port Opened: Connected\n");


            // Event Handler
            serialport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Error");
        }
    }




    private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {



        DateTime dt = DateTime.Now;
        String dtn = dt.ToShortTimeString();
        //TextBox.CheckForIllegalCrossThreadCalls = false;
        if (buttonWasClicked == true)
        {
            ThreadSafeDelegate(delegate { ScanList.Items.Add(serialport.ReadExisting()); });
            //ThreadSafeDelegate(delegate { textBox3.Text += "\r\n"; });
        }
        else
        {
            ThreadSafeDelegate(delegate { textBox1.AppendText(serialport.ReadExisting()); });
            ThreadSafeDelegate(delegate { textBox1.Text += "\r\n"; });
            //textBox1.AppendText(serialport.ReadExisting());
            //textBox1.Text += "\r\n";
        }



    }
    private void button1_Click(object sender, EventArgs e)
    {


        byte[] msg = ASCIIEncoding.ASCII.GetBytes(textBox2.Text + "\0");


        serialport.Write(msg, 0, msg.Length);           



    }


    private void button2_Click(object sender, EventArgs e)
    {
        String port = cmPort.Text;
        int baudrate = Convert.ToInt32(cmBaud.Text);
        //Parity parity = (Parity)Enum.Parse(typeof(Parity), cmbparity.Text);
        //int databits = Convert.ToInt32(cmbdatabits.Text);
        //StopBits stopbits = (StopBits)Enum.Parse(typeof(StopBits), cmbstopbits.Text);
        button3.Enabled = true;
        serialport_connect(port, baudrate);


    }


    private void button3_Click(object sender, EventArgs e)
    {
        DateTime dt = DateTime.Now;
        String dtn = dt.ToShortTimeString();


        if (serialport.IsOpen)
        {
            serialport.Close();
            button3.Enabled = false;
            button2.Enabled = true;
            textBox1.AppendText("[" + dtn + "] " + "Port Close: Disconnected\n");
        }
    }

    private void btnClear_Click(object sender, EventArgs e)
    {
        textBox1.Text = "";
    }


    private void ThreadSafeDelegate(MethodInvoker method)
    {
        if (InvokeRequired)
            BeginInvoke(method);
        else
            method.Invoke();
    }


    private void Scan_Click(object sender, EventArgs e)
    {
        buttonWasClicked = true;


        byte[] msg = ASCIIEncoding.ASCII.GetBytes( "SNS10" + "\0");


        serialport.Write(msg, 0, msg.Length);
    }
}

}

...