You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
4.1 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using CommonFunc.Tools;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XGL.Tools
{
internal class SerialHelper
{
public SerialPort serialPort = new SerialPort(Utils.GetAppSetting("SerialPort"));
public SerialHelper()
{
//serialPort.PortName = "COM5";
serialPort.BaudRate = 115200;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Parity = Parity.None;
}
/// <summary>
/// 串口启动
/// </summary>
public void ComOn()
{
if (!serialPort.IsOpen)
{
serialPort.Open();
}
}
/// <summary>
/// 串口关闭
/// </summary>
public void ComOff()
{
if (serialPort.IsOpen)
{
serialPort.Close();
}
}
/// <summary>
/// DO1设备启动红灯
/// </summary>
public void redLightOn()
{
DOControl(DOName.Red, DOOnOff.On);
}
/// <summary>
/// DO2设备启动绿灯
/// </summary>
public void greenLightOn()
{
DOControl(DOName.Green, DOOnOff.On);
}
/// <summary>
/// DO3设备启动黄灯
/// </summary>
public void yellowLightOn()
{
DOControl(DOName.Yellow, DOOnOff.On);
}
/// <summary>
/// DO1设备关闭红灯
/// </summary>
public void redLightOff()
{
DOControl(DOName.Red, DOOnOff.Off);
}
/// <summary>
/// DO2设备关闭绿灯
/// </summary>
public void greenLightOff()
{
DOControl(DOName.Green, DOOnOff.Off);
}
/// <summary>
/// DO3设备关闭黄灯
/// </summary>
public void yellowLightOff()
{
DOControl(DOName.Yellow, DOOnOff.Off);
}
/// <summary>
/// DO4设备开启蜂鸣器
/// </summary>
public void buzzerOn()
{
DOControl(DOName.Buzzer, DOOnOff.On);
}
/// <summary>
/// DO4设备关闭蜂鸣器
/// </summary>
public void buzzerOff()
{
DOControl(DOName.Buzzer, DOOnOff.Off);
}
/// <summary>
/// 重置串口和DO状态
/// </summary>
public void Reset()
{
SetOff();
ComOff();
}
/// <summary>
/// 重置DO状态
/// </summary>
public void SetOff()
{
foreach (DOName dOName in Enum.GetValues(typeof(DOName)))
{
DOControl(dOName, DOOnOff.Off);
}
}
/// <summary>
/// DO启停控制
/// </summary>
/// <param name="dOName">DegitalOut接口名称</param>
/// <param name="dOOnOff">启停状态</param>
public void DOControl(DOName dOName, DOOnOff dOOnOff)
{
//ComOn();
serialPort.Write(new byte[] { 0xE3, 0x01, 0x09, (byte)dOName, (byte)dOOnOff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0, 12);
}
/// <summary>
/// 文本框传输数据控制COM5串口
/// </summary>
public void DOTestSend(string str)
{
//ComOn();
string[] strArray = str.Split(' ');
byte[] bytes = new byte[strArray.Length];
for (int i = 0; i < bytes.Length; i++)
{
bytes[i] = Convert.ToByte(strArray[i], 16);
}
serialPort.Write(bytes, 0, bytes.Length);
}
}
public enum DOName
{
Red = 0x01,
Green = 0x02,
Yellow = 0x03,
Buzzer = 0x04,
dO_5 = 0x05,
dO_6 = 0x06,
dO_7 = 0x07,
dO_8 = 0x08,
}
public enum DOOnOff
{
Off = 0x00,
On = 0x01
}
}