蓝牙串行与 C# 和单声道在 Raspbian?



我一直在尝试创建一个C# Windows Forms蓝牙串行应用程序,然后在我的Raspberry Pi 3上通过Mono运行它。我尝试了以下方法:

String SelectedDevice = AvailableDevicesComboBox.SelectedItem.ToString();
BSerialPort = new SerialPort(SelectedDevice, 115200, Parity.None, 8, StopBits.One);
BSerialPort.Open();

使用 standart System.IO.Ports 库。

但是我无法打开端口,因为我得到了一个可爱的异常"对象引用未设置为对象的实例",这意味着根本没有这样的端口。我已经使用其中一个 RFCOMM 插槽将蓝牙设备与 RPi 配对,然后将其用作串行(并通过终端中的"cat"成功传输了一些字符串),但我应用程序中的结果是相同的,它实际上没有显示在 ComboBox 中。所以我决定将"32Feet-InTheHand"库一起用于Bluez和Mono。现在,当我在 Mono 中运行我的 .exe 文件时,我在终端中得到这个:

Unhandled Exception: System.TypeLoadException: 
Could not load type of field 'NameOfApp.Form1:BClient' (1) due to:
Could not load file or assembly 'InTheHand.Net.Personal,
Version=3.5.605.0, Culture=neutral, PublicKeyToken=ea38caa273134499'
or one of its dependencies. assembly:InTheHand.Net.Personal, Version=3.5.605.0, 
Culture=neutral, PublicKeyToken=ea38caa273134499 type:<unknown type> member:<none>
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: 
Could not load type of field 'NameOfApp.Form1:BClient' (1) due to: Could not load file 
or assembly 'InTheHand.Net.Personal, Version=3.5.605.0, Culture=neutral, 
PublicKeyToken=ea38caa273134499' or one of its dependencies. assembly:InTheHand.Net.Personal, 
Version=3.5.605.0, Culture=neutral, PublicKeyToken=ea38caa273134499
type:<unknown type> member:<none>

我已添加引用,并在"应用程序文件"选项卡中根据需要对其进行标记。但我一点也不擅长这个...

Linux版本: Raspbian 9 - Linux Raspberrypi 4.9.59-v7+ #1047

Visual Studio Community 2017 版本 15.5.3

单声道:单声道 JIT 编译器版本 5.4.1.6

32Feet.NET:3.5.605

好的,所以我设法解决了这个问题。事实证明,这是我的一个非常非常愚蠢的错误。我没有正确声明"BSerialPort"。以下陈述是错误的

BSerialPort = new SerialPort(SelectedDevice, 115200, Parity.None, 8, StopBits.One);

声明此类端口的正确方法如下:

SerialPort BSerialPort = new SerialPort(SelectedDevice, 115200, Parity.None, 8, StopBits.One);

声明开头的这个小"SerialPort"定义有很大的不同。

感谢您的帮助,祝您编码愉快! :)

最新更新