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.
Antworten
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

CAPITEL und Pipes

Beitrag 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
Benutzeravatar
ehtron
Beiträge: 138
Registriert: Mo 23. Dez 2013, 10:11
Kontaktdaten:

Beitrag 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
LutzG
Beiträge: 92
Registriert: Mo 23. Dez 2013, 14:24

Beitrag von LutzG »

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

Gruß
Lutz
klaus
Beiträge: 37
Registriert: Mi 1. Jan 2014, 21:01
Wohnort: Bonn

Beitrag 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
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag 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
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag 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?
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag 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?
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
Benutzeravatar
wilfried
Beiträge: 667
Registriert: Mo 23. Dez 2013, 18:26
Wohnort: Barsinghausen
Kontaktdaten:

Beitrag 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 ...
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von Frank Wochatz »

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