C# 基于C语言的RSSI扫描仪指纹图谱#

C# 基于C语言的RSSI扫描仪指纹图谱#,c#,wifi,rssi,fingerprinting,C#,Wifi,Rssi,Fingerprinting,我最近一直在尝试制作一个Wifi扫描仪,扫描所有Wifi AP,以检索其RSSI值。我一直使用的语言是C#,我使用本机Wifi API获取值。 由于stackoverflow的原因,我已经能够让它工作了 问题:我正在尝试使用计时器扫描所有AP(每秒一次)。然而,当我移动到另一个点时,唯一的RSSI变化是我连接的那个点。所有其他值保持不变。有没有办法让其他RSSI值每秒更改一次 提前感谢,, 库尔特 使用系统; 使用System.Collections.Generic; 使用系统组件模型; 使用系

我最近一直在尝试制作一个Wifi扫描仪,扫描所有Wifi AP,以检索其RSSI值。我一直使用的语言是C#,我使用本机Wifi API获取值。 由于stackoverflow的原因,我已经能够让它工作了

问题:我正在尝试使用计时器扫描所有AP(每秒一次)。然而,当我移动到另一个点时,唯一的RSSI变化是我连接的那个点。所有其他值保持不变。有没有办法让其他RSSI值每秒更改一次

提前感谢,, 库尔特

使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用NativeWifi;
命名空间FormFingerPrint
{
公共部分类Form1:Form
{
计时器myTimer=新计时器();
静态int timerCount=1;
公共表格1()
{
初始化组件();
}
公共静态字符串GetTimestamp(日期时间值)
{
返回值.ToString(“yyyyMMddHHmmss”);
}
public void AddItemToList(int-id、string-wind、string-SSID、string-BSSID、string-rssi、string-x、string-y、string-timeStamp){
ListViewItem=新的ListViewItem(id.ToString());
项目。子项目。添加(风);
项目。子项目。添加(SSID);
项。子项。添加(BSSID);
项目。子项目。添加(rssi);
item.SubItems.Add(x.ToString());
item.SubItems.Add(y.ToString());
item.SubItems.Add(时间戳);
lstvFingerPrint.Items.Add(item);
}
公共bool checkInput()
{
return(cboWindrichting.SelectedItem!=null&&txtX.Text!=“”&&txtY.Text!=“”);
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
myTimer.Tick+=新事件处理程序(ScanWifi);
myTimer.Interval=500;
myTimer.Start();
}
私有void btnReset_单击(对象发送者,事件参数e)
{
lstvFingerPrint.Items.Clear();
}
专用void ScanWifi(对象myObject,事件args myEventArgs){

如果(checkInput()&&timerCount),请向我们展示一些如何检索和打印值的代码。代码被添加到问题Icewind中。(我是一名初级程序员,所以请耐心点!)
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 NativeWifi;

namespace FormFingerPrint
{
public partial class Form1 : Form
{
    Timer myTimer = new Timer();
    static int timerCount = 1;


    public Form1()
    {
        InitializeComponent();
    }

    public static String GetTimestamp(DateTime value)
    {
        return value.ToString("yyyyMMddHHmmss");
    }

    public void AddItemToList(int id, string wind, string SSID, string BSSID, string rssi, string x, string y, string timeStamp){
        ListViewItem item = new ListViewItem(id.ToString());
        item.SubItems.Add(wind);
        item.SubItems.Add(SSID);
        item.SubItems.Add(BSSID);
        item.SubItems.Add(rssi);
        item.SubItems.Add(x.ToString());
        item.SubItems.Add(y.ToString());
        item.SubItems.Add(timeStamp);
        lstvFingerPrint.Items.Add(item);
    }

    public bool checkInput()
    {
        return (cboWindrichting.SelectedItem != null && txtX.Text != "" && txtY.Text != "");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        myTimer.Tick += new EventHandler(ScanWifi);
        myTimer.Interval = 500;
        myTimer.Start();

    }

    private void btnReset_Click(object sender, EventArgs e)
    {
        lstvFingerPrint.Items.Clear();
    }


    private void ScanWifi(Object myObject,EventArgs myEventArgs){


        if (checkInput() && timerCount <=1000)
        {
            using (WlanClient client = new WlanClient())
            {
                try
                {
                    lstvFingerPrint.Items.Clear();
                    foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
                    {

                        Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList();



                        foreach (Wlan.WlanBssEntry network in wlanBssEntries)
                        {
                            Console.WriteLine(network.rssi);
                            int id = 1;
                            string SSID = System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString();
                            string rss = network.rssi.ToString();
                            string windrichting = cboWindrichting.SelectedItem.ToString();
                            //MessageBox.Show(rss.ToString());
                            string x = txtX.Text.ToString();
                            string y = txtY.Text.ToString();
                            byte[] macAddr = network.dot11Bssid;
                            //Indien frequentie nodig zou zijn
                            //string freq = network.chCenterFrequency.ToString();
                            string tMac = "";

                            for (int i = 0; i < macAddr.Length; i++)
                            {
                                tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper();
                            }

                            string timeStamp = GetTimestamp(DateTime.Now);
                            if (!(SSID.Contains("TELENETHOMESPOT")))
                            {
                                AddItemToList(id, windrichting, SSID, tMac, rss, x, y, timeStamp);
                                id++;
                            }
                        }
                        //Console.ReadLine();
                        timerCount++;
                    }

                }   
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message.ToString());
                }
            }

        }
        else
        {
            myTimer.Stop();
            timerCount = 1;
        }
    }

}