コード例 #1
0
        /// <summary>
        /// Обработать событие приёма данных по последовательному порту
        /// </summary>
        protected void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            KPLogic targetKP = null;

            if (!ExecProcUnreadIncomingReq(kpList[0], serialConn, ref targetKP))
            {
                serialConn.DiscardInBuffer();
            }
        }
コード例 #2
0
ファイル: CommSerialLogic.cs プロジェクト: zuoyangithub/scada
        /// <summary>
        /// Listens to the serial port for incoming data.
        /// </summary>
        /// <remarks>This methods works in a separate thread. Is used in Mono.</remarks>
        protected void ListenSerialPort()
        {
            byte[] buffer      = new byte[SlaveInBufLen];
            int    readCnt     = 0;
            int    prevReadCnt = 0;

            while (!terminated)
            {
                try
                {
                    serialConn.SerialPort.ReadTimeout = 0;

                    try { readCnt += serialConn.SerialPort.Read(buffer, readCnt, SlaveInBufLen - readCnt); }
                    catch (TimeoutException) { }

                    Thread.Sleep(ReadIntervalTimeout);

                    if (prevReadCnt == readCnt && readCnt > 0 || readCnt == SlaveInBufLen)
                    {
                        KPLogic targetKP = null;
                        if (!ExecProcIncomingReq(firstKP, buffer, 0, readCnt, ref targetKP))
                        {
                            serialConn.DiscardInBuffer();
                        }
                        readCnt = 0;
                    }

                    prevReadCnt = readCnt;
                }
                catch (Exception ex)
                {
                    WriteToLog(string.Format(Localization.UseRussian ?
                                             "Ошибка при прослушивании последовательного порта: {0}" :
                                             "Error listening to the serial port: {0}", ex.Message));
                }
            }
        }