Unity 中控(一)

项目上有需求要控制投影机一键开和关,在主控主机上写一个中控软件控制,在网上查了一些资料,投影机都可通过串口线来控制(部分可以用网口控制),这里我用的是串口控制,首先要拿到投影机的中控代码,直接找厂商要,公司用的是松下的PT-X3270,下面是中控代码。

串口9针头
3是接收,2是发送,5是接地

波 特 率:19200bps
数 据 位:8位
停 止 位:1位
奇偶校验:无
同步方式:不同步
X参数:无
S参数:无
投影机开:02504F4E03
投影机关:02504F4603
电  脑1:024949533A52473103
电  脑2:024949533A52473203
视    频:024949533A56494403
H D M I:024949533A48443103

有了中控代码就很简单了,剩下的就是利用串口发数据了,关于串口就不多说了,网上很多。考虑到可能会控制不同型号的投影机,决定用XML来配置一些参数,要用到的重要参数也就3个,一个是波特率,不同型号的波特率可能会不一样,然后就是投影开关的串口数据了,这次用到两种型号的投影。

在这里插入图片描述
写一个存投影机数据的类

public class DataConfig
{
    public int id;
    public string portName;
    public int baudRate;
    public string openStr;
    public string closeStr;

    public DataConfig(XmlElement element)
    {
        id = int.Parse(element.GetAttribute("id"));
        portName = element.GetAttribute("portName");
        baudRate = int.Parse(element.GetAttribute("baudRate"));
        openStr = element.GetAttribute("openStr");
        closeStr = element.GetAttribute("closeStr");
    }
}

废话不多说了,下面就是xml的读取,和串口发送数据了,直接上代码。

public class PortCtrl_2 : MonoBehaviour
{
    private string portName = "COM14";
    private int baudRate = 9600;//波特率
    private Parity parity = Parity.None;//奇偶校验
    private int dataBits = 8;//数据位
    private StopBits stopBits = StopBits.One;//停止位

    private string openStr = "02504F4E03";
    private string closeStr = "02504F4603";

    private Button btn_1_open;
    private Button btn_1_close;
    private Button btn_2_open;
    private Button btn_2_close;

    private DataConfig[] datas = new DataConfig[2];
    private SerialPort[] ports = new SerialPort[2];

    private string xmlPath;

    private void Start()
    {
        xmlPath = Application.streamingAssetsPath + "/ctrl2.xml";
        LoadXml(xmlPath);
        OpenPort();

        //投影1--18
        btn_1_open = GameObject.Find("Canvas/BG/View1/Open").GetComponent

你可能感兴趣的:(Unity)