CAPITEL und Pipes

(DE) Anwendungen für Office, Multimedia und Spiele, Werkzeuge, Hilfsprogramme, etc
(EN) Applications for Office, Multimedia or Games, Tools, Utilities, e.g.
User avatar
wilfried
Posts: 647
Joined: Mon 23. Dec 2013, 18:26
Location: Barsinghausen

CAPITEL und Pipes

Post by wilfried » Tue 24. Dec 2013, 15:42

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

User avatar
ehtron
Posts: 115
Joined: Mon 23. Dec 2013, 10:11

Post by ehtron » Tue 24. Dec 2013, 15:51

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

LutzG
Posts: 87
Joined: Mon 23. Dec 2013, 14:24

Post by LutzG » Sun 29. Dec 2013, 13:43

oder gab es nicht sogar einen anruf-monitor für capi-tel?
Für meine Telefonanlage schon: PMISTEC...

Gruß
Lutz

klaus
Posts: 36
Joined: Wed 1. Jan 2014, 21:01
Location: Bonn

Post by klaus » Wed 1. Jan 2014, 21:30

wilfried wrote: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

User avatar
wilfried
Posts: 647
Joined: Mon 23. Dec 2013, 18:26
Location: Barsinghausen

Post by wilfried » Thu 2. Jan 2014, 10:48

klaus wrote:
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

User avatar
Frank Wochatz
Posts: 974
Joined: Sun 22. Dec 2013, 22:04
Location: Berlin

Post by Frank Wochatz » Thu 2. Jan 2014, 11:29

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?

User avatar
wilfried
Posts: 647
Joined: Mon 23. Dec 2013, 18:26
Location: Barsinghausen

Post by wilfried » Thu 2. Jan 2014, 18:00

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?

User avatar
Frank Wochatz
Posts: 974
Joined: Sun 22. Dec 2013, 22:04
Location: Berlin

Post by Frank Wochatz » Thu 2. Jan 2014, 18:32

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: Select all

/* 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

User avatar
wilfried
Posts: 647
Joined: Mon 23. Dec 2013, 18:26
Location: Barsinghausen

Post by wilfried » Sun 5. Jan 2014, 21:12

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 ...

User avatar
Frank Wochatz
Posts: 974
Joined: Sun 22. Dec 2013, 22:04
Location: Berlin

Post by Frank Wochatz » Mon 6. Jan 2014, 14:12

Wilfried,
versuch doch mal verschiedene Pipe-Namen für Log und Debug...