4

だから私はUnity3Dで作業していて、C#でプログラミングしていて、SerialPortを介してBluetoothアダプターからデータを読み取ることができると聞きました。この方法を使用してPCに接続しようとしたBluetoothUSBアダプターがいくつかあります。ただし、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;
        }
    }       
}
4

2 に答える 2

2

これが私が取り組んでいるいくつかのコードであり、COMポート(私の場合はCOM9)がペアリングしたときにBluetoothデバイスと同じである限り、Bluetooth接続からスタンドアロンPCビルド(またはエディター)にデータを取得しますそれ。

ペアリングしたら、[Bluetooth設定]> [COMポート]に移動し、デバイスの名前でどのポートがあるかを確認します。COM8またはCOM9などと表示される場合があります。デバイスがペアになっていて、COMポートがコード内でBluetooth設定と同じであり、タイムアウト数とボーレートがデータの送信元のアプリケーションと同じである場合...次のようになります。あなたがそれを実行するとき、このコードから何か。これは、Bluetooth接続を介してシリアルに接続するのに役立つことを目的としています。

それが誰かを助けることを願っています。私はこれらのフォーラムを読んでたくさんの素晴らしいアドバイスを得ました;)

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();
    }

}
于 2013-05-12T00:03:06.807 に答える
1

それは可能であるはずです。bluetooth rfcomm / sppサービスは、シリアルポートをエミュレートします。Windowsの場合はCOMポート。このエミュレーションではボーレートは重要ではありません。常に可能な限り高速になります。

ただし、デバイスをペアリングして接続する必要があります。どのデバイスに接続していますか?最初にPuttyまたは何らかのターミナルアプリケーションとの接続を試みてください。

于 2013-04-25T11:46:03.490 に答える