Справочник Пользователя для National Instruments NI-DNET

Скачать
Страница из 86
Chapter 3
Developing Your Application
3-10
ni.com
Step 4. Stop Communication
Before you exit your application, stop communication to shut down 
DeviceNet connections to remote devices. Use the Interface Object to 
call the 
ncOperateDnetIntf
 function with the 
Opcode
 parameter set 
to
Stop
.
Step 5. Close Objects
Before you exit your application, close all NI-DNET objects using the 
ncCloseObject
 function.
Multiple Applications on the Same Interface
The NI-DNET software allows multiple NI-DNET applications to use the 
same interface object simultaneously, as long as the interface configuration 
remains the same. For example, you can run both the 
SingleDevice
 
example and SimpleWho on DNET0 as long as the 
Interface MacId
BaudRate
, and 
PollMode
 parameters are the same in both applications 
(SimpleWho uses a 
PollMode
 of 
Scanned
). Similarly, you can open up 
two copies of the 
SingleDevice
 example and communicate with two 
different devices as if it were through a single application. These same rules 
apply to the I/O Object and the Explicit Messaging Object.
As long as all the configuration attributes are the same, any object can be 
opened multiple times. You can enable only one notification or wait 
(through 
ncWaitForState
ncCreateNotification
, or 
ncCreateOccurrence
 functions) for an object, no matter how many 
handles you have opened for that particular object. For example, if you are 
running two copies of the 
SingleDevice
 example on the same interface 
with the same connection types, the notification triggers in only one 
application at a time.
The synchronization of events and the protection of the object I/O data is 
the responsibility of the application developer. Similarly, the application 
performance might change based on the number of objects open and the 
frequency of API calls made in each application. For example, several calls 
to 
ncGetDnetAttribute
 in one application might slow down another 
application running on the same interface.
To ensure proper clean up of all the objects, each open call to an object 
should be matched by a close call to the same object, and each call to 
ncOperateDnetIntf 
with 
NC_OP_START
 code should be matched by 
a call to the same function with 
NC_OP_STOP
 code.