共计 1164 个字符,预计需要花费 3 分钟才能阅读完成。
我用串口调试工具,能看到数据大概 100ms 输出 1 个数据,是传感器的角度 X,我用 C# 的 SerialPort 读取,也能读取到但是延迟很高,X 改变,几秒 C# 才读取到这个 X
上一篇: 各位做电商的 有合作代运营的吗
下一篇: 现在还有便宜的 gv 号码?
斌斌 发表于 2022-8-17 16:28
port.ReceivedBytesThreshold = 1
设置了这个好使了,不知道原因,但是这个设置完了,就不会延迟了。网 …
我知道你大概怎么回事了。强行缓冲区等满,但是实际上一次收到的字节数都不够缓冲区长度的,PC 上串口缓冲区好像是 64 个字节。还是来一个收一个最方便。这个与什么语言的程序无关,是程序逻辑设计问题。用非阻塞的方式读。和底层直接接触了,要注意阻塞与非阻塞的问题你读太慢了 新数据都堆起来了检查一下代码吧要加个线程,循环读。要清空缓冲。
另外,线也要好一点的。
奧巴马 发表于 2022-8-17 15:00
要加个线程,循环读。要清空缓冲。
另外,线也要好一点的。
应该是 C# 的 bug。我 python 读取没有延迟,奇怪啊。只是读取的频率快一些而已。
@未闻听心
@sertt @Grandia @hfhfg
斌斌 发表于 2022-8-17 15:56
应该是 C# 的 bug。我 python 读取没有延迟,奇怪啊。只是读取的频率快一些而已。
@未闻听心
@sertt @Gran …
代码贴出来瞅瞅诶,开发工控程序一直用的 C#,没发现过有什么问题。
未闻听心 发表于 2022-8-17 16:07
代码贴出来瞅瞅诶,开发工控程序一直用的 C#,没发现过有什么问题。
port.ReceivedBytesThreshold = 1
设置了这个好使了,不知道原因,但是这个设置完了,就不会延迟了。网上有说的。
斌斌 发表于 2022-8-17 15:56
应该是 C# 的 bug。我 python 读取没有延迟,奇怪啊。只是读取的频率快一些而已。
@未闻听心
@sertt @Gran …
怎么可能是 C#bug? 用异步和 await 来等待数据
斌斌 发表于 2022-8-17 16:28
port.ReceivedBytesThreshold = 1
设置了这个好使了,不知道原因,但是这个设置完了,就不会延迟了。网 …
我知道你大概怎么回事了。强行缓冲区等满,但是实际上一次收到的字节数都不够缓冲区长度的,PC 上串口缓冲区好像是 64 个字节。还是来一个收一个最方便。
斌斌 发表于 2022-8-17 15:56
应该是 C# 的 bug。我 python 读取没有延迟,奇怪啊。只是读取的频率快一些而已。
@未闻听心
@sertt @Gran …
一直用 C# 搞工控开发,没发现问题!
斌斌 发表于 2022-8-17 16:28
port.ReceivedBytesThreshold = 1
设置了这个好使了,不知道原因,但是这个设置完了,就不会延迟了。网 …
这个属性的默认值就是 1 啊