Python调试串口设备Ortec 974A

Ortec 974A四通道100HMz计时/计数器的介绍在以下连接中: 

O​​​​​​​Ortec -- 974A 四通道100-MHz计时器/计数器_yuyuyuliang00的博客-CSDN博客

1、调试准备工作

1)一个串口服务器

根据Ortec 974A的串行通信参数,对串口服务器进行设置并且配置了串口服务器本身的局域网IP地址:

网络设置:

  •         IP配置:静态
  •         IP地址:192.168.3.30

Python调试串口设备Ortec 974A_第1张图片

窗口服务器工作模式:

  • 运行模式:TCP Server
  • 本地端口:4001

Python调试串口设备Ortec 974A_第2张图片

串口参数:

  • 波特率:9600
  • 数据位:8
  • 停止位:2:
  • 校验:none
  • 流控制:XON/XOFF
  • 使用接口:RS-232

Python调试串口设备Ortec 974A_第3张图片

2)一台安装了Python3的台式机

安装jupyter,在这里,我把常用的软件包都一次性安装好:

pip3  install --upgrade pip
pip3 install pyepics
pip3 install numpy
pip3 install matplot
pip3 install pyqt5
pip3 install iptyhon
pip3 install jupyter
pip3 install notebook

在Shell命令行中输入以下命令启动jupyter:

[blctrl@main-machine ~]$ ipython notebook&

Python调试串口设备Ortec 974A_第4张图片

用右边new菜单下的Python3选项新建一个python文档。并且点击Untitle文本将其改名为ortec974Atest。

3) 进行命令测试

在这里仅使用Ortec974A的内部触发计数功能,只测试以下10条命令:

命令        描述
CLEAR_ALL 清除计数器,计数预置事件计数器和事件预置
CLEAR_COUNTERS [MASK] 清除4个计数器。如果包含了MASK,清除只由这个掩码选取的计数器
SHOW_COUNTS [MASK] 如果不包含掩码,显示四个计数器的内容。如果包含掩码,仅包含由掩码值使能的计数器。掩码是一个1到15之间的数值,其二进制值确定了将发送哪个计数器。
START 使得974A开始计数
STOP 使974A停止计数
INIT 使得974A重启或者初始化。与重置或上电条件相同。
SHOW_VERSION 使得974A发送显示在此974A中包含的固件版本的记录
SET_COUNT_PRESET M,N 装载M(乘数)和N(指数)值到974A的预置计数功能。M是一个0和9之间的单数值,而N是一个0到7之间单数值。
ENABLE_LOCAL 使974A处于本地控制模式(即是:前面板控制)。974A将仍然响应通信接口和响应来自主机的命令。
ENABLE_REMOTE 使得974A完全处于主机PC控制。除了Display Test和Counter Select控制外所有前面板控制都被禁用。

对以上命令进行测试:

1、通过串口服务器连接974A

import time
import socket

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.3.30",4001))
print(s)

Python调试串口设备Ortec 974A_第5张图片

 2、预置内部计时5秒时间:

s.send(b"SET_COUNT_PRESET 5,1\r")
time.sleep(0.1)
s.recv(1024)

 3、使974A启动计时:

s.send(b"START\r")
time.sleep(0.1)
s.recv(1024)

 4、读取4路计时器的内容:

s.send(b"SHOW_COUNTS\r")
time.sleep(0.1)
s.recv(1024)

Python调试串口设备Ortec 974A_第6张图片

 5、停止974A计数:

s.send(b"STOP\r")
time.sleep(0.1)
s.recv(1024)

 6、清除974A的4路计数器:

s.send(b"CLEAR_COUNTERS\r")
time.sleep(0.1)
s.recv(1024)

7、清除计数器,计数预置事件计数器和事件预置

s.send(b"CLEAR_ALL\r")
time.sleep(0.1)
s.recv(1024)

 8、获取974A的固件版本

s.send(b"SHOW_VERSION\r")
time.sleep(0.1)
s.recv(1024)

 9、重新初始化974A

s.send(b"INIT\r")
time.sleep(1)
s.recv(1024)

10、禁用本地控制:

s.send(b"ENABLE_REMOTE\r")
time.sleep(0.1)
s.recv(1024)

11、开启本地控制:

s.send(b"ENABLE_LOCAL\r")
time.sleep(0.1)
s.recv(1024)

12、关闭套接字,断开连接

s.close()
print(s)

从以上响应格式可以看出,如果974A对设置和控制命令进行了正确响应,它会发回一个'%000000069\r'的字符串,表示命令被正确执行。查询计数器内容响应的格式是:'00000050;01499820;00000000;00000000;\r%000000069\r',四个计数器的内容之间用;分隔,第一个数值是第一个计数器以0.1秒为单位的计数,第二到四个数值是在达到第一个计数器预设值时第二到第四个计数器的计数值,末尾'%000000069\r'表示正确响应。

4)结论:

使用Jupyter调试设备,优点是能够根据需要选取需要重复执行写好的代码块进行执行,并且可以复制代码块,修改,再执行。对于理解设备和上位机之间命令和数据交换有非常大的帮助,为编写设备控制程序做充足的准备。

你可能感兴趣的:(电子学,python,linux,开发语言)