The WinISDN Software Developer’s Kit is available for Visual Basic programmers
who wish to write applications to take advantage of ISDN communications.
The package supports the WinISDN driver that is supplied with the CyberSpace
cards, and programs written to this API will run on ISDN hardware from
other vendors supporting WinISDN.
The industry standard WinISDN Application Program Interface has been adopted by all the major ISDN hardware vendors and TCP/IP software vendors, and ISDN*tek is proud to have been one of the first hardware manufacturers to provide a WinISDN compatible driver. WinISDN is designed to take full advantage of the speed and reliability of ISDN, while avoiding the limitations associated with COM port diversion of ISDN-bound data. The WinISDN driver allows an application to utilize an efficient block-at-a-time transmission scheme, rather than the slower byte-at-a-time serial style transmission formerly associated with telecommunications. Point-to-Point Protocol, an integral part of TCP/IP communications, can be fully implemented in the application software without relying on driver intervention. And best of all, software authors need no particular knowledge of ISDN protocols in order to successfully write or adapt an application to ISDN.
In its simplest form, WinISDN allows you to place an ISDN call with just a few API calls:
ISDN_Open
ISDN_Connect
talk over a voice connection, or send data using
ISDN_read
ISDN_write
ISDN_Disconnect
ISDN_Close
After many years of no ISDN connections, no ISDN boards, no ISDN software, all of the pieces are coming together! Speed is up and prices are down! ISDN uses the same copper wires to your home office as Plain Old Telephone Service (POTS), but offers ten times the power of a 14.4 modem! You can use this power with Visual Basic 3.0+ to transfer files, photos, and voice, using the industry standard WinISDN.DLL.
![[image]](gif/sdk4box.gif)
![[program image]](gif/sdkprog.gif)
'---------------------------------------------'
' Set up the Visual Basic data structures '
' for program calls to the ISDN driver. '
' These structures are included in the SDK '
' in DEF files for both VB and for 'C' '
'---------------------------------------------'
'---------------------
' Structures for ISDNOpen
'---------------------
Type BdConfig
config_length As Integer
board_id As Integer
mem_address As Integer
mem_range As Integer
io_address As Integer
io_range As Integer
interrupt_req As Integer
bandwidth As Integer
version As String * 16
serial As String * 16
mfr_info As String * 64
num_lines As Integer
reserved As String * 64
line_config_b_line(2) As line_config 'array of two spids (0) and (1)
End Type
'---------------------
' Structures for ISDNconnect
'---------------------
Type CallStructure
call_handle As Integer
board_id As Integer
call_type As Integer
send_queue_size As Integer
recv_queue_size As Integer
dial1 As String * 64
version As Integer
line_id As Integer
listen_mask As Integer
reserved As String * 58
End Type
Type ConnectEvent
event_mask As Integer
win_handle As Integer
msg_value As Integer
callback As Long
End Type
'---------------------
' Structures for Call_Status report
'---------------------
Type StatusStructure
call_handle As Integer
line_id As Integer
call_ref As Integer
call_type As Integer
call_state As Integer
b_channel As Integer
lcn As Integer
called As String * 64
calling As String * 64
reserved As String * 64
End Type
'---------------------
' Specify the hardware
' and line parameters
'---------------------
BoardID% = 1
BdConfig.board_id = BoardID%
BdConfig.mem_address = &hD000
BdConfig.interrupt_req = 10
BdConfig.line_config_b_line(0) = SPID1$
BdConfig.line_config_b_line(1) = SPID2$
'---------------------
' Select hardware
' and load the driver
'---------------------
Result% = ISDNOpen(BoardID%, BdConfig)
'---------------------
' Format the dialing information
' for starting a Voice call
'---------------------
CallStructure.dial1 = DialingNumber$
CallStructure.board_id = BoardID%
CallStructure.call_type = ISDN_B_Voice
'---------------------
' the event mask is set to accept
' any kind of incoming call,
' whether voice or data
'---------------------
ConnectEvent.event_mask = ISDN_Accept_Any
'---------------------
' Place an ISDN call
'---------------------
ConnID% = ISDNConnect(CallStructure, ConnectEvent)
'---------------------
' Get status of current call
'---------------------
Error% = ISDNGetStatus (ConnID%, StatusStructure)
Select Case StatusStructure.call_state
Case CALL_STATE_OUT_CALL_PROC
' setting up the outgoing call
Case CALL_STATE_DELIVERED
' Ringing the other phone
Case CALL_STATE_ACTIVE
' call still active
Case CALL_STATE_DISC_REQ
' hanging up the call
Case CALL_STATE_NULL
' no active calls
End Select
'---------------------
' Terminate the ISDN connection
'---------------------
Error% = ISDNDisconnect(ConnID%)
'---------------------
' Deselect the hardware
' and unload the driver
'---------------------
Error% = ISDNClose(BoardID%)
'---------------------------------------------'
' End of WinISDN programming example. '
' These code segments have been reduced '
' to a minimal form for easier reading. '
' The SDK includes far more detailed coding. '
'---------------------------------------------'