SHOT-602をPythonで制御
をテンプレートにして作成
AND検索
OR検索
開始行:
*シグマ光機のSHOT-602をPythonから制御する(2023/07/07)
#image(https://mkanzaki.sakura.ne.jp/images/SGSP-13ACTx2....
#contents
**経緯
シグマ光機の「SHOT-602」はステッピングモータ対応の2軸...
以前これらを顕微ラマンの測定システム(WinSpec/32)でマッ...
LightField自体の使い方にやっと慣れたので、LightFieldを...
**インストール
Windows10 Proの英語版を顕微ラマン装置の制御に使っている...
この時点ではどうも環境変数でPythonやpipの場所が設定され...
Windowsではちょっと勝手が違って戸惑います。
**SHOT-602との通信テスト
SHOT-602はシリアル通信(RS-232C)を使っていますが、現在の...
Macの場合はSerial-USB変換器をMacに繋いでおいて、termina...
ls /dev/cu.usbserial-*
を実行すると、cu.usbserial-*というのが出てくるので、usbse...
ser = serial.Serial("/dev/cu.usbserial-FTF05D9I",19200) ...
SHOT-602のマニュアルではハイパーターミナルで通信をテス...
**Pythonで制御
Pythonでシリアルデバイスを制御する時はライブラリのPySer...
M:1+P2000
G
とします。Mコマンドだけでは実際には移動しないので、次にG...
なお、これらのコマンドを送る前にencodeしておく必要があ...
最初の行でserialをインポートして、3行目で通信条件を設定...
import serial
crlf = “\r\n”
ser = serial.Serial(“COM3”,19200)
txt = “M:1+P2000” + crlf
go = “G” + crlf
ser.write(txt.encode('utf-8'))
ser.write(go.encode('utf-8'))
ser.close()
次に矢印キーを使って、XY軸を移動させる簡単なプログラム...
import serial
from msvcrt import getch
ser = serial.Serial("COM3",19200)
step = 10 # initial step
crlf = "\r\n"
txt1 = "M:2-P"
txt2 = "M:2+P"
txt3 = "M:1-P"
txt4 = "M:1+P"
go = "G\r\n"
print("XY stage driver")
print("q for quit")
print("v for very corse: 500 micron")
print("c for corse: 50 micron")
print("m for middle: 5 micron")
print("f for fine: 0.5 micron")
while True:
key = ord(getch())
#print(key)
if key == 113: # q for quit
break;
if key == 118: # v for very corse
step = 1000
if key == 99: # c for corse
step = 100
if key == 102: # f for fine
step = 1
if key == 109: # m for middle
step = 10
#print(key)
if key == 224:
key = ord(getch())
if key == 72: # Up arrow
txt = txt1 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
elif key == 75: # Left arrow
txt = txt3 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
elif key == 77: # Right arrow
txt = txt4 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
elif key == 80: # Down arrow
txt = txt2 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
ser.close()
その後、TKinterというライブラリーで制御をGUI化していま...
#image(https://mkanzaki.sakura.ne.jp/images/XYstage_tkint...
**PAT-001の制御
SHOT-602の兄弟分?で1軸ステージコントローラのPAT-001と...
終了行:
*シグマ光機のSHOT-602をPythonから制御する(2023/07/07)
#image(https://mkanzaki.sakura.ne.jp/images/SGSP-13ACTx2....
#contents
**経緯
シグマ光機の「SHOT-602」はステッピングモータ対応の2軸...
以前これらを顕微ラマンの測定システム(WinSpec/32)でマッ...
LightField自体の使い方にやっと慣れたので、LightFieldを...
**インストール
Windows10 Proの英語版を顕微ラマン装置の制御に使っている...
この時点ではどうも環境変数でPythonやpipの場所が設定され...
Windowsではちょっと勝手が違って戸惑います。
**SHOT-602との通信テスト
SHOT-602はシリアル通信(RS-232C)を使っていますが、現在の...
Macの場合はSerial-USB変換器をMacに繋いでおいて、termina...
ls /dev/cu.usbserial-*
を実行すると、cu.usbserial-*というのが出てくるので、usbse...
ser = serial.Serial("/dev/cu.usbserial-FTF05D9I",19200) ...
SHOT-602のマニュアルではハイパーターミナルで通信をテス...
**Pythonで制御
Pythonでシリアルデバイスを制御する時はライブラリのPySer...
M:1+P2000
G
とします。Mコマンドだけでは実際には移動しないので、次にG...
なお、これらのコマンドを送る前にencodeしておく必要があ...
最初の行でserialをインポートして、3行目で通信条件を設定...
import serial
crlf = “\r\n”
ser = serial.Serial(“COM3”,19200)
txt = “M:1+P2000” + crlf
go = “G” + crlf
ser.write(txt.encode('utf-8'))
ser.write(go.encode('utf-8'))
ser.close()
次に矢印キーを使って、XY軸を移動させる簡単なプログラム...
import serial
from msvcrt import getch
ser = serial.Serial("COM3",19200)
step = 10 # initial step
crlf = "\r\n"
txt1 = "M:2-P"
txt2 = "M:2+P"
txt3 = "M:1-P"
txt4 = "M:1+P"
go = "G\r\n"
print("XY stage driver")
print("q for quit")
print("v for very corse: 500 micron")
print("c for corse: 50 micron")
print("m for middle: 5 micron")
print("f for fine: 0.5 micron")
while True:
key = ord(getch())
#print(key)
if key == 113: # q for quit
break;
if key == 118: # v for very corse
step = 1000
if key == 99: # c for corse
step = 100
if key == 102: # f for fine
step = 1
if key == 109: # m for middle
step = 10
#print(key)
if key == 224:
key = ord(getch())
if key == 72: # Up arrow
txt = txt1 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
elif key == 75: # Left arrow
txt = txt3 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
elif key == 77: # Right arrow
txt = txt4 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
elif key == 80: # Down arrow
txt = txt2 + str(step) + crlf
ser.write(txt.encode("utf-8"))
ser.write(go.encode("utf-8"))
ser.close()
その後、TKinterというライブラリーで制御をGUI化していま...
#image(https://mkanzaki.sakura.ne.jp/images/XYstage_tkint...
**PAT-001の制御
SHOT-602の兄弟分?で1軸ステージコントローラのPAT-001と...
ページ名: