python - 在 Python 中测量串行 Tx 和 Rx 之间的时间间隔
问题描述
我遇到了一个问题,我试图测量 python 中串行写入和串行读取之间的时间间隔。我在 Windows 上使用 python 3.8 和 USB-> RS485 适配器。本质上,代码如下:
def write_packet(self, packet, flush=True):
if flush:
self.clear_buffers()
self.ser.write(packet)
self.tx_time = time.time_ns()
紧随其后的是:
def read_packet(self):
first_byte = True
while True:
byte = self.ser.read(1)
# Check if the read timed out:
if byte == b'':
**(notify of timeout)**
if byte == b'\x00':
**(end of packet, decode and break)**
else:
if first_byte:
self.time_rx = time.time_ns()
first_byte = False
正如您可能看到的,我正在尝试捕获刚发送后到接收第一个字节之间的时间。之后我做了这样的事情来获得毫秒的时间:
time_diff_ms = (self.rx_time - self.tx_time)/1000000
我的问题是time_diff_ms的时间似乎很遥远。RS485 信号下方的示波器图像显示它应该读取大约 1 毫秒的时间,但脚本读取的值是 6 毫秒、11 毫秒等,几乎是随机值。
https://i.stack.imgur.com/eJFAJ.jpg
我也试过在 Linux 上运行脚本,但差别不大。我也在使用相当高的波特率 921600。
解决方案
推荐阅读
- python - Pandas - 按组比较当前年份的值与以前所有年份的值,如果是累积最小值则返回 True
- amazon-dynamodb - 如何使用 dynamodb 表设计来证明这些可能的需求更改(交换主键列)?
- android - 颤动一些按钮在某些设备上不起作用
- html - 当我调整它的大小时,我的 Bootstrap 行超出了页面宽度?
- javascript - 从 svg 生成到画布的图像,动画结果,看起来很慢
- python - 同时监听多个请求(Android 到 Python 脚本)
- qt - 在 QML 中鼠标悬停时加载矩形
- http - 如何获取我刚刚在 Go 中设置的 HTTP 标头的字符串值?
- r - 使用 R 在 pheatmap 中记录比例
- swift - 寻找 Swift“模糊使用 'object(forKey:)'”的修复程序