示例#1
0
        /// <summary>
        /// 写入串口数据
        /// </summary>
        /// <param name="writeBytes"></param>
        /// <param name="visaAddress"></param>
        /// <returns></returns>
        public static ErrMsg WriteData(byte[] writeBytes, string visaAddress)
        {
            ErrMsg ret = new ErrMsg();

            ret.ErrorCode = -1;
            ret.Result    = true;
            ret.Msg       = "";

            try
            {
                if (serialSession == null || serialSession.ResourceName != visaAddress)
                {
                    serialSession = (SerialSession)ResourceManager.GetLocalManager().Open(visaAddress, AccessModes.NoLock, 0);
                }
                ret = SetSerial(serialSession, ret);
                ret = FlushIO(serialSession, ret);
                ret = SetIOSize(serialSession, ret);
                ret = WriteIO(serialSession, writeBytes, ret);
            }
            catch (Exception e)
            {
                ret.ErrorCode = e.HResult;
                ret.Msg       = e.Message;
                ret.Result    = false;
            }



            //serialSession.Dispose();
            return(ret);
        }
示例#2
0
        /// <summary>
        /// 设置串口visa参数
        /// </summary>
        /// <param name="serialSession"></param>
        /// <param name="inErrMsg"></param>
        /// <returns></returns>
        private static ErrMsg SetSerial(SerialSession serialSession, ErrMsg inErrMsg)
        {
            if (!inErrMsg.Result)
            {
                return(inErrMsg);
            }


            ErrMsg ret = new ErrMsg();

            ret.ErrorCode = -1;
            ret.Result    = true;
            ret.Msg       = "";
            try
            {
                serialSession.Timeout                     = 1000;
                serialSession.BaudRate                    = 115200;
                serialSession.DataBits                    = 8;
                serialSession.StopBits                    = StopBitType.One;
                serialSession.FlowControl                 = FlowControlTypes.None;
                serialSession.Parity                      = Parity.None;
                serialSession.TerminationCharacter        = 0xA;
                serialSession.TerminationCharacterEnabled = true;
            }
            catch (Exception e)
            {
                ret.ErrorCode = 010010;
                ret.Result    = false;
                ret.Msg       = e.Message + e.Source + e.StackTrace;
            }

            return(ret);
        }
示例#3
0
        /// <summary>
        /// 清空IO缓冲区
        /// </summary>
        /// <param name="serialSession"></param>
        /// <param name="inErrMsg"></param>
        /// <returns></returns>
        private static ErrMsg FlushIO(SerialSession serialSession, ErrMsg inErrMsg)
        {
            if (!inErrMsg.Result)
            {
                return(inErrMsg);
            }

            ErrMsg ret = new ErrMsg();

            ret.ErrorCode = -1;
            ret.Result    = true;
            ret.Msg       = "";
            try
            {
                serialSession.Flush(BufferTypes.InBuffer, true);
            }
            catch (Exception e)
            {
                ret.ErrorCode = 010002;
                ret.Result    = false;
                ret.Msg       = e.Message;
            }

            return(ret);
        }
示例#4
0
        /// <summary>
        /// 写入串口数据
        /// </summary>
        /// <param name="serialSession"></param>
        /// <param name="writeBytes"></param>
        /// <param name="inErrMsg"></param>
        /// <returns></returns>
        private static ErrMsg WriteIO(SerialSession serialSession, byte[] writeBytes, ErrMsg inErrMsg)
        {
            if (!inErrMsg.Result)
            {
                return(inErrMsg);
            }

            ErrMsg ret = new ErrMsg();

            ret.ErrorCode = -1;
            ret.Result    = true;
            ret.Msg       = "";
            try
            {
                serialSession.Write(writeBytes);
            }
            catch (Exception e)
            {
                ret.ErrorCode = 010004;
                ret.Result    = false;
                ret.Msg       = e.Message;
            }

            return(ret);
        }
示例#5
0
        /// <summary>
        /// 开启由对应开关组的串口指令指定的开关
        /// </summary>
        /// <param name="switchNum">要写入的byte[]数组</param>
        /// <param name="errMsg">异常信息</param>
        /// <returns></returns>
        public bool Open(byte[] switchNum, ref string errMsg)
        {
            byte[] writeBytes = SwitchUtil.GetMcuFormatBytes(switchNum);
            SpConnect();
            ErrMsg ret = WriteData(writeBytes);

            errMsg = ret.Msg;
            return(ret.Result);
        }
示例#6
0
        /// <summary>
        /// 开启开关矩阵配置中的指定行或列的开关,由构造函数来决定打开一行或一列
        /// </summary>
        /// <param name="switchIndex">行/列索引</param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool Open(int switchIndex, ref string errMsg)
        {
            // CloseAll(ref errMsg);
            byte[] writeBytes = SwitchUtil.GetMcuFormatBytes(this._switchArrays, switchIndex);
            SpConnect();
            ErrMsg ret = WriteData(writeBytes);

            errMsg = ret.Msg;
            return(ret.Result);
        }
示例#7
0
        /// <summary>
        /// 开启由对应开关组的串口指令指定的开关
        /// </summary>
        /// <param name="switchNum">要写入的byte[]数组</param>
        /// <param name="errMsg">异常信息</param>
        /// <returns></returns>
        public bool Open(byte[] switchNum, ref string errMsg)
        {
            byte[] writeBytes = SwitchUtil.GetMcuFormatBytes(switchNum);
            ErrMsg retErrMsg  = VisaSerial.WriteData(writeBytes, _visaAddress);

            errMsg = retErrMsg.Msg + retErrMsg.ErrorCode;
            if (retErrMsg.Result)
            {
                Thread.Sleep(_responseTime);
            }
            return(retErrMsg.Result);
        }
示例#8
0
        /// <summary>
        /// 开启开关矩阵配置中的指定行或列的开关,由构造函数来决定打开一行或一列
        /// </summary>
        /// <param name="switchIndex">行/列索引</param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        public bool Open(int switchIndex, ref string errMsg)
        {
            // CloseAll(ref errMsg);
            byte[] writeBytes = SwitchUtil.GetMcuFormatBytes(this._switchArrays, switchIndex);
            ErrMsg retErrMsg  = VisaSerial.WriteData(writeBytes, _visaAddress);

            errMsg = retErrMsg.Msg + retErrMsg.ErrorCode;
            if (retErrMsg.Result)
            {
                Thread.Sleep(_responseTime);
            }
            return(retErrMsg.Result);
        }
示例#9
0
        /// <summary>
        /// 关闭所有通道
        /// </summary>
        /// <param name="errMsg">错误信息</param>
        /// <returns></returns>
        public bool CloseAll(ref string errMsg)
        {
            byte[] closeAllBytes =
            {
                0xEE,
                0x9,
                0x2,
                0x80,
                0x8B,
                0xFF,
                0xFC,
                0xFF,
                0xFF
            };
            ErrMsg retErrMsg = VisaSerial.WriteData(closeAllBytes, _visaAddress);

            errMsg = retErrMsg.Msg;
            return(retErrMsg.Result);
        }
示例#10
0
        /// <summary>
        /// 关闭所有通道
        /// </summary>
        /// <param name="errMsg">错误信息</param>
        /// <returns></returns>
        public bool CloseAll(ref string errMsg)
        {
            byte[] closeAllBytes =
            {
                0xEE,
                0x9,
                0x2,
                0x80,
                0x8B,
                0xFF,
                0xFC,
                0xFF,
                0xFF
            };
            ErrMsg ret = WriteData(closeAllBytes);

            errMsg = ret.Msg;
            return(ret.Result);
        }
示例#11
0
        private ErrMsg WriteData(byte[] buffer)
        {
            ErrMsg ret = new ErrMsg();

            ret.ErrorCode = -1;
            ret.Result    = true;
            ret.Msg       = "";
            try
            {
                _serialPort.Write(buffer, 0, buffer.Length);
            }
            catch (Exception e)
            {
                ret.ErrorCode = e.HResult;
                ret.Msg       = e.Message;
                ret.Result    = false;
            }

            return(ret);
        }
示例#12
0
        /// <summary>
        /// 设置IO缓冲区
        /// </summary>
        /// <param name="serialSession"></param>
        /// <param name="inErrMsg"></param>
        /// <returns></returns>
        private static ErrMsg SetIOSize(SerialSession serialSession, ErrMsg inErrMsg)
        {
            if (!inErrMsg.Result)
            {
                return(inErrMsg);
            }
            ErrMsg ret = new ErrMsg();

            ret.ErrorCode = -1;
            ret.Result    = true;
            ret.Msg       = "";
            try
            {
                serialSession.SetBufferSize(BufferTypes.InBuffer, 4096);
            }
            catch (Exception e)
            {
                ret.ErrorCode = 010003;
                ret.Result    = false;
                ret.Msg       = e.Message;
            }

            return(ret);
        }