public void Receive() { try { BeforeReceive?.Invoke(this, null); _buffer = new byte[_maxlengthofdata]; int count = _socket.Receive(_buffer, _maxlengthofdata, SocketFlags.None); var m = GetMessage(_buffer, count); if (m.Type == MessageType.BigData) { var arr = m.Content.Split(';'); int n = int.Parse(arr[0]); int total = int.Parse(arr[1]); byte[] buffer = new byte[n * _maxlengthofdata]; for (int i = 0; i < n; i++) { _socket.Receive(_buffer, _maxlengthofdata, SocketFlags.None); _buffer.CopyTo(buffer, i * _maxlengthofdata); } m = GetMessage(buffer, total); } if (m.Type == MessageType.End) { Response(m); _socket.Close(); } else if (Response(m)) { Receive(); } } catch { } }
public static void UnregisterScannerActivity() { try { ElContext?.UnregisterReceiver(Receiver); } catch { } AfterReceive?.GetInvocationList().ToList().ForEach(x => AfterReceive -= (EventHandler <ReceiveEventArgs>)x); BeforeReceive?.GetInvocationList().ToList().ForEach(x => BeforeReceive -= (EventHandler)x); ElContext = null; ARP = null; }
//public string ReceivedData { get; set; } //public event EventHandler AfterReceive; //public event EventHandler BeforeReceive; public override void OnReceive(Context context, Intent intent) { try { if (IsBusy) { return; } IsBusy = true; BeforeReceive?.Invoke(context, new EventArgs()); string _scanAll = cDataWedge.HandleDecodeData(intent); string _pattern = @"(.*)\|(Scanner|MSR)\|(.*)\|(\d+)"; var _matches = Regex.Match(_scanAll, _pattern); string _scan = _matches.Groups[1].ToString(); try { AfterReceive?.Invoke(context, new ReceiveEventArgs() { ReceivedData = _scan, Silent = silent }); } catch (Exception ex) { if (!silent) { cSounds.Error(context); } Toast.MakeText(context, string.Format("Error in postprocess: {0}", ex.Message), ToastLength.Long).Show(); _scan = ""; IsBusy = false; return; } if (_scan == "") { if (!silent) { cSounds.Error(context); } Toast.MakeText(context, "Please enter valid data", ToastLength.Long).Show(); IsBusy = false; return; } IsBusy = false; } catch //(Exception ex) { IsBusy = false; } }
public void BegineReceive() { BeforeReceive?.Invoke(this, null); _buffer = new byte[_maxlengthofdata]; _socket.BeginReceive(_buffer, 0, _maxlengthofdata, SocketFlags.None, EndReceive, null); }