Event service routine

new topic     » topic index » view thread      » older message » newer message

This is a multi-part message in MIME format.

------=_NextPart_000_000F_01C30FDC.D1E6C710
	charset="iso-8859-1"

Hello all,

I have a problem with event service routine ! I implement =
PCOMM.DLL(MOXA) library contributed from Kondor Attila and 
communication =
with serial port work very well, but his pcomm.ew lack any event 
service =
rutine . Down at bottom is help for C++ for creating  event 
service =
routine in case when terminator character is received.   =20

After I successfully register event service with :

sio_term_irq_=3Ddefine_c_func(Pcomm,"sio_term_irq",{C_INT,C_INT,C_INT}, 
=
C_INT)
global function sio_term_irq( integer port,atom TermIrq, atom code)
                 ret=3Dc_func(sio_term_irq_,{port,TermIrq,code})
    if ret=3DSIO_BADPORT then
     warnErr("Port is not opened in advance")
    end if
    if ret=3DSIO_WIN32FAIL  then
     warnErr("Calling Win32 function failed")
    end if
    if ret=3DSIO_BADPARM  then
     warnErr("Bad parameter")
    end if
                 return ret
  end function

sci_rup=3Dsio_term_irq( 1,??? , 59)
??? any number form 1 to 50
and return 0(SIO_OK) which mean event service enabled, after if =
terminator character is received  programm crash with message 
"EXW.EXE =
generate errors . . .  ". After that I don't now how to handle ( =
possible with call_back  but I don't now HOW ...)




Language Syntax
C/C++ int WINAPI sio_term_irq(int port, VOID (CALLBACK 
*func)(int port), =
char code)
Argument:
port =3D COM port number
func =3D event service routine entry
If the func is NULL, it will disable this routine.
code =3D terminator code
Return:
SIO_OK OK
SIO_BADPORT Port is not opened in advance
SIO_WIN32FAIL Calling Win32 function failed
Call GetLastError to get the error code
Example:
C/C++
/* Define event service routine */
/* Recommend to declare this function as global function */
VOID CALLBACK TermIrq(int port)
{
}
/* Enable event service routine */
ret =3D sio_term_irq( 2, TermIrq, 'A');
if (ret !=3D SIO_OK) {
  /* Fail  */
}
/* After event service routine enabled, TermIrq() will be 
activated =
whenever terminator character is received. */
/* Disable event service routine */
ret =3D sio_term_irq( 2, NULL, 0 );


                                                     Manny 
farewell from =
Croatia !


------=_NextPart_000_000F_01C30FDC.D1E6C710
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1170" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#e0edeb>
<DIV><FONT face=3DArial size=3D2><FONT face=3D"Times New Roman" =
size=3D3>Hello=20
all,</FONT><BR></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I have a problem with</FONT><FONT =
face=3DArial=20
size=3D2>&nbsp;event service routine ! I&nbsp;implement =
PCOMM.DLL(<EM>MOXA</EM>)=20
library&nbsp;contributed from <STRONG>Kondor =
Attila&nbsp;</STRONG>and<STRONG>=20
</STRONG>communication with serial port work very well, but his 
pcomm.ew =

lack&nbsp;any event service rutine .&nbsp;Down&nbsp;at 
bottom&nbsp;is =
help for=20
C++ for creating&nbsp; event service routine in case when 
terminator =
character=20
is received.&nbsp;&nbsp;&nbsp;&nbsp;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>After I successfully register 
event =
service with=20
:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial color=3D#800080=20
size=3D2>sio_term_irq_=3D<STRONG>define_c_func</STRONG>(Pcomm,"sio_term_i=
rq",{C_INT,C_INT,C_INT},=20
C_INT)</FONT></DIV>
<DIV><FONT face=3DArial color=3D#800080 size=3D2><FONT =
color=3D#008080>global function=20
sio_term_irq( integer port,atom TermIrq, atom=20
code)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;=20
ret=3Dc_func(sio_term_irq_,{port,TermIrq,code})<BR>&nbsp;&nbsp;&nbsp;if=20
ret=3DSIO_BADPORT&nbsp;then<BR>&nbsp;&nbsp;&nbsp;&nbsp;warnErr("Port 
is =
not opened=20
in advance")<BR>&nbsp;&nbsp;&nbsp;end=20
if<BR>&nbsp;&nbsp;&nbsp;if&nbsp;ret=3DSIO_WIN32FAIL&nbsp;=20
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;warnErr("Calling Win32 function=20
failed")<BR>&nbsp;&nbsp;&nbsp;end=20
if<BR>&nbsp;&nbsp;&nbsp;if&nbsp;ret=3DSIO_BADPARM&nbsp;=20
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;warnErr("Bad=20
parameter")<BR>&nbsp;&nbsp;&nbsp;end if</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#800080 size=3D2><FONT=20
color=3D#000000>&nbsp;</FONT><FONT=20
color=3D#008080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;=20
return ret<BR>&nbsp;end function</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#800080 size=3D2><FONT=20
color=3D#008080></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial color=3D#800080 size=3D2><FONT=20
color=3D#008080><STRONG>sci_rup=3Dsio_term_irq( 1,??? ,=20
59)</STRONG></FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#008080 size=3D2>??? any number 
form 1 =
to=20
50</FONT></DIV>
<DIV><FONT face=3DArial color=3D#800080 size=3D2><FONT =
color=3D#008080><FONT=20
color=3D#000000>and&nbsp;return 0(SIO_OK) which mean event service =
enabled, after=20
if terminator character&nbsp;is received&nbsp; programm crash with =
message=20
"<EM><FONT color=3D#ff0000>EXW.EXE generate errors . . 
.</FONT></EM> =
&nbsp;".=20
After that I don't now how to handle ( possible with =
<U>call_back</U>&nbsp; but=20
I don't now HOW ...)</FONT></DIV>
<DIV><FONT color=3D#000000></FONT><FONT 
color=3D#000000></FONT><FONT=20
color=3D#000000></FONT><FONT color=3D#000000></FONT><FONT =
color=3D#000000></FONT><FONT=20
color=3D#000000></FONT><FONT color=3D#000000></FONT><FONT =
color=3D#000000></FONT><FONT=20
color=3D#000000></FONT><BR></FONT><BR></DIV></FONT>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><EM><FONT color=3D#0000ff><FONT face=3DArial=20
size=3D2>Language&nbsp;Syntax<BR>C/C++&nbsp;int WINAPI 
sio_term_irq(int =
port, VOID=20
(CALLBACK *func)(int port), char code)<BR></FONT><FONT 
face=3DArial=20
size=3D2>Argument:</FONT></FONT></EM></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2><EM>port =3D 
COM port=20
number</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2><EM>func =3D 
event =
service routine=20
entry</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2><EM>If the func 
is =
NULL, it will=20
disable this routine.</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2><EM>code =3D 
terminator =

code</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff =
size=3D2><EM>Return:</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff=20
size=3D2><EM>SIO_OK&nbsp;OK<BR>SIO_BADPORT&nbsp;Port is not 
opened in=20
advance<BR>SIO_WIN32FAIL&nbsp;Calling Win32 function 
failed<BR>Call =
GetLastError=20
to get the error code</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff =
size=3D2><EM>Example:</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff =
size=3D2><EM>C/C++</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2><EM>/* Define 
event =
service routine=20
*/</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2><EM>/* 
Recommend to =
declare this=20
function as global function */</EM></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D2><EM>VOID CALLBACK =
TermIrq(int=20
port)<BR>{<BR>}</EM></FONT><FONT face=3DArial 
size=3D2><BR><EM><FONT=20
color=3D#0000ff>/* Enable event service routine */</FONT></EM></DIV>
<DIV><EM><FONT color=3D#0000ff>ret =3D sio_term_irq( 2, TermIrq, =
=91A=92);<BR>if (ret !=3D=20
SIO_OK) {<BR>&nbsp;/* Fail&nbsp; */<BR>}</FONT></EM></DIV>
<DIV><EM><FONT color=3D#0000ff>/* After event service routine 
enabled, =
TermIrq()=20
will be activated whenever terminator character is received.=20
*/</FONT></EM></DIV>
<DIV><EM><FONT color=3D#0000ff>/* Disable event service routine=20
*/</FONT></EM></DIV>
<DIV><EM><FONT color=3D#0000ff>ret =3D sio_term_irq( 2, NULL, 0=20
);</FONT></EM></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Manny 
farewell =
from=20
Croatia !</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>

------=_NextPart_000_000F_01C30FDC.D1E6C710--






-- 
Regards,
    Rob Craig
    Rapid Deployment Software
    http://www.RapidEuphoria.com

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu