public void SharedMem_Wait() { sm1 = null; sm2 = null; try { a = 0; b = 0; thread = new Thread(new ThreadStart(WaitThread)); sm1 = new SharedMem(); sm1.Open("Shared", 100, SharedMem.OpenMode.CREATE_OPEN); sm1.Lock(true); thread.Start(); Thread.Sleep(1000); a = 1; sm1.Unlock(); thread.Join(); Assert.IsTrue(locked); Assert.AreEqual(1, b); } finally { if (sm1 != null) { sm1.Close(); } } }
private void sharedMemoryToolStripMenuItem_Click(object sender, EventArgs e) { try { ContextMenu menu = new ContextMenu(); NodeInfo[] infos = SharedMem.GetNodeInfos(); foreach (NodeInfo info in infos) { MenuItem item = btnOpen_SharedMemoryCreateMenuItem(info.name, info.dstChan); menu.MenuItems.Add(item); } if (infos.Length == 0) { MenuItem item = new MenuItem("(No nodes found)"); item.Enabled = false; menu.MenuItems.Add(item); } menu.Show(this, new System.Drawing.Point(10, 10)); } catch (Exception ex) { MessageBox.Show("Failed to init shared memory. Is the correct shmemchain.dll in the program directory? (" + ex.ToString() + ")"); } }
public void SharedMem_Lock() { sm1 = null; sm2 = null; try { locked = false; thread = new Thread(new ThreadStart(LockThread)); sm1 = new SharedMem(); sm1.Open("Shared", 100, SharedMem.OpenMode.CREATE_OPEN); sm1.Lock(true); thread.Start(); Thread.Sleep(1000); sm1.Unlock(); thread.Join(); Assert.IsTrue(locked); } finally { if (sm1 != null) { sm1.Close(); } } }
public void SharedMem_CreateFail() { SharedMem mem1 = null; SharedMem mem2 = null; try { mem1 = new SharedMem(); mem1.Open("Shared", 100, SharedMem.OpenMode.CREATE_ONLY); mem2 = new SharedMem(); mem2.Open("Shared", 100, SharedMem.OpenMode.CREATE_ONLY); Assert.Fail(); } catch { // This is supposed to throw an exception } finally { if (mem1 != null) { mem1.Close(); } if (mem2 != null) { mem2.Close(); } } }
void Start() { Debug.Log("[ReadSharedMemory] initializing objects..."); // only for .NET 4.0 and above //MemoryMappedFile mmf = MemoryMappedFile.CreateNew(TAG_NAME, SHARED_MEMORY_SIZE); // for all versions of .NET map = new SharedMem(TAG_NAME, true, SHARED_MEMORY_SIZE); }
public SharedMemSink(Control displayControl) { Shmem = new SharedMem(-2, 0, "Demodulator output", 8192); StatusLabel = new Label(); StatusLabel.Text = "Writer idle"; StatusLabel.Dock = DockStyle.Fill; Status = ""; displayControl.Controls.Add(StatusLabel); }
public NetworkDeviceControl() { InitializeComponent(); NetShmemSink = new SharedMem(-2, 0, "Network Output Node"); _SampleSource = new ShmemSampleSource("NetworkReader", NetShmemSink.DstChan, 1, 0); _SampleSource.InvertedSpectrum = false; _SampleSource.SamplingRateChanged += new EventHandler(_SampleSource_SamplingRateChanged); _SampleSource.DataFormat = SampleFormat; _SampleSource.SamplesPerBlock = 8192; }
public void ProcessData(byte[] dataBuffer, SharedMem outChan) { byte[] outBuffer = null; int outBufferPos = 0; if (outChan != null) { outBuffer = new byte[dataBuffer.Length / 2]; } lock (SampleValues) { const int bytePerSamplePair = 4; for (int pos = 0; pos < dataBuffer.Length / bytePerSamplePair; pos++) { double I = ByteUtil.getDoubleFromBytes(dataBuffer, bytePerSamplePair * pos); double Q = ByteUtil.getDoubleFromBytes(dataBuffer, bytePerSamplePair * pos + 2); double phase = Math.Atan2(I, Q); double strength = 20 * Math.Sqrt(I * I + Q * Q); while (phase - lastPhase < -(Math.PI / 2)) { phase += Math.PI; } while (phase - lastPhase > Math.PI / 2) { phase -= Math.PI; } double diff = phase - lastPhase; double finalDiff = diff * strength; SampleValues.Add(finalDiff); if (outBuffer != null) { ByteUtil.putBytesFromDouble(outBuffer, 2 * (outBufferPos++), finalDiff); } totalPhase += diff; lastPhase = phase % (2 * Math.PI); } } if (outChan != null) { outChan.Write(outBuffer, 0, outBufferPos * 2); } }
private void LockThread() { sm2 = new SharedMem(); try { sm2.Open("Shared", 100, SharedMem.OpenMode.CREATE_OPEN); locked = sm2.Lock(false) == null; } finally { sm2.Close(); } }
private void btnOpen_Click(object sender, EventArgs e) { if (ShmemChannel != null) { ShmemChannel.Unregister(); ShmemChannel = null; btnOpen.Text = "Open"; } else { ShmemChannel = new SharedMem(0, -1, "Gauss Generator"); btnOpen.Text = "Close"; } }
private void WaitThread() { sm2 = new SharedMem(); try { sm2.Open("Shared", 100, SharedMem.OpenMode.CREATE_OPEN); locked = sm2.Lock() != null; b = a; sm2.Unlock(); } finally { sm2.Close(); } }
public ShmemSampleSource(string name, int srcChan, int oversampling, double samplingRate, long bufferSize) : base(oversampling) { ShmemChannel = new SharedMem(srcChan, -1, name, bufferSize); ShmemChannel.ReadTimeout = 100; ShmemChannel.ReadMode = eReadMode.TimeLimitedNoPartial; InvertedSpectrum = false; DataFormat = ByteUtil.eSampleFormat.Direct16BitIQFixedPointLE; SamplesPerBlock = 1024; if (samplingRate > 0) { InputSamplingRate = samplingRate; } }
public HiQSDRDeviceControl() { InitializeComponent(); NetShmemSink = new SharedMem(-2, 0, "Network Output Node"); _SampleSource = new ShmemSampleSource("NetworkReader", NetShmemSink.DstChan, 1, 0); _SampleSource.InvertedSpectrum = false; _SampleSource.SamplingRateChanged += new EventHandler(_SampleSource_SamplingRateChanged); _SampleSource.DataFormat = DataFormat; _SampleSource.ForceInputRate(CurrentRate); Endpoint = new IPEndPoint(IPAddress.Any, 0); TransferThread = new Thread(TransferThreadMain); TransferThread.Start(); radioAcqOff.Checked = true; }
public void SharedMem_CreateOpen() { SharedMem mem1 = null; SharedMem mem2 = null; byte * pBuf; try { mem1 = new SharedMem(); mem2 = new SharedMem(); mem1.Open("Shared", 100, SharedMem.OpenMode.CREATE_OPEN); mem2.Open("Shared", 100, SharedMem.OpenMode.CREATE_OPEN); pBuf = mem1.Lock(true); for (int i = 0; i < 100; i++) { Assert.AreEqual(0, pBuf[i]); } pBuf[0] = 77; pBuf[99] = 99; mem1.Unlock(); pBuf = mem2.Lock(true); Assert.AreEqual(77, pBuf[0]); Assert.AreEqual(99, pBuf[99]); } finally { if (mem1 != null) { mem1.Close(); } if (mem2 != null) { mem2.Close(); } } }
private void btnOpen_SharedMemory(object sender, EventArgs e) { ContextMenu menu = new ContextMenu(); NodeInfo[] infos = SharedMem.GetNodeInfos(); foreach (NodeInfo info in infos) { MenuItem item = btnOpen_SharedMemoryCreateMenuItem(info.name, info.dstChan); menu.MenuItems.Add(item); } if (infos.Length == 0) { MenuItem item = new MenuItem("(No nodes found)"); item.Enabled = false; menu.MenuItems.Add(item); } btnOpen.ContextMenu = menu; btnOpen.ContextMenu.Show(btnOpen, new Point(10, 10)); }
private void btnOpen_Click(object sender, EventArgs e) { if (ShmemChannel != null) { ThreadActive = false; Thread.Sleep(10); ReadThread.Abort(); ShmemChannel.Unregister(); ShmemChannel = null; btnOpen.Text = "Open"; } else { ShmemChannel = new SharedMem(0, -1, "C# Test"); ThreadActive = true; ReadThread = new Thread(new ThreadStart(FFTReadFunc)); ReadThread.Start(); btnOpen.Text = "Close"; } }