作业帮 > 综合 > 作业

希望有人能帮我解释一下下面的代码! 关于c#

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 14:10:55
希望有人能帮我解释一下下面的代码! 关于c#
namespace NewHMIBth
{
public partial class Form1 : Form
{
private BluetoothListener Listener;
private List clientList = new List();
private bool listening = true;
public Form1()
{
InitializeComponent();
btnSend.Enabled = false;
btnStop.Enabled = false;
}
private delegate void SafeWinFormsThreadDelegate(string msg);
private void WriteMsg(string msg)
{
SafeWinFormsThreadDelegate d = new SafeWinFormsThreadDelegate(UpdateUI);
Invoke(d, new object[] { msg });
}
private void UpdateUI(string msg)
{
this.listBoxMsg.Items.Add(msg);
}
private void btnStart_Click(object sender, EventArgs e)
{
BluetoothRadio radio = BluetoothRadio.PrimaryRadio;
if (radio == null)
{
UpdateUI("没有发现蓝牙设备或者不支持蓝牙协议栈!");
return;
}
radio.Mode = RadioMode.Discoverable;
Listener = new BluetoothListener(BluetoothService.SerialPort);
Listener.Start();
listening = true;
Thread ListenerThread = new Thread(ListenLoop);
ListenerThread.Start();
btnStop.Enabled = true;
btnStart.Enabled = false;
btnSend.Enabled = true;
UpdateUI("蓝牙服务开始!");
private void btnSend_Click(object sender, EventArgs e)
{
BroadLoop(this.txtMsg.Text);
}
这个.解释起来麻烦.待我慢慢说来
private BluetoothListener Listener;
private List clientList = new List();
private bool listening = true;
这里是实例化蓝牙的接收泛型private List clientList = new List();,并且定义一个bool型的listening 初始值为true
public Form1()
{
InitializeComponent();
btnSend.Enabled = false;
btnStop.Enabled = false;
}
这里是窗体构造,根据控件名的意思btnSend这是一个按钮,点击这个按钮发送.btnStop点击这个按钮就停止,它们的初始状态都是Enabled=false,也就是说,你打开Form1的时候不能够点击它们,接着往下看.
private delegate void SafeWinFormsThreadDelegate(string msg);
这句话是定义一个委托,委托关键字delegate ,我也不可能用文字给你讲多详细,委托的用法需要你去看和理解.
private void WriteMsg(string msg)
{
SafeWinFormsThreadDelegate d = new SafeWinFormsThreadDelegate(UpdateUI);
Invoke(d,new object[] { msg });
}
private void UpdateUI(string msg)
{
this.listBoxMsg.Items.Add(msg);
}
上面这两个就懒得讲了,意思差不多,无非就是实例化,然后调用方法,你可以根据方法名来推测这个方法是做什么的.这两个方法就是为了弹出消息提示框
private void btnStart_Click(object sender,EventArgs e)
{
BluetoothRadio radio = BluetoothRadio.PrimaryRadio;
if (radio == null) 这里.判断蓝牙对象是否为空,如果为空就是没有找到蓝牙设备,然后调用这个UpdateUI方法,也就是上面我举例那个,弹出消息提示框,并且用了一个return让程序中断
{
UpdateUI("没有发现蓝牙设备或者不支持蓝牙协议栈!");
return;
}
radio.Mode = RadioMode.Discoverable; 这里就很简单咯,你看上面不是实例化了一下蓝牙对象吗?就是这句话BluetoothRadio radio = BluetoothRadio.PrimaryRadio; 它调用了蓝牙对象里面的Mode方法为它设置值.
Listener = new BluetoothListener(BluetoothService.SerialPort); 实例化蓝牙服务器端
Listener.Start(); 然后启动服务器端
listening = true; 把listening设置为true
Thread ListenerThread = new Thread(ListenLoop); 这里使用了线程
ListenerThread.Start(); 将这条线程启动
btnStop.Enabled = true; 启动以后,btnstop这个按钮就能够点击了
btnStart.Enabled = false; 启动以后,brnstart这个按钮就被禁用了,你总不可能启动两次吧
btnSend.Enabled = true; 发送按钮也可以点击使用了
UpdateUI("蓝牙服务开始!"); 弹出消息对话框 提示用户,蓝牙服务启动了
好累好累.需要了解两样东西 线程 和委托.自己了解慢慢学习哈.,觉得还行