Seite 1 von 1

CAPITEL und Pipes

Verfasst: Di 24. Dez 2013, 15:42
von wilfried
Hat es schon jemand geschafft über Pipes mit CAPITEL zu kommunizieren?

Hintergrund: Ich habe mir eine Benachrichtigungsfunktion für eingegangene Anrufe gebaut. Die hat aber noch "tacktische Löcher".
CAPITEL bietet die Möglichkeit Informationen statt in eine Log-Datei in eine NamedPipe zu schreiben. Bisher ist es mir nicht gelungen von REXX aus an diese Pipe heranzukommen.

MfG
Wilfried

Re: CAPITEL und Pipes

Verfasst: Di 24. Dez 2013, 15:51
von ehtron
Hi Wilf :-)
hmm.. täusche ich mich, oder gab es nicht sogar einen anruf-monitor für capi-tel?
ist schon lange her, dass ich das ding genutzt habe, bin aber der meinung sowas gehabt zu haben damals.
evtl. hat ja jemand anderes noch einen tipp

Re: CAPITEL und Pipes

Verfasst: So 29. Dez 2013, 13:43
von LutzG
oder gab es nicht sogar einen anruf-monitor für capi-tel?
Für meine Telefonanlage schon: PMISTEC...

Gruß
Lutz

Re: CAPITEL und Pipes

Verfasst: Mi 1. Jan 2014, 21:30
von klaus
wilfried hat geschrieben:Hat es schon jemand geschafft über Pipes mit CAPITEL zu kommunizieren?

Hintergrund: Ich habe mir eine Benachrichtigungsfunktion für eingegangene Anrufe gebaut. Die hat aber noch "tacktische Löcher".
CAPITEL bietet die Möglichkeit Informationen statt in eine Log-Datei in eine NamedPipe zu schreiben. Bisher ist es mir nicht gelungen von REXX aus an diese Pipe heranzukommen.

MfG
Wilfried
Schau dir mal RXU1a.ZIP an. Liegt auf HOBBES und hat viele Funktionen um mit Pipes und Queues umzugehen.

MfG
Klaus

Re: CAPITEL und Pipes

Verfasst: Do 2. Jan 2014, 10:48
von wilfried
klaus hat geschrieben:
Schau dir mal RXU1a.ZIP an. Liegt auf HOBBES und hat viele Funktionen um mit Pipes und Queues umzugehen.

MfG
Klaus
Hallo Klaus,

mit RXU1a.ZIp habe ich es auch schon probiert. Ohne Erfolg. Möglicherweise sitzt das Problem zwischen meinen Ohren.

MfG
Wilfried

Re: CAPITEL und Pipes

Verfasst: Do 2. Jan 2014, 11:29
von Frank Wochatz
Funktioniert denn Dein Pipe-Konstrukt auf Deinem Rechner, wenn Du Daten von einer Rexx-Session in die andere schiebst?
Erstellt Dein Skript den Pipe-Server, oder versuchts Du ev. mit einem Clientscript die Pipe zu lesen?

Re: CAPITEL und Pipes

Verfasst: Do 2. Jan 2014, 18:00
von wilfried
Hallo Frank,

ich muss zugeben das ich bisher mit Pipes keine Erfahrung habe.
Ich bin davon ausgegeangen das ich bei Capitel einen gültigen Pipe anstatt der Logdatei eintrage und dann eine REXX starte die diese Pipe zu lesen versucht.
Alle mir bekannten Quellen zum Thema Pipes sind nicht sonderlich ergiebig.
Was mache ich falsch?

Re: CAPITEL und Pipes

Verfasst: Do 2. Jan 2014, 18:32
von Frank Wochatz
Ich schätze Du musst die Pipe erstmal erstellen, da das vermutlich nicht von Capitel erledigt wird. Guck Dir mal das Printmonscript an, das ich früher für ePDF benutzt habe. Das erstellt eine Pipe und liest dann aus der Pipe und schreibt den Output in eine Datei. Du musst das Script natürlich anpassen, Pipe-Name ändern etc.. Und Du brauchst RXU dafür.

Code: Alles auswählen

/* Print2PS.cmd v0.4 for ePDF */
"cls"
/* setup */
/* named-pipe server setup */
pipename = '\pipe\ePDF'
openmode = 'WIN'
pipemode = 'WTR'
instance_count = 1
outbuf = 4096
inbuf = 4096
timeout = -1
readbufsize = 4096

/* ps dump setup */
EOF = x2c(4) /* end of file */
oldpath = directory() /* working dir */


/* ERROR HANDLING */
SIGNAL ON SYNTAX NAME errorHandler 
SIGNAL ON ERROR NAME errorHandler
SIGNAL ON FAILURE NAME errorHandler


/* - - - - - init RXU - - - - - */
if rxfuncquery('rxuinit') then do
 Call RxFuncAdd 'rxuinit','rxu','rxuinit'
 Call rxuinit
end


/* - - - - - init RexxUtil - - - - - */
if rxfuncquery('SysLoadFuncs') then do
 call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
 call SysLoadFuncs
end

dosrc = rxcreatenpipe('hpipe',pipename,openmode,pipemode,instance_count,
                     ,outbuf,inbuf,timeout)
if dosrc <> 0 then
  do
  say 'RxCreateNPipe failed with rc =' dosrc
  exit
  end


ReadFromPipe:

/* - - - - - get temp dir and file - - - - - */
tempdir = value(TEMP,,'OS2ENVIRONMENT')
if tempdir = '' then tempdir = value(TMP,,'OS2ENVIRONMENT')
if tempdir = '' then tempdir = directory()
rc = directory(tempdir)
if rc = 0 then do
say "Error: invalid temp directory: " tempdir
signal exit
end
if lastpos('\', tempdir) >< length(tempdir) then tempdir = tempdir||'\'
tempfile=SysTempFileName(tempdir||postscript.???)

say;say 'Waiting for PostScript data ...';say

dosrc = rxconnectnpipe(hpipe)
if dosrc <> 0 then
  do
  say 'RxConnectNPipe failed with rc =' dosrc
  exit
  end

say "   Write PostScript data to file: "tempfile

FoundEOF = 0
dosrc = rxread('data',hpipe,readbufsize)
do while word(dosrc,1) = 0 & word(dosrc,2) > 0

/* check EOF */
	if pos(EOF, data) > 0  then do
		FoundEOF = 1
		rc = charout(tempfile, substr(data,1,pos(EOF, data)))
		end
	else if FoundEOF >< 1 then rc = charout(tempfile, data)
		/* else flush pipe */

dosrc = rxread('data',hpipe,readbufsize)

end

say "   ...done!"
rc=stream(tempfile,'c','close')
/* start ePDF */
rc = directory(oldpath)
say "   Launching ePDF..."

"@start ePDF.EXE -PS:'"||tempfile||"'"

/* flush pipe -------- */
/*
do until chars(pipename	) = 0
ps_char = charin(hpipe,,readbufsize)
end
*/

call rxdisconnectnpipe hpipe
call ReadFromPipe

exit


errorHandler:
if hpipe >< "" & hpipe >< "HPIPE" then do
 call rxdisconnectnpipe hpipe
 call rxcloseh hpipe
end
exit

Re: CAPITEL und Pipes

Verfasst: So 5. Jan 2014, 21:12
von wilfried
Hallo Frank,

vielen Dank für das Beispiel!
Es ist mir damit gelungen an die Debug-Informationen zu gelangen die Capitel liefern kann.
(filename_debug=\pipe\capitel) in capitel.cfg
Das was normalerweise in die Logdatei geschrieben wird habe ich damit bisher noch nicht über die Pipe angeboten bekommen.
(filename_log=\pipe\capitel in capitel.cfg)
Ich probiere weiter ...

Re: CAPITEL und Pipes

Verfasst: Mo 6. Jan 2014, 14:12
von Frank Wochatz
Wilfried,
versuch doch mal verschiedene Pipe-Namen für Log und Debug...