Esempio n. 1
0
        /*
         * Sends a CEcho request to the server to verify that the client/server info is valid
         */
        private void btnVerify_Click(object sender, EventArgs e)
        {
            try
            {
                txtLog.Text = "";

                // update changed settings
                _globals.m_MWLServer.AETitle = txtServerAE.Text;
                _globals.m_MWLServer.Address = IPAddress.Parse(txtServerIP.Text);
                _globals.m_MWLServer.Port    = Convert.ToInt32(txtServerPort.Text);
                _globals.m_strMWLClientAE    = txtClientAE.Text;

                // Send a CEcho to check the settings
                EnableControls(false);

                CEcho cecho = new CEcho();

                cecho.ImplementationClass       = CONFIGURATION_IMPLEMENTATIONCLASS;
                cecho.ImplementationVersionName = CONFIGURATION_IMPLEMENTATIONVERSIONNAME;
                cecho.ProtocolVersion           = CONFIGURATION_PROTOCOLVERSION;
                cecho.Status += new StatusEventHandler(cecho_Status);
                _cecho        = cecho;
                cecho.Echo(_globals.m_MWLServer, _globals.m_strMWLClientAE);
            }
            catch (FormatException ex)
            {
                if (ex.Message == "An invalid IP address was specified.")
                {
                    MessageBox.Show("The specified IP address is invalid.");
                }
                else
                {
                    MessageBox.Show("Error:\r\n" + ex.ToString());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error:\r\n" + ex.ToString());
            }
        }
Esempio n. 2
0
        /*
         * Provides feedback regarding the CEcho request
         */
        private void cecho_Status(object sender, StatusEventArgs e)
        {
            try
            {
                string message = "";
                bool   done    = false;

                if (e.Type == StatusType.Error)
                {
                    message = "DICOM error. The process will be terminated! -- Error code is: " + e.Error.ToString();
                }
                else
                {
                    switch (e.Type)
                    {
                    case StatusType.ConnectFailed:
                        message  = "Connect operation failed.\r\n";
                        message += "\tError: " + e.Error.ToString();
                        done     = true;
                        break;

                    case StatusType.ConnectSucceeded:
                        message  = "Connected successfully.\r\n";
                        message += "\tPeer Address:\t" + e.PeerIP.ToString() + "\r\n";
                        message += "\tPeer Port:\t\t" + e.PeerPort.ToString();
                        break;

                    case StatusType.SendAssociateRequest:
                        message = "Sending association request...";
                        break;

                    case StatusType.ReceiveAssociateAccept:
                        message  = "Received Associate Accept.\r\n";
                        message += "\tCalling AE:\t" + e.CallingAE + "\r\n";
                        message += "\tCalled AE:\t" + e.CalledAE;
                        break;

                    case StatusType.ReceiveAssociateReject:
                        message  = "Received Associate Reject! \r\n";
                        message += "\tResult: " + e.Result.ToString() + "\r\n";
                        message += "\tReason: " + e.Reason.ToString() + "\r\n";
                        message += "\tSource: " + e.Source.ToString();
                        break;

                    case StatusType.AbstractSyntaxNotSupported:
                        message = "Abstract Syntax NOT supported!";
                        break;

                    case StatusType.ConnectionClosed:
                        message = "Network Connection closed!";
                        done    = true;
                        break;

                    case StatusType.ProcessTerminated:
                        message = "Process has been terminated!";
                        done    = true;
                        break;

                    case StatusType.SendCEchoRequest:
                        message = "Sending CEcho request...";
                        break;

                    case StatusType.ReceiveCEchoResponse:
                        message  = "Received CEcho response.\r\n";
                        message += "\tPresentation ID: " + e.PresentationID.ToString() + "\r\n";
                        message += "\tMessage ID: " + e.MessageID.ToString() + "\r\n";
                        message += "\tAffected Class: " + e.AffectedClass.ToString();
                        if (e._Error == DicomExceptionCode.Success)
                        {
                            _globals.bMWLServerValid = true;
                        }
                        break;

                    case StatusType.SendReleaseRequest:
                        message = "Sending release request...";
                        break;

                    case StatusType.ReceiveReleaseResponse:
                        message = "Receiving release response";
                        done    = true;
                        break;

                    case StatusType.Timeout:
                        message = "Communication timeout. Process will be terminated.";
                        done    = true;
                        break;
                    }
                }
                LogText(message);
                if (done)
                {
                    EnableControls(true);

                    if (null != _cecho && _cecho.IsConnected())
                    {
                        _cecho.Close();
                        _cecho.Dispose( );
                        _cecho = null;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }