Cport的Timeout属性定义了详细的读写超时设置。
当一个特别操作的超时时间达到了,这个操作被放弃掉,也不会产生任何错误。

通过超时参数可以定义两种类型的超时时间。
一个间隔超时发生在:两个字节接受间隔超过特定时间。
一个总超时发生在:读操作超过了一定时间。这个计时从i/o操作开始时计时。

写操作只支持总超时。
读操作支持两种超时。
指定时间的单位都是ms。

几个参数:
[ReadInterval] —— 指定读间隔超时时间。
     0 值 表示间隔超时时间没有被应用。
     -1值 结合ReadTotalConstant和ReadTotalMultiplier都为0,指定读操作立即返回接收到的
          字节,即便是没有任何字节。

[ReadTotalConstant] —— 指定总超时时间。
     对每个读操作而言,这个值与ReadTotalMultiplier和字节数的乘积相加才是总超时时间。
     如果ReadTotalMultiplier和ReadTotalConstant都是0,说明总超时时间没有被应用。
     如果一个应用程序设定ReadInterval和ReadTotalMultiplier都为-1,并且设置
ReadTotalConstant大于0,会发生以下情况中的一种:      
     如果input buffer中有任何字节,读函数立即返回这些字节;
     如果input buffer中没有字节,读函数等待字节,直到有字节到达,立即返回字节;
     如果在ReadTotalConstant所设定的时间内,都没有字节返回,那么读操作超时。

[ReadTotalMultiplier] —— 指定read total timeout的乘子。
     如果ReadTotalTimeout和ReadTotalConstant都为0值,说明总超时时间没有被应用。注意:如果都设为0,当连接失败时可能会导致死机。因为没有了超时检测。

[WriteTotalConstant] —— 指定常数,用于计算写操作的总超时时间。
     对每个写操作而言,这个值与WriteTotalMultiplier和字节数的乘积相加才是从超时时间。
     WriteTotalMultiplier和WriteTotalConstant都为0表示总超时时间对写操作没有应用。

[WriteTotalMultiplier] —— 指定write total timeout的乘子。
     如果WriteTotalTimeout和WriteTotalConstant都为0值,说明总超时时间没有被应用。

     我在我的《easyWatch2.0》中对 CPort 的超时设置是这样的:
     ReadInterval := 20;  
     ReadTotalConstant := 2000;
     ReadTotalMultiplier := 200;
    
     WriteTotalConstant := 200;
     WriteTotalMultiplier := 20;