这是我第一次使用C#进行蓝牙连接。我试图通过蓝牙从C#编写的应用程序发送字节(数据类型)。
这是我的代码:
public class ConnectionManager
{
private StreamSocket socket;
private DataWriter dataWriter;
public void Initialize()
{
socket = new StreamSocket();
}
public void Terminate()
{
if (socket != null)
{
socket.Dispose();
}
}
public async void connect(HostName hostName)
{
if (socket != null)
{
await socket.ConnectAsync(hostName, "1");
dataWriter = new DataWriter(socket.OutputStream);
}
}
//sending data via Bluetooth
public void sendCommand(byte command)
{
dataWriter.WriteByte(command);
}
}
private ConnectionManager connectionManager;
// Constructor
public MainPage()
{
InitializeComponent();
connectionManager = new ConnectionManager();
}
private async void AppToDevice()
{
PeerFinder.AlternateIdentities["Bluetooth:Paired"] = "";
var pairedDevices = await PeerFinder.FindAllPeersAsync();
if (pairedDevices.Count == 0)
{
Debug.WriteLine("No devices found.");
}
else
{
foreach (var pairedDevice in pairedDevices)
{
if (pairedDevice.DisplayName == "HC-06")
{
connectionManager.connect(pairedDevice.HostName);
continue;
}
}
}
}
private void send_Click(object sender, RoutedEventArgs e)
{
byte command = Convert.ToByte(commandTextBox.Text);
connectionManager.sendCommand(command);
}
private void connect_Click(object sender, RoutedEventArgs e)
{
AppToDevice();
}
当我在commandTextBox中输入一些值(例如1或2)并点击发送按钮应用程序崩溃时。这是错误消息: TestBluetooth.DLL中发生了'System.NullReferenceException'类型的异常,但未在用户代码中处理
有人可以帮助我吗?
答案 0 :(得分:0)
听起来像是一个非常基本的错误。某些对象为null。当您尝试访问对象为null的方法或属性时,会发生这种情况。
故障排除:
如果您收到错误消息“未在用户代码中处理”,则表示抛出了异常,并且您未通过try / catch处理。我有一个关于你在那里的异步方法。
如果我玩线程,我总是在线程代码中尝试/捕获我的所有代码。我建议在AppToDevice()方法中添加try / catch。同时为所有表单事件添加它。向用户显示错误消息或处理错误并隐藏用户的错误。
检查这些:
Best Practice for Exception Handling in a Windows Forms Application?
Exception handling in threads