[rdnzl-devel] Problems with Interop calls

Eric den_er at gmx.de
Tue Mar 10 07:06:26 UTC 2009


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;
  }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/rdnzl-devel/attachments/20090310/e19adef4/attachment.html>


More information about the rdnzl-devel mailing list