| Ishida Statistical Weigher |
 |
ProtoLink developed a multithreaded I/O Server to gather data
from Ishida statistical weigher models RLC, F, Z, RZ, NZ, M, and R.
The server is capable of communicating with
the machines over both ARCnet and Ethernet networks.
The application dedicates three threads for each ARCnet board configured
for use. One thread sends messages while a second waits for asynchronous
inbound messages and then queues them for processing by a third thread.
Unsolicited messages are readily supported using this approach.
The application dedicates a minimum of six threads for each
Ethernet channel to be used. One thread
is responsible for initialization tasks related to asyncyhronous sockets
communication, including the creation of an I/O Completion Port
and at least two worker threads tasked with removing queued messages from the
I/O Completion Port. An inactivity
timeout detection thread is used to determine those sockets that were once
established by the application but are no longer required.
Finally, as with ARCnet, Ethenet channels
utilize separate threads for sending messages and for processing received
messages.
Four additional threads play important roles in the function of
the Ishida driver. One handles the user interface and the DDE/SuiteLink
interface. A second is responsible for all interactions with an Oracle database,
including periodic inserts of process data. This thread will buffer data
to a flat file in the event that the database is unavailable for a period of
time, thus ensuring that data will not be lost. Upon restoring the
database connection, the thread will despool the records from the flat file and
insert them into the database. The third additional thread updates
application performance counters which may be viewed using the Performance
Monitor application that ships with Windows. The fourth additional thread
processes diagnostic messages queued by
other threads and routes them to a third-party logging application.
The Ishida DDE Server user interface supports run-time switching
between the English and French languages.
|