//Выгрузка данных из ПЛК public void ExportData(ref Server OPCServ) { try { dataOut = new BinaryWriter(new FileStream(sFileName, FileMode.Create)); } catch (IOException ex) { MessageBox.Show("Ошибка создания файла!" + ex.Message); return; } int i = 0; foreach (string sDataBlockName in OPCServ.DataBlockNames) { dataOut.Write("data" + i); Data = OPCServ.ReadData(sDataBlockName); dataOut.Write(OPCServ.DataBlockLength); foreach (Object value in Data) { try { dataOut.Write(Convert.ToUInt16(value)); } catch (IOException ex) { MessageBox.Show("Ошибка записи данных в файл!" + ex.Message); dataOut.Close(); return; } } i++; } if (dataOut != null) dataOut.Close(); }
public MainForm() { InitializeComponent(); OPCServ = new Server(); }
//Загрузка данных в ПЛК public void ImportData(ref Server OPCServ) { try { dataIn = new BinaryReader(new FileStream(sFileName, FileMode.Open)); } catch (IOException ex) { MessageBox.Show("Ошибка открытия файла!" + ex.Message); return; } LoadingForm LoadingFormPLC = new LoadingForm();//форма отображающая прогресс загрузки LoadingFormPLC.Show(); int iDataBlockNum = 1; foreach (string sDataBlockName in OPCServ.DataBlockNames) { string sTemp; Byte Len; try { sTemp = dataIn.ReadString(); Len = dataIn.ReadByte();//длина блока данных } catch (IOException ex) { MessageBox.Show("Ошибка чтения данных из файла! Возможно неправильный формат файла." + ex.Message); dataIn.Close(); return; } LoadingFormPLC.LoadProgressBar.Value = 0; LoadingFormPLC.label1.Text = "Загрузка " + iDataBlockNum + "-го из " + OPCServ.NumDataBlocks + " блоков данных"; LoadingFormPLC.Refresh(); for (int i = 0; i < Len; i++) { Int16 value; try { value = dataIn.ReadInt16(); } catch (IOException ex) { MessageBox.Show("Ошибка чтения данных из файла!" + ex.Message); dataIn.Close(); return; } OPCServ.WriteData(sDataBlockName, i, value); LoadingFormPLC.LoadProgressBar.Value++; DateTime dt1 = DateTime.Now + new System.TimeSpan(1000); while (DateTime.Now < dt1);//Пауза 100мс, чтобы драйвер не сдыхал } iDataBlockNum++; } LoadingFormPLC.label1.Text = "Загрузка завершена..."; LoadingFormPLC.Refresh(); if (dataIn != null) dataIn.Close(); }