1.はじめに
Unity3Dおよびシリアル通信プログラムの開発に関する記事を書いたことを覚えています。主にUnity3Dプログラムを使用してデータをシリアルポートに送信する方法について話しました。この記事を確認できますhttps://blog.csdn.net/q764424567/article/details / 78710739しかし、
最近、友人からシリアルポートプログラムの受信方法について質問がありましたが、本日は、データの送受信やシリアル番号のバインドなど、Unityが開発したより完全なシリアル通信プログラムを紹介します。
第二に、記事のリンク
Unity3dとシリアル通信プログラムの開発、ソフトウェアとハードウェアの組み合わせ
[Unity3D日刊] Unity3dとシリアル通信プログラムの開発
3.テキスト
1.最初にUIインターフェースを
作成しましょう
2.コード
using UnityEngine;
using System.IO.Ports;
using System.Text;
using UnityEngine.UI;
public class SerialPortTest : MonoBehaviour
{
private SerialPort sp = new SerialPort();
public Text m_TextSendDataPar;
public Text m_TextShowData;
// Use this for initialization
void Start()
{
//打开串口
Init("COM1", 9600, Parity.None, 8, StopBits.None);
}
//发送数据按钮
public void Btn_SendData()
{
Data_Send(m_TextSendDataPar.ToString());
}
//初始化串口类
public void Init(string _portName,int _baudRate,Parity _parity,int dataBits,StopBits _stopbits)
{
sp = new SerialPort(_portName, _baudRate, _parity, dataBits, _stopbits);//绑定端口
sp.DataReceived += new SerialDataReceivedEventHandler(Data_Received);//订阅委托
}
//接收数据
private void Data_Received(object sender, SerialDataReceivedEventArgs e)
{
byte[] ReDatas = new byte[sp.BytesToRead];
sp.Read(ReDatas, 0, ReDatas.Length);//读取数据
this.Data_Show(ReDatas);//显示数据
}
/// <summary>
/// 显示数据
/// </summary>
/// <param name="data">字节数组</param>
public void Data_Show(byte[] data)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sb.AppendFormat("{0:x2}" + "", data[i]);
}
Debug.Log(sb.ToString());
m_TextShowData.text = sb.ToString();
}
//发送数据
public void Data_Send(string _parameter)
{
sp.Open();
sp.WriteLine(_parameter);
sp.Close();
}
}
3.パラメータのバインド
4.名前空間が見つからない問題
System.IO.Portsを1つにまとめて引用しましたが、[編集]-> [プロジェクトの設定]-> [プレーヤー]で[その他の設定]の[最適化]の[API互換性レベル]を次のように変更する前に確認できませんでした。 [.NET 2.0](デフォルトは[.NET 2.0サブセット]です。その場合にのみ見つけることができます
* PS:シングルルーパーのリマインダーをありがとう
大丈夫。。。みんなが試してみることができ
ます。そうです、データが受信されて表示され、解析方法が表示されます。友達が自分でポート番号を取得できるようにします。。