关于MSCOMM控件中CommEvent的一个疑问
对于MSCOMM控件中CommEvent的2号值,也就是ComEvReceive我有点弄不懂,在2号值处设置一个断点,该事件发生时,SAFEARRAY中pvData的数据总是能全部接收到。我不懂的是,串行口波特率不一样,数据传输时间也可能不一样,为什么该事件只需要发生一次就能将所有数据接收到呢?我的SetRThreshold设置的为1,也就是只需要缓冲区中有一个数就发生一次串口响应事件。 =2是串口接收事件,让下位机一字节一字节的发,上位机就一字节,一字节的收了,每个字节都有com事件 自己要做数据长度判断的。 我不懂的是这个时间差是怎么来的呢。串口速度是很慢的相对于CPU的运行速度。我运行到这个断点程序就将所有数据接收到了。一个字节产生一次,我用串口调试助手上千个字节也能在一刹那接收完成,按1200波特率计算需要的时间大约是1/1200(bps)*120(个数据)*10(位)=1s左右呢,这里面有什么原因么? 恳请高手们给个详细解答! 能收到就好啦 OnComm事件里if MSComm1.CommEvent= comEvReceive then
begin
if MSComm1.InBufferCount > xxx{字节} then
begin
end;
end;
如果是用定时查询,要确保定时时间内,上位机能收到所有数据。
--------
最后,貌似mscomm32.ocx有内存泄漏。串口通讯最好自己用api写 6楼你好,你说的我懂,我想知道的是接收的时间差产生在什么时候?有没有能从操作系统或者计算机原理给个深层次解答
页:
[1]