/// <summary> /// Direct write to hardware USB pipes (low level). Not recommended for application use if you do not know what you do. /// </summary> /// <param name="overlapped"></param> /// <returns></returns> public virtual string RKSWritePipe(NativeCanEntryPoints.LPOVERLAPPED pOverlapped) { const int capacity = 128; var pucBuffer = new StringBuilder(capacity); var pdwLengthTransferred = new int(); Procedure <NativeCanEntryPoints.RKSWritePipe>(NativeCanEntryPoints._RKSWritePipe)(pucBuffer, capacity, ref pdwLengthTransferred, ref pOverlapped); return(pucBuffer.ToString()); }
/// <summary> /// Direct read from hardware USB pipes (low level). Not recommended for application use if you do not know what you do. /// </summary> /// <returns></returns> public virtual string RKSReadPipe(out NativeCanEntryPoints.LPOVERLAPPED pOverlapped) { const int capacity = 128; var sb = new StringBuilder(capacity); pOverlapped = new NativeCanEntryPoints.LPOVERLAPPED(); int pdwLengthTransferred = new int(); var result = Procedure <NativeCanEntryPoints.RKSReadPipe>(NativeCanEntryPoints._RKSReadPipe)(sb, capacity, ref pdwLengthTransferred, ref pOverlapped); if (!result) { throw new Exception(); } return(sb.ToString().Substring(0, pdwLengthTransferred)); }