MFC 使用MSCOMM控件(串口通讯)频发丢包现象??
总体流程 :
就是单片机不断通过USB向电脑端发送数据
电脑端软件将受到的数据显示出来
操作代码和下面这个页面的一样,跟着他做的http://wenku.baidu.com/view/c6adb369561252d380eb6e42.html
不动它就不丢包(几率很低,也不是不丢)
稍微一移动窗口就丢包了
最无语的是 不操作窗口,我打开其他稍大点的程序,它也丢
就是串口通讯控件所在的线程 会受到别的线程的干扰或者是本线程的新消息影响 导致丢包现象
官方提供的软件(串口助手)是不会出现这种情况的,无论怎么搞都绝不丢包的。。
所以和硬件无关
所以这种情况只是我的处理不当引起的
问题到底在哪里呢???
//下面这是单片机部分的代码,就是不停发而已,
while(1)
{
SBUF=' ';while(TI==0);TI=0;
SBUF='z';while(TI==0);TI=0;
SBUF='x';while(TI==0);TI=0;
SBUF='x';while(TI==0);TI=0;
SBUF='c';while(TI==0);TI=0;
SBUF='d';while(TI==0);TI=0;
SBUF='h';while(TI==0);TI=0;
SBUF='t';while(TI==0);TI=0;
SBUF='x';while(TI==0);TI=0;
SBUF='n';while(TI==0);TI=0;
SBUF=' ';while(TI==0);TI=0;
DELAY_MS(1);
} 串口通讯 mfc
[解决办法]
将串口中断优先级调至最高。
[解决办法]
上位机不要用控件做,用API做。
[解决办法]
你的上位机问题。
验证你的问题:你可以用串口调试助手,看看用它是否还存在丢包(应该不会丢了)
[解决办法]
控件不准确,不行,不如直接通过API操作串口,我曾经用VB的MSCOMM控件就是 这样,后来别的同事直接操作就没有出现问题。