c# 判断整数倍,(六)C# serialPortObj.ReadBufferSize必须设置1024的整数倍,

本文详细介绍了C#中SerialPort对象的ReadBufferSize属性必须设置为1024的整数倍,否则可能导致System.IO.IOException。问题的根本原因是设置了一个非1024整数倍的值。解决方法是将缓冲区大小设置为1024的倍数,如1024、2048或4096等。文章还提供了属性的详细说明和可能抛出的异常情况。
摘要由CSDN通过智能技术生成

(六)C# serialPortObj.ReadBufferSize必须设置1024的整数倍,

(六)C# serialPortObj.ReadBufferSize必须设置1024的整数倍,不能设置奇怪的整数,否则导致System.IO.IOException: 数据无效

一、问题

串口缓存器serialPortObj.ReadBufferSize = X,X必须是1024整数倍,不然会发生下面的错误。

System.IO.IOException: 数据无效。

在 System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)

在 System.IO.Ports.SerialStream.SetBufferSizes(Int32 readBufferSize, Int32 writeBufferSize)

在 System.IO.Ports.SerialPort.Open()

7d4c8729428459787805f38496ea57c3.png

二、根本原因

System.IO.Ports.SerialPort.ReadBufferSize 属性设置为一个奇怪的整数值,会发生异常。所以,我们不要设置奇怪的整数。

//

// 摘要:

// 获取或设置 System.IO.Ports.SerialPort 输入缓冲区的大小。

//

// 返回结果:

// 缓冲区大小(以字节为单位)。默认值为 4096;最大值为正整数,即 2147483647。

//

// 异常:

// T:System.ArgumentOutOfRangeException:

// System.IO.Ports.SerialPort.ReadBufferSize 设置值小于或等于零。

//

// T:System.InvalidOperationException:

// System.IO.Ports.SerialPort.ReadBufferSize 属性已设置流打开时。

//

// T:System.IO.IOException:

// System.IO.Ports.SerialPort.ReadBufferSize 属性设置为一个奇怪的整数值。

[Browsable(true)]

[DefaultValue(4096)]

[MonitoringDescription("ReadBufferSize")]

public int ReadBufferSize { get; set; }

三、解决办法

设置  bullHeadReceive.serialPortObj.ReadBufferSize = 1024或2048或4096...,就可以解决上面的问题。

(六)C# serialPortObj.ReadBufferSize必须设置1024的整数倍,相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值