Jump to content
  • 0

Does PCI-DAS4020-12 support Win 10 Pro 64bit?


ScottFSM

Question

10 answers to this question

Recommended Posts

  • 0

Hello @ScottFSM.

The PCI-DAS4020/12 is an obsolete product.  The board is not supported under Windows 10.  Use the current version of InstaCal, if you do attempt to install and use the PCI-DAS4020/12 with a Windows 10 64-bit system.  64-bit support for this board was added back with InstaCal v6.20.

Regards,

Fausto

 

Edited by Fausto
additional info
Link to comment
Share on other sites

  • 0

Which function I can use instead of cbAInScan() in Windows 64bit OS?
Hello?
I have been use cbAInScan() in Windows x86 OS for a while. I need to transport my system to x64 and did it one by one.
However, I found that cbAInScan() didn't work correctly in x64 OS. I compared at x86 and x64.
The cbAInScan returned data correctly in x86, but returned 0 in x64 OS.
Is there any other proper function to get Analog Input function instead of cbAInScan in x64 OS?
 
Best Regards,
Scott

Link to comment
Share on other sites

  • 0
6 hours ago, Fausto said:

Hello @ScottFSM.

The MCC Universal Library (UL) function, cbAInScan(), is supported in a Windows 64-bit OS.  

Did you rebuild your application with the current cbw64.dll or cbw32.dll and for an ANY CPU platform?

What is the sampling rate range being used?

UL Help

Regards,

Fausto

Hi Fausto,

Yes we rebuild our application with cbw64.dll. We are using 3,600,000 Hz for rate and BIP5VOLTS for range.

And we are using UL Ver 6.74. with Win 10 64bit.

 

 

Thanks for your support.

Best Regards,

Scott

 

//------------------------------------------------------------------------------ 

// This is the code we have been using in 32bit application....

//-----------------------------------------------------------------------------

BOOL CEchoProbe::StartMeasurement(/*short MeSet, */BOOL bFilter, float fGuessThick, float fGuessRange) {
    SetStatus(BUSY_STATUS);
    short nCurScanStatus;
    long CurCount, CurIndex;

    short MCBoardNo = p413App->MCBoardNo;

    // Grab a set of data from measurement computing card [9/29/2012 Yuen]
    SetEvent(m_hCalculatingEvent);

    cbGetStatus(MCBoardNo, &nCurScanStatus, &CurCount, &CurIndex, AIFUNCTION);
    if (nCurScanStatus == RUNNING) {
        return FALSE;
    }

    int ErrStatus;
    if (!bEventSet) {
        if (!SetupEvents(ErrStatus, MCBoardNo)) {
            return FALSE;
        }
    }

    long lRate = EPMAX_RATE;
    int AInStatus = cbAInScan(MCBoardNo, 0, 3, NUMBER_OF_INTEREST_DATASETS * 4, &lRate, m_nRangeLevel, (HGLOBAL)pRawDataArraySpaceA, BACKGROUND | EXTTRIGGER | CONVERTDATA);

    if (AInStatus != NOERRORS) {
        cbMemReset(MCBoardNo);
        ClearEcho(MCBoardNo);
        SetStatus(ERROR_STATUS);
        if (m_lpfnReadingErrorProc) {
            m_lpfnReadingErrorProc(AInStatus, m_lpReadingErrorParam);
        }
        if (pGenMessage) {
            CString str;
            str.Format("AIStatus: %d", AInStatus);
            pGenMessage->SetWindowText(str);
        }
        return FALSE;
    }
    return TRUE;
}

Edited by ScottFSM
Link to comment
Share on other sites

  • 0
On 1/16/2024 at 4:41 AM, Fausto said:

Hello @ScottFSM.

Does your code use cbWinBufAlloc32() or cbWinBufAlloc64() to allocate the memory buffer?  What size is your memory buffer?  What is the total number of samples to be collected?

UL Help

Regards,

Fausto

 

 

Hi Fausto,

 

I'm so sorry to bother you again. Please check my answer below. 

We are using   cbWinBufAlloc ( 125000 * 4 ) for memory allocation. So memory buffer size is 500,000 bytes for each buffer. 

There are two data buffer.

pRawDataArraySpaceA = cbWinBufAlloc(125000 * 4);

pRawDataArraySpaceB = cbWinBufAlloc(125000 * 4);

 

As a result, we are using  1,000,000 bytes for data collection totally.

 

Best Regards

Scott

Edited by ScottFSM
Link to comment
Share on other sites

  • 0

Hello @ScottFSM.

That bit of code looks fine.  I do not see where you use pRawDataArraySpaceB in the snippet of code provided earlier in this post.  Were there any changes made to the code involving MCC's UL function calls?  If you reduce the size of both buffers, does that work?  Do you get any errors or just '0' data values?  Try slowing your sampling rate and reducing the number of A/D samples to collect, NUMBER_OF_INTEREST_DATASETS.  

Try running the ULAI04.C example (located in the C:\Users\Public\Documents\Measurement Computing\DAQ\C\Sample32 directory) with your device in the Windows 10 64-bit system.  Do you receive valid data with that example?

Regards,

Fausto

Link to comment
Share on other sites

  • 0
9 hours ago, Fausto said:

Hello @ScottFSM.

That bit of code looks fine.  I do not see where you use pRawDataArraySpaceB in the snippet of code provided earlier in this post.  Were there any changes made to the code involving MCC's UL function calls?  If you reduce the size of both buffers, does that work?  Do you get any errors or just '0' data values?  Try slowing your sampling rate and reducing the number of A/D samples to collect, NUMBER_OF_INTEREST_DATASETS.  

Try running the ULAI04.C example (located in the C:\Users\Public\Documents\Measurement Computing\DAQ\C\Sample32 directory) with your device in the Windows 10 64-bit system.  Do you receive valid data with that example?

Regards,

Fausto

There is another routine to use pRawDataArraySpaceB. We get just '0' data without errors. There was no change in case of sampling rate reducing. 

I'll test with reduced number of A/D sample.

I'll test with ULAI04.C. and let you know the result.

Thanks for your help.

 

Best Regards,

Link to comment
Share on other sites

  • 0
On 1/18/2024 at 11:09 PM, Fausto said:

Hello @ScottFSM.

That bit of code looks fine.  I do not see where you use pRawDataArraySpaceB in the snippet of code provided earlier in this post.  Were there any changes made to the code involving MCC's UL function calls?  If you reduce the size of both buffers, does that work?  Do you get any errors or just '0' data values?  Try slowing your sampling rate and reducing the number of A/D samples to collect, NUMBER_OF_INTEREST_DATASETS.  

Try running the ULAI04.C example (located in the C:\Users\Public\Documents\Measurement Computing\DAQ\C\Sample32 directory) with your device in the Windows 10 64-bit system.  Do you receive valid data with that example?

Regards,

Fausto

Dear Fausto,

I could get correct data using sample ULAI04.C.  I compared the sample and my code. The sample code doesn't use EXTTIRGGER option. But my code is using EXTTRIGGER as an option with TRIG_HIGH.

 

BOOL CEchoProbe::SetupEvents(int& ErrStatus, short BoardNum) {
    cbMemReset(BoardNum);
    ClearEcho(BoardNum);

    ErrStatus = cbEnableEvent(BoardNum, ON_END_OF_AI_SCAN, 0, OnReadingEnd, this);
    if (ErrStatus == NOERRORS) {
        ErrStatus = cbEnableEvent(BoardNum, ON_SCAN_ERROR, 0, OnReadingError, this);
        if (ErrStatus == NOERRORS) {
            ErrStatus = cbSetTrigger(BoardNum, TRIG_HIGH, 1000, 4095);  
            bEventSet = TRUE;
            return TRUE;
        }
    }

    cbMemReset(BoardNum);
    ClearEcho(BoardNum);
    SetStatus(ERROR_STATUS);
    if (m_lpfnReadingErrorProc) {
        m_lpfnReadingErrorProc(ErrStatus, m_lpReadingErrorParam);
    }
    bEventSet = FALSE;
    return FALSE;
}
 

cbSetTrigger() return NOERRORS in 32bit OS, However it returns 49 (BADTRIGTYPE) in 64bit OS.

UL help file is recommending to use TRIGABOVE or TRIGBELOW

image.png.da03fe2740b0f681411f0f3f27e3a3df.png

What do we need to do to use TRIGABOVE analog signal instead of TRIG_HIGH digital signal?

Best Regards,

Scott

 

 

Link to comment
Share on other sites

  • 0

Hello @ScottFSM.

The TRIGABOVE and TRIGBELOW trigger types are used for analog hardware triggering.  If your external trigger is a digital (TTL) signal connected to the Trig/Ext Clk BNC input or the A/D Start Trigger input on the 40-pin connector (P3), then use TRIG_POS_EDGE or TRIG_NEG_EDGE as the trigger type.  The LowThreshold and HighThreshold arguments in cbSetTrigger() are ignored.  UL Help

image.png

 

image.png

 

Regards,

Fausto

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...