我写了一个事件驱动方式的串口读数据问题,当把波特率设置为9600时接受数据都是正确的,
但是现在被要求把波特率提高到115200,我就11400,19200,38400,57600逐步提高,(单片机端的发送速率也相应的改变),但是奇怪的事就有了,改了速率之后,运行程序,只有一次能读到数据,其他时候都显示ComStat.cbInQue=0,而且有一次接受到数据的情况是这样的,读到的第一组和第二组数据有很多重复的,而且115200时收到的数据每次只能读到一个.是不是事件处理方式处理不了115200这么高的速率啊
还是什么其他的原因???
 百思不解什么原因,希望各位帮帮忙 等用

解决方案 »

  1.   

    应该支持的,我看到它的数据手册上波特率有列举到115200,还是不知道,为什么每次读的两组数据中间有脱节的,难道是计算机不能处理这么高速率的?还是事件触发接受方式不能处理这么高速率的,比如,上一组接受到的数据的最后几个是0xa3 0xa4 0xa5 0xa6 0xa7(我的 是循环发送0到255的),则下一组接受到的数据的开头几个是0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd ,怎么回事呢,请不吝赐教,谢谢!
      

  2.   

    还有更奇怪的就是,每次通信时,很多情况下,都收不到数据,显示接受的ComStat.cbInQue=0
    每次建立连接后只有一次是能读到数据的,具体的就是单片机方打开的,不停的发送数据,在计算机方,几次点击执行后,只有一次能读到数据
      

  3.   

    好的,距离应该不是问题,很近的,不过多谢,我再看看单片机方是不是正确的
    有人会编一个vhdl语言判断I2C的起始和结束信号的程序吗,不知道有没有哪个门在上升沿和下降沿都触发,在硬件里发了没人应就再此说一下了,急用,谢谢
      

  4.   

    是啊,按了两遍关闭串口,是停止接受数据了,不过想拉滑动条看看所有已接受的数据就死在那儿了,
    to iicup:能不能留下你的QQ号啊,这样请教起来方便一些,我的QQ是50506125
      

  5.   

    楼主我现在要做的事跟你有些相似,就是通过串口接受单片发过来的数据,然后对这些数据进行显示预览打印,(我是用ASP。NET来做的),是否可以给出你的代码给我看看,给点思路,我现在一点思路也没有,谢谢!