关于SerialPort类使用的几个问题。
hwyqy 2009-05-30 11:27:06 打算写一个串口通讯的,其实是两台PC之间用串口进行数据传送,这应该比较简单些的吧。 上位PC连接着一台仪器,仪器的数据先通过串口传递到上位PC,上位PC处理生,再通过串口传递到本机。上位PC数据传递的格式无法修改。上位机一次传送的数据量从几个字节到一两兆左右都有可能;另外,也可能两次数据传递的间隔非常短。由于无法修改上位PC传递数据的格式(主要是数据传递没有起始结束的标志,也没有传递数据的长度)
研究了一下SerialPort类,由于现在没有仪器,难测试串口的,所以心中的几个问题只能上论坛来问大虾们了,不然老闷在心里。假设我的SerialPort设置为收到>1字节就激发DataRecive事件,数据接收一概采用DataRecive事件来接收
1. 如果我缓冲区设置的足够大,如10兆,则上位PC一次发送的数据(可能是2兆),是不是只会激发一次DataRevice事件?
2. 如果发送的数据过大,如12兆,缓冲区设置为10兆,是不是会连续激发两次DataReceive事件? (这点我应该可能肯定,是这样的,不过不放心,还请大虾确认一下)
3. 有没有可能出现这种情况,当DataRecive事件被激发时,其实2兆数据还未传递完毕,我在DataRecive事件中的接收操作,只接受到了部分数据。如果有这种情况的话,是不是只能用延时来解决?
4. 如果上位PC以间隔很短的时间,连续发送两次数据,这两次数据会不会只激发一次DataReceive事件,也就是说,我在一次DataReceive事件中,会把两次发送的数据一次性从缓冲区中读出。(记得当时VB编写Socket程序时,自带的WinSock控件就是这样)