该项目可直接编译成黑窗体来运行,也可以将代码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("串口未打开");
}
}
}
}