Newer
Older
IRIS_REFACTOR / irisDoor / DoorSystem.cs
yanxiaowei on 11 Aug 2020 3 KB first commit
using System;
using System.Linq;
using System.IO.Ports;
using System.Threading;
using System.Data.Odbc;
using System.Data;
using System.Reflection;
using System.Windows.Forms;
using ImageFormatter;
using irisHelper;
using MySql.Data.MySqlClient;
using irisDataBase;

namespace IrisDoor
{
    public class DoorSystem
    {
        private string[] serialPorts;
        private static SerialPort _serialPort;

        public DoorSystem() {
            if (ConfigHelper.GetAppConfig("doorSystemEnable") == "true")
            {
                //连接串口
                string serialPort = ConfigHelper.GetAppConfig("serialPort");
                if (connectSerialPort(serialPort) == -1)
                {
                    MessageBox.Show("Connect to serial port failed!");
                    Application.Exit();//连接失败,关闭程序
                }
            }
        }

        /// <summary>
        /// 按名称连接串口
        /// </summary>
        /// <param name="sPort"></param>
        public int connectSerialPort(string sPort)
        {
            try
            {
                serialPorts = SerialPort.GetPortNames();
                if (serialPorts.Count() > 0)
                {
                    for (int i = 0; i < serialPorts.Count(); i++)
                    {
                        if (serialPorts[i] == sPort)
                        {
                            //新建串口对象
                            _serialPort = new SerialPort();

                            //设置串口参数 
                            _serialPort.PortName = serialPorts[i];
                            _serialPort.BaudRate = 9600;
                            _serialPort.Parity = Parity.None;
                            _serialPort.DataBits = 8;
                            _serialPort.StopBits = StopBits.One;
                            _serialPort.Handshake = Handshake.None;
                            _serialPort.ReadTimeout = 500;
                            _serialPort.WriteTimeout = 500;

                            //打开串口
                            _serialPort.Open();
                            
                            i = 9999;
                            return 0;
                        }
                    }
                    return -1;
                }
                else
                {
                    MessageBox.Show("no serial,closeing!");
                    return -1;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("serial connection failed:" + ex.Message);
                return -1;
            }
        }

        //给门发送开门信号
        public static void open()
        {
            string cardIDstr = "01 05 00 00 FF 00 8C 3A";
            byte[] cardID = BitmapFactory.StrToHexBytes(cardIDstr);
            _serialPort.Write(cardID, 0, cardID.Length);

            int sleepTime=Convert.ToInt32(ConfigHelper.GetAppConfig("sleepTime").ToString());
            Thread.Sleep(sleepTime);

            cardIDstr = "01 05 00 00 00 00 CD CA ";
            cardID = BitmapFactory.StrToHexBytes(cardIDstr);
            _serialPort.Write(cardID, 0, cardID.Length);

            _serialPort.DiscardOutBuffer();
        }
        
        
    }
}