Adding More Channels in WaveForms
Let’s assume you have an Analog Discovery 2 and love it, but your setup needs more than two oscilloscope channels and the more powerful ADP3450 with FOUR oscilloscope channels would be a bit overkill, like driving a rocket ship to the grocery store. Wouldn’t it be great if a single instance of WaveForms could manage multiple devices to result in the equivalent of a multi-channel scope/generator? Luckily, the advanced triggering options in WaveForms will let you synchronize multiple Digilent Test and Measurement devices so that they can capture, or provide, data simultaneously. Learn more by visiting the discussion on the Digilent Forum.
Using the Script Editor
- Slave application/device saves the data to a file
{ var f = File("1.bin") f.writeDouble(Scope.Channel1.alldata) } { var f = File("2.bin") f.writeDouble(Scope.Channel2.alldata) }
- Master application/device loads the data to ref1/ref2
-
{ // update time information, restore offset/range var r = Scope.Ref1.Range.value var o = Scope.Ref1.Offset.value Scope.Ref1.Clone(Scope.Channel1) Scope.Ref1.Range.value = r Scope.Ref1.Offset.value = o var f = File("1.bin") // we might have to wait for the other process to save the data for(var i = 0; i < 1000 && !f.exist(); i++); // read data and set it to reference channel var rg = f.readDouble() f.deleteFile() Scope.Ref1.data = rg } { var r = Scope.Ref2.Range.value var o = Scope.Ref2.Offset.value Scope.Ref2.Clone(Scope.Channel2) Scope.Ref2.Range.value = r Scope.Ref2.Offset.value = o var f = File("2.bin") for(var i = 0; i < 1000 && !f.exist(); i++); var rg = f.readDouble() f.deleteFile() Scope.Ref2.data = rg }
-
*Important note* For each instance of the time base or position changing, the Ref channel needs to be updated. You can accomplish this by using the Clone function (below):
// update time information, restore offset/range var r = Scope.Ref1.Range.value var o = Scope.Ref1.Offset.value Scope.Ref1.Clone(Scope.Channel1) Scope.Ref1.Range.value = r Scope.Ref1.Offset.value = o