加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – SerialPort.BytesToWrite的用法

发布时间:2020-12-16 01:43:57 所属栏目:百科 来源:网络整理
导读:如果SerialPort.Write()是阻塞操作(或者不是?),那么BytesToWrite()方法需要什么.它总是评估为零,导致最后一次写操作成功写入所有数据或失败,在任何一种情况下,要写入的字节都将为零. 或许,我所描述的还有更多. 解决方法 SerialPort.Write是一个阻塞操作,是
如果SerialPort.Write()是阻塞操作(或者不是?),那么BytesToWrite()方法需要什么.它总是评估为零,导致最后一次写操作成功写入所有数据或失败,在任何一种情况下,要写入的字节都将为零.

或许,我所描述的还有更多.

解决方法

SerialPort.Write是一个阻塞操作,是的.但是,需要考虑两个缓冲区:串行设备和SerialPort缓冲区.

如果将SerialPort对象配置为缓冲区,则只有在该缓冲区中没有足够空间时,写入才会阻止.只要缓冲区足够空以适应新数据,它就会阻塞.否则它会填充缓冲区并返回.

如果SerialPort对象没有缓冲,则Write操作仅在将数据传输到串行设备时阻塞.该设备有自己的缓冲区(*),因此该块可能比发送数据所花费的时间少得多.

SerialPort.BytesToWrite包括设备缓冲区中的数据和SerialPort对象缓冲区中的数据.

(*)较旧的UART没有缓冲区,而较新的UART可以配置为不缓冲.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读