- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个微 Controller ,通过 UART 以 3 MBaud 发送数据。微 Controller 每 8000 字节发送一个启动/状态字节。我希望我的 python 脚本能够读取所有数据并分析起始字节之间的数据。
我知道 Python 能够处理 3 MBaud,因为该代码片段显示了起始字节的正确位置:
ser = serial.Serial('COM3', 3000000, timeout=None)
_RawData = ser.read(100000)
for cnt in range(0, 100000, 1):
#search for start byte and print the position
if(_RawData[cnt] < 128): print(cnt)
但我需要不断读取数据流,在该示例中,我在“ser.read(x)”命令之间丢失了数据。所以我需要在读取流时比较数据:
ser = serial.Serial('COM3', 3000000, timeout=None)
_RawData = []
cnt = 0
for c in ser.read():
cnt += 1
#search for start byte
if(c < 128):
#print start byte position
print(cnt)
# -= start thread =-
_RawData.clear()
_RawData.append(c)
但发现读取一个字节对于该波特率来说太慢了,起始字节位置实际上是随机生成的。有没有办法可以无损地读取我的数据流?
最佳答案
我设法让它为我工作。正如其他线程中所建议的,我实现了函数 ser.inWaiting(),它给出了输入缓冲区中等待的字节数(在我的系统上限制为 4096 字节)并从 uart 读取该数量。然后我寻找起始字节并启动一个线程来分析数据:
ser = serial.Serial('COM3', 3000000, timeout=None)
_RawData = []
while True:
#get data in input buffer
bytesToRead = ser.inWaiting()
Buffer = ser.read(bytesToRead)
for cnt in range(0,bytesToRead,1):
#search for start byte
if(Buffer[cnt] < 128):
#print bytes between start bytes
print(len(_RawData))
# -= start thread =-
_RawData.clear()
_RawData.append(Buffer[cnt])
#wait a short time for the buffer to fill
time.sleep(0.001)
目前看来这可行。感谢您的帮助。
关于python - python中的高速UART,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40476914/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
作为练习,我正在尝试使用 Thread.sleep 作为计时器并使用 JMF 作为声音来使用 Java 创建一个节拍器。它运行良好,但出于某种原因,JMF 似乎只能以每分钟最多 207 拍的速度播放声
有谁知道对用户浏览器进行基准测试的快速方法?它不需要那么准确。 我开始在我们的软件平台中使用 Javascript 执行越来越多的密集型任务,我担心性能在旧浏览器上会成为一个问题,所以我想要的是我可以
我的数据看起来像每帧 1000 万个数值(实数 + 二进制)(想想数组,即数组的一行中有 1000 万个元素)并且大约有 100 帧/秒。一种时间序列。 我的挑战是: (1) 存储——数据量 (2)
在使用 Android 时,我丢失了传入 USB 数据流上的数据,而在 Windows 中读取同一设备/流时我不会丢失这些数据。 (我知道 Android 不是实时操作系统,但 Windows 也不是
在我目前正在做的一个C#项目中,我们试图计算网络上大量文件的MD5(当前pot是270万,客户端pot可能超过1000万)。随着我们处理的文件数量的增加,速度成为问题。 我们这样做的原因是为了验证文件
我一直在尝试使用 XSLT 在最有效的时间内从 XML 文档获取 CSV 数据。以下是我的示例 XML Raagu Hoskote
如果标题听起来令人困惑,我很抱歉,如果您在这段描述后有更好的想法,请随时提出建议。 简而言之,我在 Linux 上使用 PHP 以及以下假设的文件/代码: job.php: if(setting_ge
对最多 1000 万个 7 位数字进行排序。约束条件:1M RAM,高速。几秒就好。 [编辑:来自提问者的评论:输入值不同] 使用位图数据结构可以很好地解决这个问题。 这意味着我需要一个字符串,它的长
我是一名优秀的程序员,十分优秀!