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; } }
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; } }
public abstract void OnIncommingData(DataReceiveRs232 obj);