Errors Returned When IP Connection Fails
When an IP_CLIENT_OPEN is attempted and an ONERROR is
returned, a numeric error value is returned.
This will show as Device.Number in the ONERROR event. The 822-DL1-IP
Error Reporting.zip example shows an IP_CLIENT_OPEN with a function that will
print the errors to the debug port as SEND_STRING 0s. Enable Internal
Diagnostics or enable MSG ON in terminal or telnet to see the messages.
PROGRAM_NAME='IP Error Reporting'
(***********************************************************)
(* FILE CREATED ON: 04/10/2007 AT: 18:41:07 *)
(***********************************************************)
(***********************************************************)
(***********************************************************)
(* FILE_LAST_MODIFIED_ON: 04/11/2007 AT: 10:20:54 *)
(***********************************************************)
(* System Type : NetLinx *)
(***********************************************************)
(* REV HISTORY: *)
(***********************************************************)
(*
$History: $
*)
(***********************************************************)
(* DEVICE NUMBER DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_DEVICE
dvIP_DEVICE = 0:3:0 // IP DEVICE
(***********************************************************)
(* CONSTANT DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_CONSTANT
#WARN 'SET ADDRESS AND PORT HERE'
CHAR cIP_ADDRESS[50] = '192.168.1.240' // IP DEVICE ADDRESS
INTEGER nPORT_NUMBER = 23 // IP DEVICE PORT
(***********************************************************)
(* DATA TYPE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_TYPE
(***********************************************************)
(* VARIABLE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_VARIABLE
INTEGER nCONNECTION // TRACKS ONLINE STATUS
(***********************************************************)
(* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *)
(***********************************************************)
(* EXAMPLE: DEFINE_FUNCTION <RETURN_TYPE> <NAME> (<PARAMETERS>) *)
(* EXAMPLE: DEFINE_CALL '<NAME>' (<PARAMETERS>) *)
// PRINTS IP ERRORS TO DIAGNOSTICS
DEFINE_FUNCTION CHAR[100] IpError (LONG lERR)
{
Switch (lERR)
{
Case 0:
RETURN "";
Case 2:
RETURN "'IP ERROR (',ITOA(lERR),'): General Failure (IP_CLIENT_OPEN/IP_SERVER_OPEN)'";
Case 4:
RETURN "'IP ERROR (',ITOA(lERR),'): unknown host or DNS error (IP_CLIENT_OPEN)'";
Case 6:
RETURN "'IP ERROR (',ITOA(lERR),'): connection refused (IP_CLIENT_OPEN)'";
Case 7:
RETURN "'IP ERROR (',ITOA(lERR),'): connection timed out (IP_CLIENT_OPEN)'";
Case 8:
RETURN "'IP ERROR (',ITOA(lERR),'): unknown connection error (IP_CLIENT_OPEN)'";
Case 14:
RETURN "'IP ERROR (',ITOA(lERR),'): local port already used (IP_CLIENT_OPEN/IP_SERVER_OPEN)'";
Case 16:
RETURN "'IP ERROR (',ITOA(lERR),'): too many open sockets (IP_CLIENT_OPEN/IP_SERVER_OPEN)'";
Case 10:
RETURN "'IP ERROR (',ITOA(lERR),'): Binding error (IP_SERVER_OPEN)'";
Case 11:
RETURN "'IP ERROR (',ITOA(lERR),'): Listening error (IP_SERVER_OPEN)'";
Case 15:
RETURN "'IP ERROR (',ITOA(lERR),'): UDP socket already listening (IP_SERVER_OPEN)'";
Case 9:
RETURN "'IP ERROR (',ITOA(lERR),'): Already closed (IP_CLIENT_CLOSE/IP_SERVER_CLOSE)'";
Case 17:
RETURN "'IP ERROR (',ITOA(lERR),'): Local port not open, can not send string (IP_CLIENT_OPEN)'";
Default:
RETURN "'IP ERROR (',ITOA(lERR),'): Unknown'";
}
}
(***********************************************************)
(* STARTUP CODE GOES BELOW *)
(***********************************************************)
DEFINE_START
// OPENS CONNECTION ON BOOT
IP_CLIENT_OPEN(dvIP_DEVICE.PORT,cIP_ADDRESS,nPORT_NUMBER,IP_TCP)
(***********************************************************)
(* THE EVENTS GO BELOW *)
(***********************************************************)
DEFINE_EVENT
DATA_EVENT[dvIP_DEVICE]
{
ONLINE:
{
nCONNECTION = 1
}
OFFLINE:
{
nCONNECTION = 0
// REOPENS CONNECTION IF DROPS
IP_CLIENT_OPEN(dvIP_DEVICE.PORT,cIP_ADDRESS,nPORT_NUMBER,IP_TCP)
}
ONERROR:
{
IpError (DATA.NUMBER) // SENDS STRING TO DIAGNOSTICS ON ERROR
}
}
(***********************************************************)
(* THE ACTUAL PROGRAM GOES BELOW *)
(***********************************************************)
DEFINE_PROGRAM
(***********************************************************)
(* END OF PROGRAM *)
(* DO NOT PUT ANY CODE BELOW THIS COMMENT *)
(***********************************************************)