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可以配置为不缓冲. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |