Esempio n. 1
0
        public override void OnIncommingData(DataReceiveRs232 obj)
        {
            //Console.WriteLine(obj.Port.BytesToRead.ToString());
            try
            {
                //Nếu trạng thái =0 và có ký tự ENQ kiểm tra ký tự ENQ
                byte[] bytesdata  = obj.Data;
                string stringdata = Encoding.ASCII.GetString(bytesdata);
                //System.Threading.Thread.Sleep(5);
                //if (_state.Equals(0) && stringdata.EndsWith(DeviceHelper.ENQ.ToString()))
                if (stringdata.EndsWith(DeviceHelper.ENQ.ToString()))
                {
                    //Gửi lại tín hiệu ACK tới thiết bị
                    obj.Port.Write(DeviceHelper.ACK.ToString());

                    //Gán trạng thái = 1
                    _state = 1;
                    Console.WriteLine("Accept ENQ");
                } //Kết thúc kiểm tra ENQ

                //Nếu trạng thái truyền dữ liệu đã được thiết lập
                else if (_state.Equals(1))
                {
                    //Nếu chuỗi ký tự kết thúc bằng CRLF
                    if (stringdata.EndsWith(DeviceHelper.CRLF))
                    {
                        //Kiểm tra CheckSum và lấy ra chuỗi dữ liệu
                        string dataAfterCheck = GetStringAfterCheckSum(stringdata);

                        //Nếu chuỗi trả bị lỗi gửi thông báo gửi lại
                        //Ngược lại bổ sung thêm dữ liệu đã xử lý vào bộ đệm và gửi tín hiệu thông báo thành công
                        if (dataAfterCheck.Equals(_errorString))
                        {
                            obj.Port.Write(DeviceHelper.NAK.ToString());
                        }
                        else
                        {
                            File.AppendAllText(_fileLog, dataAfterCheck);
                            obj.Port.Write(DeviceHelper.ACK.ToString());
                        }
                    }
                    //Nếu nhận chuỗi EOT thì phát sinh sự kiện kết thúc nhận dữ liệu
                    else if (stringdata.Equals(DeviceHelper.EOT.ToString()))
                    {
                        obj.Port.Write(DeviceHelper.ACK.ToString());
                        _state = 0;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 2
0
        public override void OnIncommingData(DataReceiveRs232 obj)
        {
            try
            {
                string     deviceConnector = obj.Port.PortName;
                BaseDevice device          = GetDevice(deviceConnector);

                //Nếu không tồn tại thiết bị nào ghi lại log.
                if (device == null)
                {
                    Log.Debug("Could not load any devcie on {0}", deviceConnector);
                }
                else
                {
                    //Nếu tồn tại thiết bị thì phát sinh sự kiện nhận được dữ liệu
                    device.RaiseEventIncommingData(obj);
                }
            }
            catch (Exception ex)
            {
                Log.Error("Error in 'OnIncommingData' method. Error Message:{0}", ex);
                throw ex;
            }
        }
Esempio n. 3
0
 public abstract void OnIncommingData(DataReceiveRs232 obj);