Hello everybody first off all i wanna thank you for this nice interface
to the .Net-Framework.
Now to my problem:
I'm using RDNZL to control to ORC-Systems via .Net, my problem is that
one OCR (tesseract) is working fine with it because it is possible to
compile it with Microsoft Visual Studio(no problem at all). The other
OCR-System ABBYY FineReader consits of DLL for which ABBYY provides
an Interop-Assembly to communicate with it directly from the
.Net-Framework.
For controlling FineReader im using a C# Klasse (as an mediator in a
DLL) which does futher action and intraktion with the OCR-System. If i
use this Class direktly with a console-application compield in the
.net-framework everything is fine.
But if i use lisp and RDNZL to create an instance of the class and call
a function of instance that calls _itself _a function of the ABBYY
Interop-Assemble sometime the function call into the assembly don't came
back.
And if i start the process from Lispworks again everything works fine.
Normally i would say it has nothing to do with RDNZL, but maybe it has
some effects on the .Net-Framework which make it reacted different ???
So my question: Has someone experience with such a problem or does some
know what i can do to find a workaround for this problem?
-> When it stucks always the first call to the Interop-Assembly stucks,
if this call don't stuck everything runs perfect.
-> I also tried to call this Interop-Assembly directly with RDNZL with
the same result, it sometimes stucks.
Thanks a bunch for your help,
Eric
(If there is something unclear concerning my bad English and/or bad
description i would be happy to describe it in detail)
My System:
- Win XP
- LispWorks 5.1.1 Personal Edition
- RDNZL 0.12.2.
- Visual Studio 2008 Express Editions
- .Net-Framework 3.5
Some Code:
Unfortunately i can not provide an complete example or my full code, but
here are at least some snippets.
Also there happens nothing special, so i think the problem is somewhere
else... and there is no exception coming
back as if it is waiting or the call is not delivered.
The function with starts the hole process in lisp:
(defun OCR++FineReaderBildAuswerten (Speicherort bild sprache
neuerSpeicherort )
(RDNZL:rdnzl-handler-case
(let(dotNetList bilderAnzahl (ergebnis (list ) ))
(OCR++FineReader-BilderPraeparieren (concatenate 'string
Speicherort "\\" bild ) neuerSpeicherort) <<<---first Function to .Net
see below
(setq bilderAnzahl (- (OCR++FineReader-BilderAnzahl) 1))
(loop for n from 0 to bilderAnzahl do
(OCR++FineReader-BilderOeffen n)
(OCR++FineReader-InhaltAnalysieren )
(OCR++FineReader-InhaltAufbereiten sprache )
(OCR++FineReader-Speichern neuerSpeicherort bild :frz
t :txt t)
(setq dotNetList (OCR--FineReader-TextDatenStrukturLesen))
(setq ergebnis (cons
(ORC--FineReader-erstelle-verschachtelterListe-Text dotNetList) ergebnis))
(OCR--FineReader-DokumentenAnalyseSaeubern))
(RDNZL:enable-rdnzl-syntax)
(reverse ergebnis))
( "System.Exception" (e)
(print (RDNZL:invoke e "ToString") )
nil)
))
===============================================
The first function which calls a function in the #Class:
(defun OCR++FineReader-BildPraeparierenUndOeffnen(bild)
(RDNZL:invoke fineref "bildPraeparierenUndOeffnen" bild ) )
===============================================
The function in the C# Class which calls a function of the Interop-Assembly:
public Boolean bildPraeparierenUndOeffnen(String bildpfad)
{
Logger.logIT(this, " bildPraeparierenUndOeffnen: " + bildpfad, log);
bildInformation = pEngine.PrepareAndOpenImage(bildpfad,
bildBearbeitungsParameter, null, ref dokumentenInformation);*<<< here it
stucks*
Logger.logIT(this, " bildPraeparierenUndOeffnen: ende", log);
return true;
}