所以我在Unity3D中工作,用C#编程,我听说可以通过SerialPort从蓝牙适配器读取数据。我有几个蓝牙USB适配器,我尝试使用这种方法在我的电脑上连接。但是,当我尝试打开SerialPort时,我收到一条错误消息,指出端口不存在。我只包含与问题相关的代码,但portI是一个字符串(“COM11”或“COM12”),PortIn是SerialPort类型。
void OnGUI() {
GUI.Label(new Rect(btnX, btnY, btnW, btnH), "PortIn = " + portI);
if(!connected) {
for (int i = 0; i<ports.Length; i++) {
if(GUI.Button(new Rect(btnX, btnY + btnH + (btnH * i), btnW, btnH), ports[i])) {
portI = ports[i];
}
}
}
if(GUI.Button(new Rect(btnX + (btnW * 2 + 20), btnY, btnW, btnH), "Connect")) {
portIn = new SerialPort(portI, 9600);
portIn.ReadTimeout = 1000;
if (!portIn.IsOpen) {
portIn.Open();
}
connected = true;
}
}
}
答案 0 :(得分:2)
以下是我正在处理的一些代码,只要COM端口(在我的情况下为COM9)与蓝牙设备相同,它就会从蓝牙连接到独立的pc构建(或在编辑器中)获取数据你配对的时候。
配对后,转到蓝牙设置&gt; COM端口并查看设备名称的端口。它可能会说COM8或COM9或其他什么。如果设备已配对且代码中的COM端口与蓝牙设置中的相同,并且超时编号和波特率与您从...发送数据的应用程序中的相同...那么您将获得运行它时来自此代码的东西。这只是为了帮助通过蓝牙连接建立连接。
希望它有所帮助。我从阅读这些论坛得到了很多很好的建议;)
using System.Collections;
using System.IO.Ports;
public class checker : MonoBehaviour {
public static SerialPort sp = new SerialPort("COM9", 9600, Parity.None, 8, StopBits.One);
public string message, message1;
public string message2;
void Start() {
OpenConnection();
}
void Update() {
message2 = sp.ReadLine();
}
void OnGUI() {
GUI.Label(new Rect(10, 180, 100, 220), "Sensor1: " + message2);
}
public void OpenConnection() {
if (sp != null)
{
if (sp.IsOpen)
{
sp.Close();
message = "Closing port, because it was already open!";
}
else
{
sp.Open();
sp.ReadTimeout = 1000;
message = "Port Opened!";
}
}
else
{
if (sp.IsOpen)
{
print("Port is already open");
}
else
{
print("Port == null");
}
}
}
void OnApplicationQuit() {
sp.Close();
}
}
答案 1 :(得分:1)
应该可以。蓝牙rfcomm / spp服务模拟串行端口。一个COM端口,如果它在Windows上。波特率在此仿真中无关紧要,它将始终尽可能快。
您需要将设备配对并连接。 你在连接什么设备?尝试首先与Putty或某个终端应用程序建立连接。