Please select To the mobile version | Continue to access the desktop computer version

Electronic Engineer Discuss

View: 146|Reply: 4

HT6022BE虚拟示波器第二次开发问题

[Copy link]

1

Threads

2

Posts

2

Credits

新手上路

Rank: 1

Credits
2
Post time 2020-11-19 18:59:01 | Show all posts |Read mode

1.那个前辈有编有C#版本
2.pCH1Data返回ad值怎样换算成电压值(例 :1.538V)
3.显示测试频率
Reply

Use magic Report

53

Threads

192

Posts

364

Credits

版主

Rank: 7Rank: 7Rank: 7

Credits
364
Post time 6 day(s) ago | Show all posts



1. 开发示例没有C#
2. 转换公式:电压 = data * 8 * 通道电压档位 / 255
3. 频率(也包括其他属性)是对获取的波形数据进行计算得出。

1

Threads

5

Posts

5

Credits

新手上路

Rank: 1

Credits
5
Post time 6 day(s) ago | Show all posts
我有写过在虚拟示波器软件上用的插件,不过好像48Mhz采样有问题,应该是经过插值计算还是怎么回事,得回来的数据不准确,频率显示为正常值的两倍

1

Threads

2

Posts

2

Credits

新手上路

Rank: 1

Credits
2
 Author| Post time 5 day(s) ago | Show all posts
ying replied at 2020-11-23 14:33
1. 开发示例没有C#
2. 转换公式:电压 = data * 8 * 通道电压档位 / 255
3. 频率(也包括其他属性)是对 ...

       换算电压有点不对,请指点一下

        //转换公式:电压 = data * 8 * 通道电压档位 / 255
        m_nDevIndex = 0;
        m_nCH1VoltDIV = 5;//1V/DIV
        m_nCH2VoltDIV = 5;//1V/DIV
        m_nTimeDIV = 14;//1MSa/s

        if(dsoOpenDevice(0))
        {
                dsoChooseDevice(m_nDevIndex,1);
                dsoGetCalLevel(m_nDevIndex,m_nCalData,32);
                dsoSetVoltDIV(m_nDevIndex,0,m_nCH1VoltDIV);
                dsoSetVoltDIV(m_nDevIndex,1,m_nCH2VoltDIV);
                dsoSetTimeDIV(m_nDevIndex,m_nTimeDIV);
        }
        else
        {
                AfxMessageBox("No device was found!");
        }

        short* pCH1Data;
        short* pCH2Data;
        ULONG nReadLen = 10240;//10k
        ULONG nDrawLen = 10000;
        short nTrigLevel = 64;
        short nSlope = 0;// 0:Rise; 1: Fall
        short nHTrigPos = 50;// 0 ~ 100
        ULONG nTrigPoint = 0;
        CRect rc;
        m_stcDraw.GetClientRect(&rc);
        pCH1Data = new short[nReadLen];
        pCH2Data = new short[nReadLen];               


        short nRe = dsoReadHardData(m_nDevIndex,// 设备的索引值
                pCH1Data,//存储CH1数据的缓冲区指针
                pCH2Data,//存储CH2数据的缓冲区指针
                nReadLen,//读取数据的长度
                m_nCalData,//校对电平(参考函数dsoGetCalLevel )
                m_nCH1VoltDIV,//CH1的电压档位
                m_nCH2VoltDIV,//CH2的电压档位
                0,//扫频模式—0: AUTO; 1: Normal; 2: Single
                0,//触发信源--- 0: CH1; 1: CH2
                nTrigLevel,//触发电平 – 0 ~ 255
                nSlope,//触发沿方式—0: Rise; 1: Fall
                m_nTimeDIV,//采样率档位
                nHTrigPos,//水平触发位置---0 ~ 100
                nDrawLen,//显示数据的长度
                &nTrigPoint,//返回触发点的索引值
                0//差值方式—0: Step 差值; 1: Line 差值; 2: SinX/X 差值
                );
             //2. 转换公式:电压 = data * 8 * 通道电压档位 / 255
        for (int i = 0; i<nReadLen; i++)
        {
                int temp = (int)pCH1Data * 8 * m_nCH1VoltDIV / 255;
                float temp_1 = temp;
        }

53

Threads

192

Posts

364

Credits

版主

Rank: 7Rank: 7Rank: 7

Credits
364
Post time 3 day(s) ago | Show all posts
luyongmaokf replied at 2020-11-24 10:34
换算电压有点不对,请指点一下

        //转换公式:电压 = data * 8 * 通道电压档位 / 255

int temp = (int)pCH1Data * 8 * m_nCH1VoltDIV / 255;

m_nCH1VoltDIV是电压档位索引值,不是电压档位电压值,要换成电压值(例如1.0V/DIV,取1.0这个值),公式直接使用float或double计算,不要int转换。
You have to log in before you can reply Login | Register

Points Rules

QQ|Dark room|Mobile|Archiver|Electronic Engineer Discuss

2020-11-29 15:35 GMT+8 , Processed in 0.363969 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

Quick Reply To Top Return to the list