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); } }
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); }