/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
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); }
/// <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); }