示例#1
0
        private void PortOnDataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            var cnt   = _port.BytesToRead;
            var bytes = new byte[cnt];

            _port.Read(bytes, 0, cnt);

            var response = Encoding.ASCII.GetString(bytes);

            // send if anyone is listening
            DataReceived?.Invoke(null, new DataReceivedEventArgs(response));

            if (_downloadingImage)
            {
                // caught after SI is sent
                _port.DataReceived -= PortOnDataReceived;
                RequestImage();
            }

            Console.WriteLine(response);

            var pattern = @"T(?<routing>[a-zA-Z0-9]*)T(?<account>[a-zA-Z0-9]*)A(?<checknumber>[a-zA-Z0-9]*)S?";

            if (Regex.IsMatch(response, pattern))
            {
                var m = Regex.Match(response, pattern);

                _check = new ScannedCheck
                {
                    CheckNumber   = m.Groups["checknumber"].Value,
                    AccountNumber = m.Groups["account"].Value,
                    RoutingNumber = m.Groups["routing"].Value
                };

                _file = new List <byte>();

                // received an image
                _downloadingImage = true;

                // save image
                SendRequest("SI");
            }
        }
 public CheckScannedEventArgs(ScannedCheck check)
 {
     Check = check;
 }