我想在ASP.NET2.0中使用SERIALPORT类来操作串口,但无法实现,请各位大侠给点思路或全程
项目已因此停滞三天了!

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;
    using System.IO.Ports;namespace ConsoleApplication1
    {
        class CommPort
        {
            protected SerialPort commPort = new SerialPort();        private readonly StringBuilder strReceive = new StringBuilder();           //   接收到数据的缓冲区         #region   CommPort   构造函数        ///   <summary > 
            ///   CommPort   构造函数 
            ///   </summary > 
            public CommPort()
            {
                //   初始化串口   
                commPort.BaudRate = 1200;
                commPort.Parity = Parity.Even;
                commPort.Encoding = Encoding.UTF8;            //   串口的数据接收事件 
                commPort.DataReceived += commPort_DataReceived;
            }        #endregion        #region   commPort_DataReceived   数据抵达        ///   <summary > 
            ///   commPort_DataReceived   数据抵达 
            ///   </summary > 
            ///   <param   name= "sender " > </param > 
            ///   <param   name= "e " > </param > 
            void commPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                try
                {
                    #region   接收数据                //   接收缓冲区中数据的字节数 
                    int int_Len = commPort.BytesToRead;                //   接收数据 
                    byte[] bytes = new byte[int_Len];
                    commPort.Read(bytes, 0, int_Len);                #endregion                #region   将数据存入缓冲                //   将数据存入字符串缓冲区中 
                    for (int i = 0; i < bytes.Length; i++)
                    {
                        strReceive.Append(bytes[i] + "   ");
                    }                #endregion            }
                catch (Exception ex)
                {            }
            }        #endregion        #region   IsOpen   测试串口是否已经打开        ///   <summary > 
            ///   测试串口是否已经打开 
            ///   </summary > 
            ///   <returns > </returns > 
            public bool IsOpen()
            {
                try
                {
                    if (commPort == null) return false;                return commPort.IsOpen;
                }
                catch (Exception ex)
                {
                }            return false;
            }        #endregion        #region   Open   打开串口        ///   <summary > 
            ///   打开串口 
            ///   </summary > 
            ///   <returns > </returns > 
            public bool Open()
            {
                try
                {
                    if (!commPort.IsOpen)
                    {
                        commPort.Open();
                    }                return true;
                }
                catch (Exception ex)
                {
                    return false;
                }
            }        #endregion        #region   Close   关闭串口        ///   <summary > 
            ///   关闭串口 
            ///   </summary > 
            ///   <returns > </returns > 
            public bool Close()
            {
                try
                {
                    if (commPort.IsOpen)
                    {
                        commPort.Close();
                    }                return true;
                }
                catch (Exception ex)
                {
                    return false;
                }
            }        #endregion        #region   Write   往串口中写数据        ///   <summary > 
            ///   往串口中写数据 
            ///   </summary > 
            public void Write(byte[] bytes)
            {
                try
                {
                    if (commPort.IsOpen)
                    {
                        commPort.Write(bytes, 0, bytes.Length);
                    }
                    else
                    {
                        Open();
                        commPort.Write(bytes, 0, bytes.Length);
                    }
                }
                catch (Exception ex)
                {
                }
            }        #endregion        }
    }