| Autor |
Beitrag |
oOXTCOo
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 17:23
hallo!
folgendes problem...
ich verwende für die steuerung meines smartcard readers und dessen smartcard die komponente von noobi. die version die er auf seiner website hat lässt sich super installieren und ist dann sichtbar unter "more" pcsc installiert.
das problem ist, das diese smartcard komponente veraltet ist und nicht mit meiner karte zusammen funktioniert. er hat mir eine neue komonente gesendet, die meine karte auch unterstützt. das problem ist, das diese komonente keine sichtbare ist. sie lässt sich auch so nicht installieren. er meinte ich muss die alte einfach deinstallieren und die neuen dateien in meinen suchpfad geben.
genau das habe ich getan:
alte deinstalliert.
neue dateien sind nun im suchpfand unter delphi im ./lib verzeichnis...
doch ich bekomme es nicht zum laufen...
kann mir jemand helfen?
ich hänge die datei mal an die ich bekommen habe...
(ist die aktuellste version)
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Einloggen, um Attachments anzusehen!
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 14.06.09 17:27
Wenn ich das richtig sehe, ist das keine Komponente, sondern lediglich eine Klasse. Das ist aber auch kein Beinbruch, da Du sie zur Laufzeit erstellen und dann damit arbeiten kannst. Dazu musst Du nur die entsprechende Unit einbinden.
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 17:30
DeddyH hat folgendes geschrieben : | | Wenn ich das richtig sehe, ist das keine Komponente, sondern lediglich eine Klasse. Das ist aber auch kein Beinbruch, da Du sie zur Laufzeit erstellen und dann damit arbeiten kannst. Dazu musst Du nur die entsprechende Unit einbinden. |
achsoo.
aber im lib verzeichnis bzw. suchpfad sind die dateien dann schon richitg plaziert?
ich müsste ja einfach nur die unit dem projekt hinzufügen oder?
Zuletzt bearbeitet von oOXTCOo am So 14.06.09 17:31, insgesamt 1-mal bearbeitet
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 14.06.09 17:31
Sicher, Delphi muss sie ja nur finden können.
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 17:31
DeddyH hat folgendes geschrieben : | | Sicher, Delphi muss sie ja nur finden können. |
okay danke dann versuche ichs mal so...
EDIT://
KLASSE TPSCConnector NICHT GEFUDNEN...
Zuletzt bearbeitet von oOXTCOo am So 14.06.09 17:35, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 14.06.09 17:34
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| uses PCSCConnector;
var MyConnector: TPCSCConnector; begin MyConnector := TPCSCConnector.Create; try MyConnector. ... finally MyConnector.Free; end; | Oder du erzeugst das Objekt in OnCreate und gibst es in OnDestroy frei.
Ins Lib-Verzeichnis lege ich normalerweise keine neuen Dateien, es reicht, wenn du den Pfad, in dem die Dateien liegen, dem Bibliothekspfad hinzufügst.
(Altes Delphi: Tools --> Optionen --> Verzeichnisse/Bedingungen --> Bibliothekspfad
Neues Delphi: Tools --> Optionen --> Umgebungsoptionen --> Delphi-Optionen --> Bibliothek - Win32 --> Bibliothekspfad)
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 17:38
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
habe ich auch gerade versucht, kommt die fehler meldung: (bild im anhang)
EDIT://
mit der alten komponente hats so super funtioniert, und jetzt klappt gar nichts mehr 
Einloggen, um Attachments anzusehen!
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 14.06.09 17:42
Die Funktion ist in WinSCard deklariert, allerdings nur, wenn WinSCard_DYNLINK definiert ist.
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 17:47
DeddyH hat folgendes geschrieben : | | Die Funktion ist in WinSCard deklariert, allerdings nur, wenn WinSCard_DYNLINK definiert ist. |
zuerst schreibt er mir das pcscconnector nicht gefunden wurde. dann füge ich es dem projekt bei dann schreibt er mir das schon eine vorhanden ist mit dem namen. ich komme mit dem einfach nicht zurecht...
immer wenn sowas ist wie so speziell komponenten einfügen habe ich diese probleme...
ich versuche es jetzt mal von ganz von vorne. ich erstelle eine neu anwendung, denn vieleicht liegts ja am beispiel programm das zur alten komponente gehört. nun habe ich einen ganz frischen code, da gebe ich unter uses pcscconnector rein.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, PCSCConnector;
type TForm1 = class(TForm) private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
end. |
wo muss nun dieser code rein?
Delphi-Quelltext 1:
| TSim = class(TPCSCConnector) |
wenn ichs jezt kompiliere meckert er wenigstens nicht...
das hier hat mir der author der pcscconnector komponente (noobi) gesendet:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98:
| Erstmal uses (...) PCSCConnector;
Dann das Ding benutzen, also erstmal relevante Events mit Pozeduren versorgen: (...) TSim = class(TPCSCConnector) dazuvererbt, sonst kann man das auch direkt benutzen (...)
Sim := TSim.Create; Sim.Debugging := miWriteTrace.Checked; Sim.OnCardInserted := CardInserted; Sim.OnCardActive := CardActive; Sim.OnCardRemoved := CardRemoved; Sim.OnCardInvalid := CardInvalid; Sim.OnReaderWaiting := CardReaderWaiting; Sim.OnReaderListChange := CardReaderListChange; Sim.OnError := CardError; Sim.OnNodeFound := CardNodeFound; Sim.OnProgress := CardProgress; Sim.OnLogMessage := CardLogMessage; Sim.OnCHVNeeded := CardNeedChv; Dann das hier: Sim.Init;
Die Events sind hier:
procedure TfmSimSpy2.CardReaderWaiting(Sender: TObject); begin SetStatusbarRightText('Insert a valid SIM'); end;
procedure TfmSimSpy2.CardInserted(Sender: TObject); begin Sim.Connect; end;
procedure TfmSimSpy2.CardActive(Sender: TObject); begin
werden.
end;
procedure TfmSimSpy2.CardInvalid(Sender: TObject); begin SetStatusbarRightText('This card is not supported'); end;
procedure TfmSimSpy2.CardError(Sender: TObject; ErrSource: TErrSource; ErrCode: cardinal); begin Log.Debug('CardError' + ErrSourceToText(ErrSource),'Error','Error Code is ' + Sim.DecodeSCardReturnCode(ErrCode)); end;
procedure TfmSimSpy2.CardRemoved(Sender: TObject); begin Sim.ClearAllFiles; end;
procedure TfmSimSpy2.CardReaderListChange(Sender: TObject); var i : integer; MenuItem : TMenuitem; begin Sim.Close; for i := 0 to mnCardreader.Count-1 do mnCardreader.Items[i].Free; for i := 0 to Sim.NumReaders-1 do begin MenuItem := TMenuitem.Create(mmMenu); MenuItem.Caption := Sim.ReaderList[i]; MenuItem.OnClick := CardReaderSelected; MenuItem.RadioItem := true; if i = 0 then MenuItem.Checked := true else MenuItem.Checked := false; MenuItem.Tag := i; mnCardreader.Add(MenuItem); end; Sim.UseReaderNum := 0; Sim.Open; end;
procedure TfmSimSpy2.CardNeedChv(Sender: TObject; NeedChv: TNeededPIN); var ChvValue : string; begin with TfmChvRequest.Create(Self) do try AskForChv(NeedChv,ChvValue); finally Free; end; sbStatusBar.Panels[1].Text := VerifyChv(NeedChv,ChvValue); end; |
Moderiert von Narses: Beitragsformatierung überarbeitet.
Zuletzt bearbeitet von oOXTCOo am So 14.06.09 18:02, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 14.06.09 18:01
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 18:05
jaenicke hat folgendes geschrieben : | | Wenn du nur die Standardfunktionen benutzen willst, gar nicht, dann kannst du die Klasse auch direkt verwenden und brauchst keine eigene Klasse davon abzuleiten. |
wo müsste ichs einfügen?
was ist damit:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| Sim := TSim.Create; Sim.Debugging := miWriteTrace.Checked; Sim.OnCardInserted := CardInserted; Sim.OnCardActive := CardActive; Sim.OnCardRemoved := CardRemoved; Sim.OnCardInvalid := CardInvalid; Sim.OnReaderWaiting := CardReaderWaiting; Sim.OnReaderListChange := CardReaderListChange; Sim.OnError := CardError; Sim.OnNodeFound := CardNodeFound; Sim.OnProgress := CardProgress; Sim.OnLogMessage := CardLogMessage; Sim.OnCHVNeeded := CardNeedChv; Sim.Init; |
ich bekomme nur fehlermeldungen, nichts klappt...
ich habe von einer anderen compnente ein testprogramm APDU.exe, damit läuft alles, ich kann die karte ansprechen usw. aber mit dieser komonente siehts so aus als würde ichs nie schaffen
eigentlich will ich einfach nur die beiden commands verwenden:
> SendPduToCard
> SendCommandToCard
und 37 bytes zur karte senden, diese sollten berechnet werden und das ergebnis brauche ich wieder zurück...
mehr brauche ich gar nicht...
Moderiert von Narses: Beitragsformatierung überarbeitet.
Zuletzt bearbeitet von oOXTCOo am So 14.06.09 18:09, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 14.06.09 18:07
oOXTCOo hat folgendes geschrieben : | | wo müsste ichs einfügen? |
Die Klassendeklaration gehört unter type, aber wenn du das nicht weißt, wirst du die Klasse sicher auch erst einmal nicht erweitern wollen, also kannst du dir das sparen...
oOXTCOo hat folgendes geschrieben : | | ich bekomme nur fehlermeldungen, nichts klappt... |
Wenn du TSim benutzt, diese Klasse aber nicht deklariert hast, ist das klar...
Nimm einfach direkt TPCSCConnector.
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 18:10
jaenicke hat folgendes geschrieben : | Wenn du TSim benutzt, diese Klasse aber nicht deklariert hast, ist das klar...
Nimm einfach direkt TPCSCConnector. |
wie meinst du mit direkt?
tpcsconnector.SendCommandToCard bla bla bla ?
kommt das dabei raus: [Fehler] Unit1.pas(32): Undefinierter Bezeichner: 'SendCommandToCard'
aber SendCommandToCard ist in tpcscconnector.pas drinnen!
ahh, aber so sehe ich wenigestens die vorschläge von delphi. wenn ich also pcscconnector. einge, kommen jetzt wenigsens die vorschläge. das hat vorher nicht geklappt...
wie kann ich jetzt zb.
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.pcscCardActive(Sender: TObject); begin memo1.Lines.Add('OnCardActive'); ShowData; end; |
einfügen?
jetzt habe ich ja keine sichtbare komponente wo ich die ereignisse einstellen kann?
das hier zb. von der alte komonente (test programm) passt ja alles nicht mehr:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.ShowData; begin label3.caption := IntToHex(pcscconnector.ReaderState,8); label4.caption := pcscconnector.AttrICCType; label5.caption := pcscconnector.AttrVendorName; label6.caption := pcscconnector.AttrVendorSerial; label14.caption := IntToHex(pcscconnector.AttrProtocol,8); end; |
ich habe alles mit pcsc. mit pcscconnector. getauscht, aber alles was
dannach steht gibt fehler: undefinierter bezeichner aus...
--- Moderiert von Narses: Beiträge zusammengefasst---
wenn ich zb. versuche den reader port einzustellen (ich weis das er auf 0 eingestellt ist, daurm will ichs mal direkt versuche)
Delphi-Quelltext 1:
| TPCSCConnector.UseReaderNum := 0; |
kommt die fehlermeldung: [Fehler] Unit1.pas(91): Methodenbezeichner erwartet
aber in der alten version hat das so:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.bt_InitClick(Sender: TObject); begin pcsc.Init; pcsc.UseReaderNum := 0; end; |
funktioniert...
Moderiert von Narses: Beitragsformatierung überarbeitet.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 14.06.09 18:46
Du musst halt schauen was da vorhanden ist. Wenn der Bezeichner nicht undefiniert ist, wird UseReaderNum ja irgendwas sein, ich weiß ja nicht was. 
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: So 14.06.09 19:07
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 14.06.09 19:34
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Do 18.06.09 13:22
SOOOO.... habs jetzt mit der hilfe von noobi geschafft
das ist der source der funktioniert (sollte jemand das selbe problem haben:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267:
| unit PCSCDemoUnit;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, PCSCConnector, GsmHelper, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; mmEvents: TMemo; Button2: TButton; Button3: TButton; Edit1: TEdit; Button4: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private procedure CardActive(Sender: TObject); procedure CardInvalid(Sender: TObject); procedure CardReaderWaiting(Sender: TObject); procedure CardError(Sender: TObject; ErrSource: TErrSource; ErrCode: cardinal); procedure CardRemoved(Sender: TObject); procedure CardReaderListChange(Sender: TObject); procedure CardInserted(Sender: TObject); procedure CardProgress(Sender: TObject; Accessed: string; RecNo: integer); procedure CardLogMessage(Sender: TObject; Location,Status,Data: string); procedure CardNeedChv(Sender: TObject; NeedChv: TNeededPIN); public end;
var Form1: TForm1; PCSCLink : TPCSCConnector;
const
DFmaster = $3F00; EFiccid = $2FE2;
implementation
{$R *.dfm}
const
HexChars = '0123456789abcdefABCDEF';
function Hex2Bin(input: string): string; var hex, output: string; loop : integer; begin for loop := 1 to Length(input) do if Pos(input[loop], hexchars) > 0 then hex := hex + AnsiUpperCase(input[loop]); loop := 1; if Length(hex) > 0 then repeat output := output + Chr(StrToInt('$'+Copy(hex,loop,2))); loop := loop + 2; until loop > Length(hex); Result := output; end;
function Bin2HexExt(const input:string; const spaces, upcase: boolean): string; var loop : integer; hexresult : string; begin hexresult := ''; for loop := 1 to Length(input) do begin hexresult := hexresult + IntToHex(Ord(input[loop]),2); if spaces then hexresult := hexresult + ' '; end; if upcase then result := AnsiUpperCase(hexresult) else result := AnsiLowerCase(hexresult); end;
function ErrSourceToText(const From: TErrSource): string; begin case From of esInit : Result := 'Init'; esConnect : Result := 'Connect'; esGetStatus : Result := 'GetStatus'; esTransmit : Result := 'Transmit'; else Result := 'Unkown'; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin PCSCLink.Close; PCSCLink.Init; end;
procedure TForm1.CardReaderWaiting(Sender: TObject); begin mmEvents.Lines.Add('OnReaderWaiting'); end;
procedure TForm1.CardInserted(Sender: TObject); begin mmEvents.Lines.Add('OnCardInserted'); mmEvents.Lines.Add(' executing Connect : ' + BoolToStr(PCSCLink.Connect,True)); end;
procedure TForm1.CardActive(Sender: TObject); begin
mmEvents.Lines.Add('OnCardActive'); end;
procedure TForm1.CardInvalid(Sender: TObject); begin mmEvents.Lines.Add('OnCardInvalid'); end;
procedure TForm1.CardError(Sender: TObject; ErrSource: TErrSource; ErrCode: cardinal); begin mmEvents.Lines.Add('OnCardError'); mmEvents.Lines.Add(' ' + ErrSourceToText(ErrSource)); mmEvents.Lines.Add(' ' + PCSCLink.DecodeSCardReturnCode(ErrCode)); end;
procedure TForm1.CardRemoved(Sender: TObject); begin mmEvents.Lines.Add('OnCardRemoved'); end;
procedure TForm1.CardReaderListChange(Sender: TObject); var i : integer; begin mmEvents.Lines.Add('OnCardReaderListChange'); PCSCLink.Close; for i := 0 to PCSCLink.NumReaders - 1 do begin mmEvents.Lines.Add(' Reader' + IntToStr(i) + ' : ' + PCSCLink.ReaderList[i]); end; PCSCLink.UseReaderNum := 0; PCSCLink.Open; end;
procedure TForm1.CardProgress(Sender: TObject; Accessed: string; RecNo: integer); begin mmEvents.Lines.Add('OnCardProgress'); Application.ProcessMessages; end;
procedure TForm1.CardLogMessage(Sender: TObject; Location,Status,Data: string); begin mmEvents.Lines.Add('OnCardLogMessage'); mmEvents.Lines.Add(' ' + Location); mmEvents.Lines.Add(' ' + Status); mmEvents.Lines.Add(' ' + Data); end;
procedure TForm1.CardNeedChv(Sender: TObject; NeedChv: TNeededPIN); var ChvValue : string; begin case NeedChv of npPIN1 : ChvValue := 'PIN1'; npPIN2 : ChvValue := 'PIN2'; npPUK1 : ChvValue := 'PUK1'; npPUK2 : ChvValue := 'PUK2'; npUPIN : ChvValue := 'UPIN'; end; mmEvents.Lines.Add('OnCardNeedCHV : ' + ChvValue); end;
procedure TForm1.FormCreate(Sender: TObject); begin PCSCLink := TPCSCConnector.Create;
PCSCLink.Debugging := true; PCSCLink.OnCardInserted := CardInserted; PCSCLink.OnCardActive := CardActive; PCSCLink.OnCardRemoved := CardRemoved; PCSCLink.OnCardInvalid := CardInvalid; PCSCLink.OnReaderWaiting := CardReaderWaiting; PCSCLink.OnReaderListChange := CardReaderListChange; PCSCLink.OnError := CardError; PCSCLink.OnProgress := CardProgress; PCSCLink.OnLogMessage := CardLogMessage; PCSCLink.OnCHVNeeded := CardNeedChv; end;
procedure TForm1.Button2Click(Sender: TObject); var StatusBytes : string; StatusWord : word; Data: string; begin StatusWord := PCSCLink.CardChangeDir(WordToBytes(DFmaster),StatusBytes); mmEvents.Lines.Add('Called CardChangeDir to DFmaster'); mmEvents.Lines.Add(' ' + PCSCLink.DecodeResponseCode(StatusWord));
StatusWord := PCSCLink.CardReadFile(WordToBytes(EFiccid),StatusBytes,Data); mmEvents.Lines.Add('Called CardReadFile EFiccid'); mmEvents.Lines.Add(' ' + PCSCLink.DecodeResponseCode(StatusWord)); end;
procedure TForm1.FormDestroy(Sender: TObject); begin PCSCLink.Free; end;
procedure TForm1.Button3Click(Sender: TObject); begin
mmevents.Lines.add(Bin2HexExt(pcsclink.SendPDUToCard(Hex2Bin(edit1.text)), true, true));
end;
procedure TForm1.Button4Click(Sender: TObject); begin
PCSCLink.Close; PCSCLink.Init; pcsclink.UseReaderNum:=1; pcsclink.Connect;
mmevents.Lines.add(Bin2HexExt(pcsclink.SendPDUToCard(Hex2Bin(' 00 A4 04 00 10 6E 6F 6B 69 61 2E 73 63 2E 73 75 70 65 72 64 70')), true, true));
end;
procedure TForm1.Button5Click(Sender: TObject); var StatusBytes : string; StatusWord : word; Data: string; begin mmevents.Lines.add(Bin2HexExt(pcsclink.SendPDUToCard(Hex2Bin('90 12 00 00 25006841137B3A439D083EA660C7B3DF9AD70880010C028D0158BF130FFBD0A80F1A5DED159')), true, true));
end;
end. |
nun bekomme ich das als antwort zurück nachdem ich die 24 bytes zur berechnung an die smartcard sende:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| Reader2 : FT SCR2000 1 OnCardLogMessage SendPduToCard StartSend SELECT FILE 00A40400106E6F6B69612E73632E73757065726470 OnCardLogMessage SendPduToCard Result Normal ending of the command 90 00 OnCardLogMessage SendPduToCard StartSend UNKNOWN COMMAND9012000025006841137B3A439D083EA660C7B3DF9AD70880010C028D0158BF130FFBD0A80F1A5DED1509 OnCardLogMessage SendPduToCard Result 24 bytes of data available via GET RESPONSE 61 18 |
und jetzt fehlt mir nur noch ein letztes (SEHR WICHTIGES) detail
wie komme ich jetzt an die berechneten 24 bytes?
das steht: 24 bytes of data available via GET RESPONSE
aber ich finde keine funktion oder sonst was für "GET RESPONSE"
grüße
hari
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt, Code-Tags hinzugefügt.
Zuletzt bearbeitet von oOXTCOo am Do 18.06.09 13:42, insgesamt 1-mal bearbeitet
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 18.06.09 13:32
Ich würde mir die letzten beiden auskommentierten Zeilen noch einmal anschauen.
|
|
oOXTCOo 
      
Beiträge: 141
Windows XP Prof. 3
Delphi 7
|
Verfasst: Do 18.06.09 13:38
DeddyH hat folgendes geschrieben : | | Ich würde mir die letzten beiden auskommentierten Zeilen noch einmal anschauen. |
so habe ich versucht an die daten zu kommen, klappt aber nicht...
es soll auch nichts decodiert werden, ich will ja die daten so weiter verwenden wie sie von der karte kommen...
soo sollte es gehen (testweise daten einfach nur in memo schreiben):
Delphi-Quelltext 1:
| mmevents.lines.add(pcsclink.SendCommandToCard('9012000025006841137B3A439D083EA660C7B3DF9AD70880010C028D0158BF130FFBD0A80F1A5DED159', Data, status)); |
doch ich bekomme einen fehler von delphi...
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 18.06.09 14:01
Hast Du es denn einmal mit den div. CardReadXXX-Methoden versucht?
|
|
|