diff --git a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs index 1534294..3cfcc69 100644 --- a/MTC_Adapter/MTC_Adapter/AdapterOsai.cs +++ b/MTC_Adapter/MTC_Adapter/AdapterOsai.cs @@ -194,10 +194,8 @@ namespace MTC_Adapter tryConnect(); lg.Info("End init Adapter OSAI"); - // !!!CHECK!!! aggiunto banco ack/strobe del 2 processo IN CODA... 5DW!!! + // !!!HARD CODED!!! aggiunto banco STATUS del 2 processo IN CODA... (4+1)DW=20byte x strobes...!!! Strobes = new byte[20]; - Acknowl = new byte[20]; - } /// /// Override disconnessione @@ -277,19 +275,36 @@ namespace MTC_Adapter base.getStrobeAndAckStatus(); if (connectionOk) { - int numByte = Acknowl.Length + Strobes.Length; - // leggo TUTTO ack e strobe... - ushort[] MemBlock_W = new ushort[numByte / 2]; - int memIndex = 19018; + // leggo TUTTO ack e strobe... in blocco di 16 WORD (32 byte) + altre 2 in coda... + ushort[] MemBlock_A = new ushort[16]; + ushort[] MemBlock_B = new ushort[2]; - // LEGGO a WORD 16bit (+ veloce...) + int memIndexA = 19018; + int memIndexB = 19698; + + // LEGGO SEMPRE a WORD 16bit (+ veloce...) + + // leggo blocco dati + grande... inizio = DateTime.Now; - OsaiMemRW_Word(R, OSAI.MemTypeWord.MW_CODE, memIndex, ref MemBlock_W); - if (utils.CRB("recTime")) TimingData.addResult(string.Format("R-{0}-WW", MemBlock_W.Length * 2), DateTime.Now.Subtract(inizio).Ticks); + OsaiMemRW_Word(R, OSAI.MemTypeWord.MW_CODE, memIndexA, ref MemBlock_A); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R-{0}-W4", MemBlock_A.Length * 2), DateTime.Now.Subtract(inizio).Ticks); - // suddivido! - Buffer.BlockCopy(MemBlock_W, 0, Acknowl, 0, Acknowl.Length); - Buffer.BlockCopy(MemBlock_W, Acknowl.Length, Strobes, 0, Strobes.Length); + // leggo blocco dati + piccolo + inizio = DateTime.Now; + OsaiMemRW_Word(R, OSAI.MemTypeWord.MW_CODE, memIndexB, ref MemBlock_B); + if (utils.CRB("recTime")) TimingData.addResult(string.Format("R-{0}-W1", MemBlock_B.Length * 2), DateTime.Now.Subtract(inizio).Ticks); + + // suddivido blocco a blocco... da file di conf x OSAI!!! + + //Buffer.BlockCopy(MemBlock_A, 0, Acknowl, 0, Acknowl.Length); + //Buffer.BlockCopy(MemBlock_A, Acknowl.Length, Strobes, 0, Strobes.Length); + + // primi 12 byte ad ACK + Buffer.BlockCopy(MemBlock_A, 0, Acknowl, 0, Acknowl.Length - 4); + // altri 4 byte ad ACK blocco secondario + Buffer.BlockCopy(MemBlock_B, 0, Acknowl, Acknowl.Length - 4, 4); + // tutti i 16+4 byte a strobe/status + Buffer.BlockCopy(MemBlock_A, Acknowl.Length - 4, Strobes, 0, Strobes.Length); } else { @@ -304,8 +319,7 @@ namespace MTC_Adapter { base.processStrobe(); - // gestione multipath: inizializzo al primo (poi verifico da config SE ci sia il secondo...) - // cicl su path + // gestione multipath: ciclo for (int i = 1; i <= currAdpConf.nPath; i++) { processPath(i);