Esempio n. 1
0
        public MagneticCardReadResponse(TrackFlags TracksAvailable, string TrackData)
        {
            int index = 0;

            if ((TracksAvailable & TrackFlags.Track2) > 0)
            {
                Track2 = TrackData.Substring(index, 40);
                index += 40;
            }
            if ((TracksAvailable & TrackFlags.Track1) > 0)
            {
                Track1 = TrackData.Substring(index, 80);
                index += 80;
            }
            if ((TracksAvailable & TrackFlags.Track3) > 0)
            {
                Track3 = TrackData.Substring(index, 80);
            }
        }
Esempio n. 2
0
        public static SlaveCommandResponse ResponseHelper(EFTSlaveResponse Response)
        {
            string response = Response.Response;
            int    index    = 0;

            if (response[index++] != '*')
            {
                return new SlaveCommandResponse()
                       {
                           ResponseCode = "FF", ResponseText = "Invalid response"
                       }
            }
            ;
            char        applicationID = response[index++];
            char        deviceCode    = response[index++];
            CommandCode eventCode     = (CommandCode)response[index++];
            string      responseCode  = response.Substring(index, 2); index += 2;

            SlaveCommandResponse commandResponse = new SlaveCommandResponse();

            if (response.Length > index)
            {
                int length = 0;

                string data = "";
                try
                {
                    length = int.Parse(response.Substring(index, 3));
                    index += 3;
                    data   = response.Substring(index, length);
                    index += length;
                }
                catch
                {
                    return(new SlaveCommandResponse()
                    {
                        ResponseCode = "FF", ResponseText = "Invalid response"
                    });
                }

                if (data.Length > 0)
                {
                    int dataIndex = 0;
                    switch (eventCode)
                    {
                    case CommandCode.Status:
                        commandResponse = new StatusResponse();
                        break;

                    case CommandCode.MagneticCardRead:
                        TrackFlags tracksAvailable = (TrackFlags)(data[dataIndex++] - '0');
                        int        trackDataLength = 0;
                        if ((tracksAvailable & TrackFlags.Track2) > 0)
                        {
                            trackDataLength += 40;
                        }
                        if ((tracksAvailable & TrackFlags.Track1) > 0)
                        {
                            trackDataLength += 80;
                        }
                        if ((tracksAvailable & TrackFlags.Track3) > 0)
                        {
                            trackDataLength += 80;
                        }
                        if (data.Length - dataIndex < trackDataLength)
                        {
                            return new SlaveCommandResponse()
                                   {
                                       ResponseCode = "FF", ResponseText = "Invalid response"
                                   }
                        }
                        ;
                        commandResponse = new MagneticCardReadResponse(tracksAvailable, data.Substring(dataIndex, trackDataLength));
                        break;

                    case CommandCode.Key:
                        commandResponse = new KeyResponse(data[dataIndex++]);
                        break;

                    case CommandCode.Input:
                        commandResponse = new InputResponse(data);
                        break;
                    }
                    commandResponse.ResponseString = data;
                }
            }
            commandResponse.ApplicationID = applicationID;
            commandResponse.DeviceCode    = deviceCode;
            commandResponse.EventCode     = eventCode;
            commandResponse.ResponseCode  = responseCode;
            commandResponse.ResponseText  = GetResponseText(responseCode);
            return(commandResponse);
        }