串口通信(unity,VS通用)

该项目可直接编译成黑窗体来运行,也可以将代码copy到unity中使用。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;

namespace PortCtrl
{
    class Program
    {
        public static SerialPort ComDevice;
        static void Main(string[] args)
        {
            if (SerialPort.GetPortNames().Length > 0)
            {
                string portName;
                using (StreamReader a = new StreamReader(@"\COMData.txt"))//读取本地txt文件,也可以自己写(插不同USB口,COM口是不一样的)
                {
                    portName = a.ReadToEnd();
                    Console.WriteLine(portName);
                }
                
                int bauRate = 9600;
                Parity parity = Parity.None;
                int dataBits = 8;
                StopBits stopBits = StopBits.One;
                OpenPorts(portName, bauRate, parity, dataBits, stopBits);

                string PwrOn = "PWR ON\r\nCR";//这个是发送的命令,可随意编辑

                byte[] sendData = Encoding.ASCII.GetBytes(PwrOn.Trim());
                SnedDatas(sendData);
                Console.Write(sendData.Length);

                //Console.ReadKey();
            }
            else
            {
                return;
            }
        }

        /// <summary>
        /// 打开串口
        /// </summary>
        /// <param name="portName">串口</param>
        /// <param name="baudRate">波特率</param>
        /// <param name="parity">效检位</param>
        /// <param name="dataBits">数据位</param>
        /// <param name="stopBits">停止位</param>
        public static void OpenPorts(string portName,int baudRate,Parity parity,int dataBits,StopBits stopBits)
        {
            ComDevice = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
            ComDevice.ReadTimeout = 400;
            try
            {
                ComDevice.Open();
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }
        }

        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="data"></param>
        public static void SnedDatas(byte[] data)
        {
            if (ComDevice.IsOpen)
            {
                try
                {
                    ComDevice.Write(data, 0, data.Length);
                }
                catch (Exception ex)
                {
                    Console.Write(ex.Message + "错误");
                }
            }
            else
            {
                Console.Write("串口未打开");
            }
        }
    }    
}

猜你喜欢

转载自blog.csdn.net/Cool_Da/article/details/84561829
今日推荐