最新版はこちら。 突っ込みは各日付の BBS エントリのほか、 メール (nakano@st.seikei.ac.jp) や フォーム からどうぞ。 なおスパム除けのため、BBS 機能には 緩い認証を入れて います。 検索エンジンから来た方は、エンジンの方のキャッシュを見るか、 下の簡易検索を試してみてください。
|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
||||||||||||||||||||||||||||||||||||||||||||||||
import os print(f"{os.getcws()}")でわかる。自分は C:\Users\nakano だった。
jupyter nbconvert --to python .\hoge.jpynb
#!/usr/bin/env python # coding: utf-8 # In[1]: import serial import time import sys import matplotlib.pyplot as plt # In[2]: class Spe: def __init__(self, port): try: self.spe = serial.Serial(port, 115200, timeout=None) except: print(f"{port} の機器を認識できません") self.spe.close() sys.exit() self.spe.write('*idn?\r\n'.encode()) line = self.spe.readline() idArray = line.decode().rstrip().split(',') print(f"{idArray[1]} is ready\n") self.setV(0.0) self.setI(0.0) self.setVL(5.0) self.setIL(0.1) def __del__(self): self.outOff() self.setV(0.0) self.setI(0.0) self.setVL(5.0) self.setIL(0.1) self.spe.close() def setVL(self, vlimit): self.spe.write(f"VOLT:LIM {vlimit}\r\n".encode()) def setV(self, voltage): self.spe.write(f"VOLT {voltage}\r\n".encode()) def setIL(self, climit): self.spe.write(f"CURR:LIM {climit}\r\n".encode()) def setI(self, current): self.spe.write(f"CURR {current}\r\n".encode()) def outOn(self): self.spe.write('OUTP ON\r\n'.encode()) def outOff(self): self.spe.write('OUTP OFF\r\n'.encode()) def getV(self): self.spe.write("MEAS:VOLT?\r\n".encode()) line = self.spe.readline() return float(line.decode().rstrip()) def getI(self): self.spe.write("MEAS:CURR?\r\n".encode()) line = self.spe.readline() return float(line.decode().rstrip()) # In[3]: spe6102 = Spe("COM4") spe6102.setVL(12.0) spe6102.setIL(0.5) # In[4]: spe6102.setV(12) spe6102.outOn() voltage_data = [] current_data = [] for n in range(11): current = 0.01 * n spe6102.setI(current) time.sleep(1.5) voltage = spe6102.getV() current = spe6102.getI() voltage_data.append(voltage) current_data.append(current) print(f"{voltage},{current}") spe6102.outOff() del spe6102 # In[5]: plt.figure(figsize=(8,6)) plt.plot(voltage_data, current_data, marker = 'o', linestyle = '', label = '100 ohm') plt.xlabel('Voltage [V]') plt.ylabel('Current [A]') plot.savefig('SerialTest.jpg') plt.show()ChatGPT さんに添削してもらったら、del spe6102 するんじゃなくて
with Spe("COM4") as spe6102: ....するほうがええで、と教えてもらった。まあそうだけど、このあと複数の機器を使うことになるので、今回は一応このままに。
ser.write('OUTP OFF\r\n'.encode())だったりすると、書き込んだ文字数の 10 が表示されるのであった。 これを抑制するには、コマンド末尾に ; をつければよいだけ。; は文句切なので、 うしろが空文、すなわち評価が None になるので出力が抑制されるということらしい (参考こちら) 。
import serial ser = serial.Serial('COM4', 115200, timeout=None) ser.write(b'*idn?\r\n') line = ser.readline() print(line) ser.close()したら
b'OWON,SPE6102,24251887,FV:5.1.0\r\n'なる返答が戻ってきて第一ステップクリア。
conda install conda-forge::pyvisaするとインストールされる。 (参考こちら)
conda listすると出てくるリストに
pyvisa 1.14.1 pyhd8ed1ab_1 conda-forgeがあったから、たぶん入ったのかと。
conda install anaconda::pyserialで完了。 (参考こちら)
wsl --install -d Debian wsl --set-default-version 2
certbot revoke --cert-path ほげほげ.pemでやる。UPKI のほうで証明書とったので、LE のは失効させたほうがいいかなと。