简介
本程序读取的.csv文件是由KeySight B1500/B1505中IV_ALL程序生成的数据文件,该IV_ALL程序设计用来测量器件的输出曲线及转移曲线,因此其生成的.csv文件包含了多条输出曲线数据、多条转移曲线数据。
本程序设计用来提取多条输出曲线数据、一条转移曲线(Vd=0.1V情况下的VTH_2曲线)。一共编写了3个函数Read_csv()、Get_vd(double Vd[], double Vg[], double Id[])、Get_vg():
- Read_csv负责按行读取.csv文件中(该文件需保存在同一工作文件夹下,若不在同一文件夹可自行修改读取文件的路径)所有内容,并将指定行的输出曲线数据、转移曲线数据分别写入Vd-Id.txt、Vg-Id.txt中,以方便后续提取输出、转移曲线中的数据;
- Get_vd则是读取输出曲线数据Vd-Id.txt,并将数据部分保存至Vd-Id-final.txt,这里有个需要注意的地方:多条输出曲线导致原.csv文件中的Vd值会循环变化,只是对应的Id值不同,这就需要最后写入Vd-Id-final.txt文本中的Vd值只需循环一次,对应的不同Id值依次排列在Vd后边即可;
- Get_vg负责读取转移曲线数据Vg-Id.txt,并将数据部分保存至Vg-Id-final.txt,同时还会在控制台窗口输出最后一行的Vg-Id数据供参考。
目录
1. 读取原csv文件,保存指定行数据
2. 读取输出曲线数据,保存所需数据
3. 读取转移曲线数据,保存所需数据
4. 头文件及主函数
5. 运行结果
1. 读取原csv文件,保存指定行数据
本函数Read_csv先逐行读取同一工作文件夹下的名为D4-11-3-5-2024_6_21 11_18_35.csv的文件,利用count计数来判断读取的行数,当到达Start_row_vd行开始将读取的数据写入到Vd-Id.txt直到Stop_row_vd行结束数据写入(写入的数据就是输出曲线数据),继续读取原csv文件,然后在到达Start_row_vg行再次将读取的数据写入到Vg-Id.txt直到Stop_row_vg行结束(写入的数据就是VTH_2转移曲线数据),继续读取直到结束。最后,在控制台窗口输出.csv文件总行数。
代码如下:
/* 读取csv文件,将其中的输出曲线数据、转移曲线VTH_2数据分别保存至Vd-Id.txt、Vg-Id.txt */
void Read_csv()
{
ifstream infile;
ofstream outfile_vd, outfile_vg;
infile.open("./D4-11-3-5-2024_6_21 11_18_35.csv"); // 文件路径需要修改
outfile_vd.open("./Vd-Id.txt");
outfile_vg.open("./Vg-Id.txt");
if (!infile.is_open())
{
cout << "Fail to open the file!" << endl;
return;
}
string temp;
int count = 1;
// 将csv文件内容读进temp中
while (getline(infile, temp)) // 利用 getline()