[闲扯] AI 编程真不错
本帖最后由 scoopydoo 于 2024-11-10 20:28 编辑又到了周末看球时间,趁着球赛还没开始,调戏一下 AI 吧。
刚刚在隔壁帖子提到用两台源表测晶体管曲线,就用这个测试一下吧,俺给 AI 的指令如下:
写一个PySide6应用程序,用PyVisa库控制两台源表(SMU)测量晶体管I-V曲线,在一个matplotlib控件中画出曲线
CoPilot 的回答如下:
好的,我来帮你写一个简单的PySide6应用程序,使用PyVisa库控制两台源表(SMU)测量晶体管的I-V曲线,并在一个matplotlib控件中绘制曲线。以下是一个示例代码。
安装所需的库
首先,确保你已经安装了以下库:
pip install PySide6 pyvisa matplotlib numpy
主程序代码
import sys
import numpy as np
import matplotlib.pyplot as plt
from PySide6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton)
from PySide6.QtCore import QTimer
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas
import pyvisa
class MplCanvas(FigureCanvas):
def __init__(self, parent=None, width=5, height=4, dpi=100):
fig, self.ax = plt.subplots(figsize=(width, height), dpi=dpi)
super(MplCanvas, self).__init__(fig)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.canvas = MplCanvas(self, width=5, height=4, dpi=100)
self.button = QPushButton("Measure I-V Curve")
self.button.clicked.connect(self.measure_iv_curve)
layout = QVBoxLayout()
layout.addWidget(self.canvas)
layout.addWidget(self.button)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
self.rm = pyvisa.ResourceManager()
self.smu1 = self.rm.open_resource("GPIB0::24::INSTR")# 替换为你的源表地址
self.smu2 = self.rm.open_resource("GPIB0::25::INSTR")# 替换为你的源表地址
def measure_iv_curve(self):
vgs_values = np.linspace(0, 5, 100)# 样品电压值
id_values = []
for vgs in vgs_values:
self.smu1.write(f"VOLT {vgs}")
id_current = float(self.smu2.query("MEAS:CURR?"))
id_values.append(id_current)
self.canvas.ax.clear()
self.canvas.ax.plot(vgs_values, id_values, label="I-V Curve")
self.canvas.ax.set_xlabel("Vgs (V)")
self.canvas.ax.set_ylabel("Id (A)")
self.canvas.ax.legend()
self.canvas.draw()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
代码说明
MplCanvas 类: 用于在PySide6应用程序中嵌入matplotlib图形。
MainWindow 类: 主窗口类,包含一个matplotlib画布和一个按钮。
measure_iv_curve 方法: 控制源表(SMU)测量I-V曲线并绘制到matplotlib图形中。
请确保替换代码中self.smu1和self.smu2的资源地址为你的源表的实际地址。如果你需要进一步的帮助或调整,请告诉我!
可以看出程序的框架没有什么问题,改一改就可以用了。于是俺又提出要求:
你给出的代码中的Vgs、Id等字样可以看出你这个程序是用来测量FET管的,改成测量BJT的吧
CoPilot 的回应如下:
明白了,我们将调整程序以测量双极性晶体管(BJT)的I-V特性。对于BJT,我们通常测量集电极电流 Ic 与集电极-发射极电压 Vce 和基极电流 Ib 的关系。
这里是更新后的代码:
import sys
import numpy as np
import matplotlib.pyplot as plt
from PySide6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton)
from PySide6.QtCore import QTimer
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas
import pyvisa
class MplCanvas(FigureCanvas):
def __init__(self, parent=None, width=5, height=4, dpi=100):
fig, self.ax = plt.subplots(figsize=(width, height), dpi=dpi)
super(MplCanvas, self).__init__(fig)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.canvas = MplCanvas(self, width=5, height=4, dpi=100)
self.button = QPushButton("Measure I-V Curve")
self.button.clicked.connect(self.measure_iv_curve)
layout = QVBoxLayout()
layout.addWidget(self.canvas)
layout.addWidget(self.button)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
self.rm = pyvisa.ResourceManager()
self.smu_vce = self.rm.open_resource("GPIB0::24::INSTR")# 替换为你的集电极源表地址
self.smu_ib = self.rm.open_resource("GPIB0::25::INSTR") # 替换为你的基极源表地址
def measure_iv_curve(self):
vce_values = np.linspace(0, 10, 100)# 样品 VCE 值
ib_values = # 样品 IB 值 (基极电流)
self.canvas.ax.clear()
for ib in ib_values:
ic_values = []
self.smu_ib.write(f"CURR {ib}")
for vce in vce_values:
self.smu_vce.write(f"VOLT {vce}")
ic_current = float(self.smu_vce.query("MEAS:CURR?"))
ic_values.append(ic_current)
self.canvas.ax.plot(vce_values, ic_values, label=f"Ib = {ib*1e3} mA")
self.canvas.ax.set_xlabel("Vce (V)")
self.canvas.ax.set_ylabel("Ic (A)")
self.canvas.ax.legend()
self.canvas.ax.set_title("BJT I-V Characteristics")
self.canvas.draw()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
代码说明:
vce_values: 这是集电极-发射极电压 Vce 的一系列值。
ib_values: 这是基极电流 Ib 的一系列值(这里选择了三个不同的基极电流)。
measure_iv_curve 方法: 控制两个源表(一个用于设置基极电流,另一个用于测量集电极电流)测量并绘制I-V曲线。
请确保替换代码中self.smu_vce和self.smu_ib的资源地址为你的源表的实际地址。如果需要进一步调整或有其他问题,随时告诉我! :)
整个过程 AI 反应非常迅速,可以说是毫不犹豫、不假思索、水银泻地、势如破竹、举重若轻、一气呵成 ...... :lol 大陆不跳强用不了Copilot 现在AI这么牛了?那以后自动控制设备PLC编程都不需要人工了:lol chipset009 发表于 2024-11-10 20:31
大陆不跳强用不了Copilot
用别的也可以吧,俺用 CoPilot 是因为它就在 Windows 的任务栏上,方便。 qhj 发表于 2024-11-10 20:40
现在AI这么牛了?那以后自动控制设备PLC编程都不需要人工了
目前暂时还要人工审核、把关的,以后就不好说了 :lol 能极大提高效率,有些程序稍微修改下就可以直接用 AI懂得语言多,还能横向比较
上次给出PIL(Python),GDI和SDL(C++),三种代码实现
碉堡了 scoopydoo 发表于 2024-11-10 20:43
用别的也可以吧,俺用 CoPilot 是因为它就在 Windows 的任务栏上,方便。
CoPilot 在WINdows11那个版本能用,我下了几个11,没一个能用。现在只能用智障的文心 快乐01 发表于 2024-11-10 22:27
CoPilot 在WINdows11那个版本能用,我下了几个11,没一个能用。现在只能用智障的文心
Windows 11 肯定可以用的,不过国内好像用不了 ... qhj 发表于 2024-11-10 20:40
现在AI这么牛了?那以后自动控制设备PLC编程都不需要人工了
是的,模式化的编程工作已经可以用AI取代了,人工做审核就行,但是创造性的编程还是要人的 MF35_ 发表于 2024-11-10 23:58
是的,模式化的编程工作已经可以用AI取代了,人工做审核就行,但是创造性的编程还是要人的
AI会觉得“无知的人类,真以为写过几天代码就能评审我精巧而优美的代码了吗?”
至此,拉开AI消灭人类的序幕;P 只有科学上网,才能用AI。 小花猫长高了 发表于 2024-11-11 03:30
只有科学上网,才能用AI。
我们怕什么?强一年比一年高 人和AI开始卷起来了? ywmxyz 发表于 2024-11-11 04:43
我们怕什么?强一年比一年高
他们怕什么?强一年比一年高。
页:
[1]
2