这段代码的作用是什么,每条代码加注释这段代码的作用,加注释void Create_AWG_Data(int adlsb) { int ucBits=12; int NUM_PER_LSB=10; int EZ_ADD_POINT=120; int EG_ADD_POINT=120; double VRang=5; int ScanPoint=0; double CodeNUM=0; double CodePoint=0; CodeNUM = pow(2,ucBits); CodePoint=CodeNUM * NUM_PER_LSB; ScanPoint = (unsigned long)CodePoint + EZ_ADD_POINT + EG_ADD_POINT; double * ScanPointVolt=new double[65536]; assert(ScanPointVolt); for(int z=0; z<ScanPoint/10; z++) { ScanPointVolt[z] = (VRang/CodePoint)(z-120+adlsbScanPoint/10); //Scan from } awg0.LoadData(ScanPointVolt, ScanPoint/10, AWG_VRNG_10V); awg0.LoopEnable(100, AWG_EXT, UP); awg0.CNTCLR(); awg0.CNTEnable(); awg0.Setup(AWG_VRNG_10V, AWG_Filter); awg0.Connect(); delete[] ScanPointVolt; }
时间: 2023-07-16 16:13:06 浏览: 109
这段代码的作用是创建一个 AWG(任意波形发生器)的数据,并将其加载到 AWG 中,具体实现如下:
```
void Create_AWG_Data(int adlsb) {
int ucBits=12; // 设置 AWG 的位数
int NUM_PER_LSB=10; // 每个 LSB 包含的数字数量
int EZ_ADD_POINT=120; // 设置 EasyWave 填充的点数
int EG_ADD_POINT=120; // 设置 EGA 填充的点数
double VRang=5; // 设置 AWG 的电压范围
int ScanPoint=0; // 初始化扫描点数
double CodeNUM=0; // 初始化码数
double CodePoint=0; // 初始化码点
CodeNUM = pow(2,ucBits); // 计算码数
CodePoint=CodeNUM * NUM_PER_LSB; // 计算码点
ScanPoint = (unsigned long)CodePoint + EZ_ADD_POINT + EG_ADD_POINT; // 计算扫描点数
double * ScanPointVolt=new double[65536]; // 创建扫描点电压数组
assert(ScanPointVolt); // 判断扫描点电压数组是否创建成功
for(int z=0; z<ScanPoint/10; z++) { // 循环遍历每个点
ScanPointVolt[z] = (VRang/CodePoint)*(z-120+adlsbScanPoint/10); // 计算扫描点的电压值
}
awg0.LoadData(ScanPointVolt, ScanPoint/10, AWG_VRNG_10V); // 将扫描点电压数据加载到 AWG 中
awg0.LoopEnable(100, AWG_EXT, UP); // 设置 AWG 循环模式
awg0.CNTCLR(); // 清除 AWG 的计数器
awg0.CNTEnable(); // 开启 AWG 的计数器
awg0.Setup(AWG_VRNG_10V, AWG_Filter); // 设置 AWG 的电压范围和滤波器
awg0.Connect(); // 连接 AWG
delete[] ScanPointVolt; // 释放扫描点电压数组内存空间
}
```
注释如下:
- `int ucBits=12;`:将 AWG 的位数设置为 12 位。
- `int NUM_PER_LSB=10;`:每个 LSB 包含 10 个数字。
- `int EZ_ADD_POINT=120;`:EasyWave 填充了 120 个点。
- `int EG_ADD_POINT=120;`:EGA 填充了 120 个点。
- `double VRang=5;`:将 AWG 的电压范围设置为 5V。
- `int ScanPoint=0;`:初始化扫描点数。
- `double CodeNUM=0;`:初始化码数。
- `double CodePoint=0;`:初始化码点。
- `CodeNUM = pow(2,ucBits);`:计算码数。
- `CodePoint=CodeNUM * NUM_PER_LSB;`:计算码点。
- `ScanPoint = (unsigned long)CodePoint + EZ_ADD_POINT + EG_ADD_POINT;`:计算扫描点数。
- `double * ScanPointVolt=new double[65536];`:创建扫描点电压数组。
- `assert(ScanPointVolt);`:判断扫描点电压数组是否创建成功。
- `for(int z=0; z<ScanPoint/10; z++) { ScanPointVolt[z] = (VRang/CodePoint)*(z-120+adlsbScanPoint/10); }`:循环遍历每个点,并计算扫描点的电压值。
- `awg0.LoadData(ScanPointVolt, ScanPoint/10, AWG_VRNG_10V);`:将扫描点电压数据加载到 AWG 中。
- `awg0.LoopEnable(100, AWG_EXT, UP);`:设置 AWG 循环模式为 100,并使用外部触发。
- `awg0.CNTCLR();`:清除 AWG 的计数器。
- `awg0.CNTEnable();`:开启 AWG 的计数器。
- `awg0.Setup(AWG_VRNG_10V, AWG_Filter);`:设置 AWG 的电压范围和滤波器。
- `awg0.Connect();`:连接 AWG。
- `delete[] ScanPointVolt;`:释放扫描点电压数组内存空间。
阅读全文