Я работаю над приложением для чтения EMV-карты с использованием C#. Я использую Winscard.dll. и я установил соединение. Выбрал читателя - подключитесь к карте и получите ATR. , но при отправке comand Slecetd Application usin AID list, я не получил никаких данных, я ожидал получить SW1SW2 как 61XX (где XX длина данных) Я отправил команду как 00A4040007A0000000031010.Выберите команду AID не работает
Код:
// Private/Internal Types
[StructLayout(LayoutKind.Sequential)]
internal class SCARD_IO_REQUEST
{
internal uint dwProtocol;
internal int cbPciLength;
public SCARD_IO_REQUEST()
{
dwProtocol = 0;
}
}
public static IntPtr GetPciT0()
{
IntPtr handle = LoadLibrary("Winscard.dll");
IntPtr pci = GetProcAddress(handle, "g_rgSCardT0Pci");
FreeLibrary(handle);
return pci;
}
// public static byte[] GetSendBuffer(string cla, string ins , string p1 ,string p2 , string lc,string body)
public byte[] GetSendBuffer()
{
// Select application 00A4040007A0000000031010
string cla = "00";
string ins = "A4";
string p1 = "04";
string p2 = "00";
string lc = "07";
string body = "A0000000031010";
string script = String.Format("{0}{1}{2}{3}{4}{5}", cla, ins, p1, p2,
lc, body);
byte[] buffer = new byte[ script.Length/2];
//Console.WriteLine("buffer {0}", buffer);
for (int i = 0; i < script.Length; i = i + 2)
{
string temp = script.Substring(i, 2);
buffer[i/2] = byte.Parse(temp,
System.Globalization.NumberStyles.HexNumber);
}
return buffer;
}
// ================================= ==== public void ScardTransmit() { SCARD_IO_REQUEST ioRecv = новый SCARD_IO_REQUEST(); byte [] pbRecvBuffer = новый байт [255]; int pcbRecvLength = 255; byte [] pbsendBuffer = this.GetSendBuffer();
int pbsendBufLen = pbsendBuffer.Length;
ioRecv.cbPciLength = ioRecv.ToString().Length;
IntPtr SCARD_PCI_T0 = GetPciT0();
uint uintret = SCardTransmit(pCardHandle, ref ioRecv, pbsendBuffer,
pbsendBufLen, SCARD_PCI_T0, pbRecvBuffer, ref pcbRecvLength);
}
Слишком много кода. Обрежьте это до минимального фрагмента, который иллюстрирует проблему, а затем описал проблему и задал ваш вопрос. – Timwi
Спасибо, я включил onlt функции имеют проблему, пожалуйста, проверьте функцию SCardTransmit, поскольку она не получала никаких данных. Rsult of select AID comand –