1. instrument library build
- serial has been verify
- ethernet socket server & cilent need verify more
# utf-8
import os
import socket
import time
import threading
import serial
import serial.tools.list_ports
"""Function to looks for connected USB instruments"""
def list_instruments():
# This isn't implemented yet.
inst_list = []
return inst_list
# 处理客户端,sock为socket,addr为客户端地址
def tcp_server(sock, addr):
print("Accept new connection from %s:%s" % addr)
sock.send(b"What's your name?")
while True:
data = sock.recv(1024)
time.sleep(0.001)
if not data or data.decode("utf-8") == "disconnect":
break
sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'))
sock.close()
print('Connection from %s:%s closed.' % addr)
class client_dev:
def __init__(self, location):
self.device = location
self.port = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.port.connect((location[0], location[1])) # ("127.0.0.1", 3288)
def write(self, command):
self.port.send(command)
def read(self):
return self.port.recv(1024).decode('utf-8')
class server_dev:
def __init__(self, location):
self.device = location
self.port = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.port.bind((location[0], location[1])) ## ("127.0.0.1", 3288))
self.port.listen(10) # 设置最大连接数,并开始监听
while True:
# 接收TCP客户端连接,阻塞等待连接
sock_fd, addr = self.port.accept()
# 开启新线程对TCP连接进行处理
thread_server = threading.Thread(target=tcp_server, args=(sock_fd, addr))
thread_server.start()
def write(self, command):
self.port.send(command)
def read(self):
return self.port.recv(1024).decode('utf-8')
def close(self):
# 发送断开连接的指令
self.port.send(b'disconnect')
# 套接字关闭
self.port.close()
class serial_dev:
def __init__(self, location):
self.device = location
self.port = serial.Serial(location, 115200)
def write(self, command):
self.port.write(command)
def read(self):
return self.port.readline()
class usb_dev:
"""Initializes a connection to the device port [presumably usb]"""
def __init__(self, location):
self.device = location
self.connect = os.open(location, os.O_RDWR)
def write(self, command):
os.write(self.connect, command);
def read(self, length=4000):
return os.read(self.connect, length)
def getID(self):
self.write("*IDN?")
return self.read(100)
class instrument:
"""Initialize instrument given a port, e.g. /dev/usbtmc0/"""
def __init__(self, location, conType):
if conType.lower() == 'serial':
self.port = serial_dev(location)
if conType.lower() == 'usb':
self.port = usb_dev(location)
self.id = self.port.getID()
print(self.id)
else:
print("Device type not recognized")
def write(self, command):
self.port.write(command)
def read(self, command):
return self.port.read(command)
2. main
- File -> New Project -> Pure Python -> Create ….
- File -> Settings –> Project: xxx ->Project Interpreter
- project interpreter: python 3.6 (3.6.6)
click ‘+” -> click Manage Repositories click ‘+’ 镜像源
以下选择一个即可:
# utf-8
import instrument_driver
try:
com = 'COM1'
mcu = instrument_driver.serial_dev(com)
read_info = mcu.read()
print("rd:" + str(read_info))
mcu.write(read_info)
eth_port = ["127.0.0.3", 3288]
server = instrument_driver.server_dev(eth_port)
# read_info = server.read()
# print("rd:" + str(read_info))
# server.write("server wt test\r\n")
except Exception as e:
print("error" , e)
作者:EnzoSun
微信关注:勿忘初兴
本文出处:http://sunduoze.github.io/post/python_instrument_lib_build/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Sun's Blog