Hallo, ich programmiere unter Delphi ein Tool zum automatisierten Programmieren mehrerer 89C51 Controller. Dazu benutze ich die Atisp.dll, auf die auch FLIP aufsetzt. Allerdings habe ich folgendes Problem: sobald ein Controller programmiert ist, ist der CAN Port blockiert, obwohl ispClosePort und ispCancel erfolgreich aufgerufen wurden. Danach kann ich zwar ispInit aufrufen (gibt auch true zurück), alle anderen Funktionen (z.B. ispSelectDevice od. ispSelectCommHardware) werden aber mit false beendet. Hat jemand vielleicht das gleiche Problem gehabt, oder weiss eine Lösung? MfG 2takt
Hallo, ich programmiere unter Delphi ein Tool zum automatisierten Programmieren mehrerer 89C51 Controller. Dazu benutze ich die Atisp.dll, auf die auch FLIP aufsetzt. Allerdings habe ich folgendes Problem: sobald ein Controller programmiert ist, ist der CAN Port blockiert, obwohl ispClosePort und ispCancel erfolgreich aufgerufen wurden. Danach kann ich zwar ispInit aufrufen (gibt auch true zurück), alle anderen Funktionen (z.B. ispSelectDevice od. ispSelectCommHardware) werden aber mit false beendet. Hat jemand vielleicht das gleiche Problem gehabt, oder weiss eine Lösung? MfG 2takt
Hallo, ich hatte das gleiche Problem. Meine Lösung: Nur "ispClosePort" aufrufen, und nicht "ispCancel". Dann klappt's mehrfach hintereinander mit "ispInit" etc... Is' komisch, ja. Funktioniert aber. Hope this helps... Bye Alexander
Ich möchte dies auch programmieren, bekomme aber bei ispSelectDevice immer false zurück. IspInit kommt ist aber true.Die Funktion habe ich wie folgt deklariert: function ispSelectDevice(device:LongInt):boolean; stdcall; external 'AtJniIsp.dll'; Aufruf: if ispInit then begin Memo1.Lines.Add('Init OK'); end else begin Memo1.Lines.Add('Init failed'); Exit; end; dev:=integer(AT89C51CC03); if ispSelectDevice(dev) then begin Memo1.Lines.Add('Device select OK'); end else begin Memo1.Lines.Add('Device select failed'); Exit; end; Hat jemand ein Beispielprogramm, welches schon läuft?
da es offensichtlich ein C DLL ist, muss man nicht stdcall, sondern cdecl nehmen. Damit geht es nun: function ispSelectDevice(device:LongInt):Word; //boolean; cdecl; external 'AtIsp.dll'; Nun macht aber der Aufruf Probleme: status := ispOpenCanPort(250, 0, 1, 1, 0, 115200); function ispOpenCanPort(bitrate: Longword; pTYpe: Byte; port:word; channel:Byte = 1; CRIS: Byte =0; baudrate:LongWord=115200):LongWord; cdecl; external 'AtIsp.dll'; Am Ende des Aufrufes kommt dann immer Zugriff bei Adresse xxxxxx, Schreiben bei Adresse 0 Vielleicht soll ich aber in ein Delphiforum wechseln, da aber hier schon Experten sind, die das schon gelöst haben, wollte ich hier mal anfragen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.