Example #1
0
        protected override bool AssyncWrite(AssyncIOEventArgs ioArgs)
        {
            if (!base.AssyncWrite(ioArgs))
            {
                return(false);
            }
            //
            TransportWriteEventArgs wrEa;

            try
            {
                m_serialPort.Write(ioArgs.Buf, ioArgs.Index, ioArgs.Count);
                string result = ioArgs.Count.ToString() + " bytes written.";
                m_IsError = false;
                wrEa      = new TransportWriteEventArgs(ioArgs.ID, false, result);
            }
            catch (Exception exWr)
            {
                m_IsError = true;
                wrEa      = new TransportWriteEventArgs(ioArgs.ID, false, exWr.Message);
            }
            //
            OnAssyncWriteResultEvent((ITransport)this, wrEa);
            //
            return(!m_IsError);
        }
Example #2
0
        protected override bool AssyncRead(AssyncIOEventArgs ioArgs)
        {
            if (!base.AssyncRead(ioArgs))
            {
                return(false);
            }
            //
            TransportReadEventArgs rdEa;

            try
            {
                byte[] readBuffer    = new byte[ioArgs.Count];
                int    uiTransmitted = m_serialPort.Read(readBuffer, 0, ioArgs.Count);
                byte[] rdBuf         = readBuffer;
                string result        = "Чтение прошло успешно";
                if (uiTransmitted != ioArgs.Count)
                {
                    rdBuf = new byte[uiTransmitted];
                    Array.Copy(readBuffer, 0, rdBuf, 0, uiTransmitted);
                    result = "Прочитано не полностью";
                }
                m_IsError = false;
                rdEa      = new TransportReadEventArgs(ioArgs.ID, rdBuf, true, result);
            }
            catch (Exception exRd)
            {
                m_IsError = true;
                rdEa      = new TransportReadEventArgs(ioArgs.ID, null, false, exRd.Message);
            }
            //
            OnAssyncReadResultEvent((ITransport)this, rdEa);
            //
            return(!m_IsError);
            //return false;
        }