在 BCB 中用MSCOMM 接收数据,要接收的数据比较长,大约几千个字符,怎么才能确定字符已经全部传输到接收缓冲区中?
或者还有没有其他的办法来处理这种接收数据字符很多的问题?

传输的内容,要有个交换协议,那怕很简单的也行,
这样就规定了传送长度等关键参数,这就好办了;
MSCOMM32有个毛病,事件接收时,连续的串会拆成
几次,这样就产生了多次接收事件,处理起来较麻烦,
改用非事件性接收就简单了.

用Mscomm不是太清楚,不过直接就API控制串口的话就比较好实现,在接发送完数据的函数里加上一个结速字符.每次接收完数据就做一次检验动作,另外把Buffer设大点就可以了.

C/C++ code
// 你每次发送的时候加一些控制字符 // 比如每次发500个字符,然后在后面加上某个结束标记,可以是字符串或者啥 // 搞严格点,前面在加1个包序号,表示第1个500. // 接收的时候,按标记来 // 这样发送2次就ok

這種東西最好數據有固定的報文格式
嚴格規定什麽開頭 什麽結束
對不合法的接受到的報文格式直接忽略
比如
A000 1234 5678 0100
前4位是固定的開頭 后4位為校驗位
以後抓數據抓來之後就取中間的那一快