Data AcQuisition And Real-Time AnalysisScope - Spectrum - Spectrogram - Signal Generator
Software for Windows
Science with your Sound Card!
Contact us about
Custom Remote Control
Instead of invoking DqaCmd directly from your own program, you can use the underlying Windows message scheme for custom remote control. The assembly-language source code for DqaCmd and DqaDlg can serve as examples for this. The code is included along with the executables in the Documents - Daqarta - Utility folder.
The basic scheme requires you to first get a handle to Daqarta using FindWindow with the parameters shown in the examples. Before you send your macro string, you create a COPYDATASTRUCT that includes a special Daqarta ID code, the count of bytes in the string, and a pointer to the string. You then invoke SendMessage to send that to Daqarta. Daqarta copies the data into its own internal buffers and immediately responds back to your program with a WM_USER message that includes the special DQA_REMOTE_ID in wParam, plus a confirmation code (-1) in lParam that indicates your message has been received. You then watch for another WM_USER message (with the same wParam) that will be either 0 for success, or an error code. (See the source code for a complete list of error codes and meanings.)
With this scheme your program can do other work while it is waiting for the WM_USER completion message. (With DqaCmd the program would be blocked unless you issued it from a separate thread.)
Your custom program can also receive fixed-point or floating-point Macro Variable value messages. These are WM_USER messages, with wParam holding a variable ID instead of DQA_REMOTE_ID, and lParam holding the value.
For a fixed-point variable like VarA, use VarA=>> to send the integer part, and VarA=>* to send the fraction part. The wParam IDs will be 'VarA' and 'varA', respectively.
Likewise, for a floating-point variable like A, use A=>> and A=>* and watch for wParam IDs 'intA' and 'frcA'. (The float is converted to fixed-point automatically.)
If you want to send a Cancel message to Daqarta, you use PostMessage with DQA_REMOTE_ID in wParam, and lParam set to 0x100.
The total macro string you pass in COPYDATASTRUCT is limited to 16384 characters, including the terminal null. Longer entries will be truncated by Daqarta, and probably produce an error due to the mangled macro remaining.
Questions? Comments? Contact us!We respond to ALL inquiries, typically within 24 hrs.
Over 30 Years of Innovative Instrumentation
© Copyright 2007 - 2020 by Interstellar Research
All rights reserved