/// <summary> /// Отправляет пакет в ВИАВ /// </summary> public void Send(string paramName, string paramValue) { string data = "{\"h\":{\"s\":\"INS\",\"d\":\"VIT\",\"t\":0},\"p\":{" + "\"" + paramName + "\":" + paramValue + "}}"; Byte[] outputPackage = System.Text.Encoding.ASCII.GetBytes(data); sender.Send(outputPackage); }
/* * private void TransmittionComplete(IAsyncResult result) * { * transceiver.Dispose(); * } */ /// <summary> /// Осуществляет обмен коммуникатора с удаленным узлом в режиме подчиненного узла /// </summary> private void ListenNetworkSlave() { while (state == CommunicatorState.active) { //Получаем датаграмму UDPDatagram currentDatagram = transceiver.ReceiveDatagram(); //Console.WriteLine("{0} : Package of type {1} received.", DateTime.Now, currentDatagramm.PackageType); //Если пришел информационный пакет и включен режим приемопередатчика или приемника if (currentDatagram.PackageType == PackageTypes.Info && (communicationMode == CommunicationMode.Transceiver || communicationMode == CommunicationMode.Receiver)) { ParseInfoPackage(currentDatagram); } // Если принятый пакет - это признак готовности главной машины к приему (Ready) и включен режим приемопередатчика или передатчика else if (currentDatagram.PackageType == PackageTypes.Ready && (communicationMode == CommunicationMode.Transceiver || communicationMode == CommunicationMode.Transmitter)) { //InitializeTransmitter(); UDPDatagram SendDatagram = CreateInfoPackage(); transceiver.Send(SendDatagram); //delTransmitter TransmitterDelegate = new delTransmitter(transmitter.Send); //AsyncCallback TransmitterCallBack = new AsyncCallback(TransmittionComplete); //TransmitterDelegate.BeginInvoke(SendDatagram, TransmitterCallBack, null); } if (InputParametersNumber != 0 && hasInputParameterChanged) { OnDataReceived(EventArgs.Empty); // получены новые данные hasInputParameterChanged = false; } if (OutputParametersNumber != 0) // && currentDatagram.PackageType == PackageTypes.SendData { foreach (Parameter Item in Parameters) { if ((Item.Direction == ParameterDirection.output || Item.Direction == ParameterDirection.inpout) && Item.Value != null) { OnDataSent(new ParameterInfoEventArgs(Item)); // отправлены данные } } } OnDataExchange(EventArgs.Empty); // произошел цикл обмена } }