- AuthorSearch Results
Found in Replies
jgauthier posted on August 28, 2020 at 3:29 pm View this postIn reply to: BB60C matlab bbgetiq.m example code
jgauthierParticipantI’m getting there, but having problems with MATLAB.
I started with the
bbgetiq.m
in the SDK, and modified it by trying to redefine the arraytriggers
and the size of ittriggerCount
as specified in the API manual forbbGetIQUnpacked
.I tried:
triggerCount = int32(70); triggers = libpointer('int32', triggerCount); calllib('bb_api','bbGetIQUnpacked',handle,iqarrayptr,iqcountint,... triggers,triggerCount,purgearg,nullptr,nullptr,nullptr,nullptr);
but MATALAB complains:
Error using calllib Array must be numeric or logical or a pointer to one
I can’t figure out how to properly define an array of integers ‘triggerCount’ long…
Found in Replies
Andrew posted on August 27, 2020 at 12:46 pm View this postIn reply to: BB60C matlab bbgetiq.m example code
AndrewModeratorThanks for the clarification.
Yes, you would need to call the vsgSubmitTrigger function from Matlab which you should find easy if you glance at the other wrapper code in VSG60 matlab class.
You could create a loop like this
while(forever) {
vsgSetFreq
vsgSubmitTrigger
vsgSubmitIQ(your_iq_cw_array)
}The trigger is submitted inline with any other function calls to the API.
Hope this helps.
Regards,
AndrewFound in Replies
Andrew posted on August 27, 2020 at 8:58 am View this postIn reply to: BB60C matlab bbgetiq.m example code
AndrewModeratorJGauthier,
You will need to write a dedicated function for that. A wrapper function around the GetIQ functionality should be adequate for performing any triggering on the I/Q data. You could perform video or external triggering with this function. (you didn’t specify trigger type in your message) If external triggering, there is a C++ example showing you how to detect an external trigger event, you would need to then align your capture on the trigger position and collect any additional samples required (with purge disabled to ensure continuity)
The API does not perform any triggering for the user, only provides the facilities for triggering to be performed.
Let me know if you have specific questions as you work through this.
Regards,
AndrewFound in Replies
jgauthier posted on August 27, 2020 at 8:34 am View this postIn reply to: BB60C matlab bbgetiq.m example code
jgauthierParticipantThanks! Is there any example MATLAB code to collect IQ data upon a trigger input from the VSG60 to the BB60? Going through the SDK, all I find on triggers is in the API, not any of the sample code. I.e, do I have to add to VSG60.m to get trigger output status, or should I write a dedicated function for that?
Found in Replies
Andrew posted on August 21, 2020 at 11:31 am View this postIn reply to: BB60C matlab bbgetiq.m example code
AndrewModeratorHi Jgauthier,
This is a good question. The reason this is called twice has less to do with the purge parameter, and more to do with wanting to discard the first chunk of I/Q samples in the stream. Your assumptions about the purge parameter are correct. There are potentially several FIR filters (depending on settings) that are in the signal processing chain when I/Q streaming. These filters take hundreds/thousands of samples to ‘charge’ and until they do, the I/Q samples will not be amplitude accurate. By calling the function once with the purge parameter, this ensures that the first large segment of I/Q samples subject to this charge time are discarded. This is not necessary, but if you do this, doing this only once after each configure is adequate.
Another interesting component of this, the first call to GetIQ might not purge any samples, as there may not be any samples collected yet on the PC. So the worst case scenario is that the first call is just waiting until some samples arrive on the PC, and the second call is the one that actually purges that first chunk of I/Q to arrive.
Feel free to try just 1 call and see if that affects your application.
Also, waiting some small amount of time (100ms) before calling getIQ after configuring the receiver would ensure that the first call to GetIQ purges the first samples.
We chose to give these samples to the user instead of discard them in the API as they could still contain information just at a reduced amplitude.
If you are using any sort of triggering to acquire your waveform, calling the function twice is probably not necessary.
Regards,
AndrewFound in Topics
jgauthier posted on August 21, 2020 at 11:11 am View this postTopic: BB60C matlab bbgetiq.m example code
in forum BB Series DiscussionsSince I’m just a noob when it comes to spectrum analyzers, I have a question when grabbing real-time IQ data from the BB60C.
In the example MATLAB code in bbgetiq.m provided in the SDK:
iqlen = 1024; % Flush IQ data filter ramp up time [status, iqdata] = bbgetiq(handle, iqlen, true); % Get actual data [status, iqdata] = bbgetiq(handle, iqlen, true);
If I’m passing true as the purge argument, then why does the example call the bbgetiq function twice? According to the BB API manual, specifying purge = TRUE discards “any samples acquired by the API since the last time and(sic) bbGetIQ function was called.
It seems that if it were set to false you’d have to call it twice, but if true wouldn’t that accomplish the intent here?
Found in Replies
Andrew posted on May 12, 2020 at 10:52 am View this postIn reply to: Labview Library Errors
AndrewModeratorJason,
The BB60C DLL also relies on the ftd2xx.dll. Is that also present? We include it in the SDK alongside the bb_api.dll.
Found in Replies
Andrew posted on May 4, 2020 at 9:50 am View this postIn reply to: How to record series of spectrums
AndrewModeratorHello Kefei,
If you need to record a series of spectrums, you have a few options. You can used the sweep recording toolbar in Spike (in the sweep measurement mode). You will find the toolbar along the lower part of the Spike application in sweep mode. The file saved is a custom binary file which can either be played back through Spike, or could be parsed programatically. An example C++ parser is in our SDK.
You could also use the SM_API to programatically sweep the SM device and store sweep in whatever format you wish. The SM_API is a C++ DLL for Windows or Linux you can use to control the SM200. You can find this in our SDK. (Software menu on our website).
Regards,
AndrewFound in Replies
jatwood posted on May 1, 2020 at 10:18 am View this postIn reply to: VSG25A Labview API – PSK Data (*symbols)
jatwoodParticipantThanks for the response. I apologize for not being more thorough, I only looked online for the VSG25 API Manual. As you pointed out I see that it is in the install directory.
Found in Replies
Andrew posted on May 1, 2020 at 7:49 am View this postIn reply to: VSG25A Labview API – PSK Data (*symbols)
AndrewModeratorHello jatwood,
The data array should be populated with values between [0,SymbolPositions-1]. For example, for a QAM16 signal, you will pass values between [0,15]. The symbol mappings are in the VSG User manual found in the VSG25 installation folder.
In the UI, we generate a bit string according to the PN sequence and then convert the bit string to symbol positions. For example, for a QAM16 signal if the random bit stream is 00101110, we would convert this to two symbols 0010, 1110, and pass an array of two data symbols to the API, [2, 14].
I apologize, we don’t have any LabVIEW interface for the VSG25.
Regards,
AndrewFound in Topics
- This topic was modified 5 years, 4 months ago by
jatwood.
jatwood posted on April 30, 2020 at 3:13 pm View this postTopic: VSG25A Labview API – PSK Data (*symbols)
in forum VSG Series DiscussionsWhen using the VSG App I am able to select Data = PN7 or PN9 with a seed and I get the desired output.
I cannot find an API reference for Labview and there is no SDK for VSG25 and I need help with sgSetPSK. I assume “Data” is *symbols, however, I can’t figure out how to load it.
I understand the PRBS9 sequence repeats every 511 symbols but can’t figure out how to load a pattern into the 1D array.
Anybody have experience with this?
Found in Replies
bbowar posted on March 3, 2020 at 1:41 pm View this postIn reply to: BB60C QNX 6.4.1 Drivers for 32 bit OS
bbowarParticipantWould Signal Hound be willing to build a 32-bit Linux API for a one time engineering fee? We may be interested depending on the one time fee.
Found in Replies
Andrew posted on March 2, 2020 at 1:16 pm View this postIn reply to: BB60C QNX 6.4.1 Drivers for 32 bit OS
AndrewModeratorbbowar,
We do not have any 32-bit Linux builds for our APIs. We compile on 64-bit Ubuntu 18.04 and CentOS7. We have no plans to target a 32-bit Linux OS at this time. I will make a note that you have requested this.
Regards
Found in Replies
- This reply was modified 5 years, 7 months ago by
Andrew.
Andrew posted on February 12, 2020 at 2:55 pm View this postIn reply to: VSG60A Windows C API
AndrewModeratorHi Mike,
You are correct about the float* parameter. It should be const, and the data is not modified by the API. I will see about getting this in a future update. Yes, you are safe to cast.
I can’t reproduce the issue you are seeing regarding RF output on/off. I wrote a short script to attempt to reproduce. Maybe you could try to run this? If all else fails, maybe you could whip up a simple script I could try to run and reproduce? See code below.
This function simply turns on and off the RF output in 1 second intervals. I observed the power going on and off at these intervals.
void testRFOutput() { int handle = -1; VsgStatus vsgSts = vsgOpenDevice(&handle); if(vsgSts != vsgNoError) { printf("Unable to open VSG\n"); return; } vsgSetFrequency(handle, 1.0e9); vsgSetLevel(handle, -40.0); while(true) { vsgSetRFOutputState(handle, vsgTrue); vsgOutputCW(handle); Sleep(1000); vsgSetRFOutputState(handle, vsgFalse); Sleep(1000); } }
Look forward to your response.
Regards,
AndrewFound in Topics
Mike D posted on February 12, 2020 at 10:37 am View this postTopic: VSG60A Windows C API
in forum VSG Series DiscussionsHello all,
I have a couple of questions regarding the Windows DLL API for the VSG60A. I’m using the latest version of the API (2020-01-06).
The vsgOutputWaveform, vsgRepeatWaveform, and vsgSubmitIQ functions all take input buffers of type ‘float *’. Is there some reason why this is not ‘const float *’? I’m assuming this is a small oversight and I can just pass in a (casted) buffer of const data, but I wanted to be sure. I can’t imagine why the implementation would need to modify the input buffer.
It looks like whenever I turn off RF output (via vsgSetRFOutputState), I can never get any output (using vsgRepeatWaveform or vsgOutputCW) when I turn it back on. The only way for me to get output again is to close the handle and establish a new connection. It’s as if the function can only turn off RF output and not turn it on. I understand that I can stop output via vsgAbort, but I liked the idea of completely gating RF output with that switch independently of current playback.
Any feedback would be greatly appreciated. Thanks for your time.
Mike.
Found in Replies
Andrew posted on February 6, 2020 at 6:25 am View this postIn reply to: Scan and Record
AndrewModeratorrconaway,
It is possible to to record audio in the audio player, but the audio parameters must be entered manually. What do you mean by ‘lock’ to analog audio? If you have a programming background you might be interested in the API which will give you access to sweep measurements and audio. You can find the API in the SDK on our website. Additionally, the BB60C is not capable of performing a sweep and audio demodulation simultaneously.
Let me know if you have follow up questions.
RegardsFound in Replies
DDR posted on February 2, 2020 at 9:13 pm View this postIn reply to: BB60C With SDR#
DDRParticipantDear Justin,
Thanks for the reply.
We are not familiar with API and anyways we will try it from now on wards.
We have also seeked for help from SDR# team to develop the right plugin.
Regards,
DHIVAGAR.DFound in Replies
Justin Crooks posted on January 22, 2020 at 10:00 am View this postIn reply to: BB60C With SDR#
Justin CrooksModeratorWe have not interfaced SDR sharp. One approach would be for your friend to develop a plugin, to connect the BB60C to SDR# directly. Another would be to use our API to save I/Q data as a WAV file and try to play that in SDR#.
Found in Replies
Andrew posted on December 20, 2019 at 7:42 am View this postIn reply to: Demodulate LoRa Signal using SA44B!!
AndrewModeratorSarath,
The Spike software does not have LoRa demodulation capabilities. You would need to use either a third party software platform that supports LoRa measurements (I am not aware of one) or use the API to retrieve the I/Q data and perform the measurement yourself. Additionally, the bandwidth of the SA44B is 250kHz, so you would at least have the bandwidth necessary for the 125 and 250kHz waveforms. I am not familiar with the LoRa standard and am not able to tell you if the SA44B is adequate for LoRa demodulation.
Regards,
AndrewFound in Topics
DDR posted on November 28, 2019 at 1:42 am View this postTopic: Simultaneous IQ and Audio
in forum BB Series DiscussionsIs it possible to get the IQ data and audio simultaneously in BB60C API?
- This topic was modified 5 years, 4 months ago by
- AuthorSearch Results