打印

单片机串口通信的问题

[复制链接]
3060|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
topshuang|  楼主 | 2007-8-15 12:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 单片机串口接收数据到缓存区,从缓存区中发送出去,设缓存区的大小为40字节,为什么我的程序有问题呀,请教高手:
while(1)

if(RI==1)
  {
   c=SBUF;  
   if(Comm_GetcharCtr<MAX_BYTE_IO)//缓冲区里的字符个数小与发送最大值
   { 
    *pWriteByteBuffer=c; 
     pWriteByteBuffer++; //缓冲区指针
     Comm_GetcharCtr++;  //字符计数值
     
  if(pWriteByteBuffer==&mCmdParam.ByteWrite.mByteBuffer[MAX_BYTE_IO])
     {
      pWriteByteBuffer==&mCmdParam.ByteWrite.mByteBuffer[0];
      mCmdParam.ByteWrite.mByteCount = MAX_BYTE_IO; 
      i = CH375ByteWrite( ); 
      mStopIfError( i ); 
     }
    }    
   }
  RI=0;
  if(c == 0) break;  /* 源字符串结束,完成写文件 */  
}  
    mCmdParam.ByteWrite.mByteCount =Comm_GetcharCtr; 
    i = CH375ByteWrite( ); 
    mStopIfError( i ); 
     
    

相关帖子

沙发
gjg191| | 2007-8-15 12:13 | 只看该作者

dd

不说问题?谁知道

使用特权

评论回复
板凳
农民讲习所| | 2007-8-15 13:23 | 只看该作者

要用中断接收

循环中监测接收情况。
这是写程序常识。比如你处理
CH375ByteWrite( ); mStopIfError( i ); 之类就可能会有串口数据到达。

使用特权

评论回复
地板
topshuang|  楼主 | 2007-8-15 13:59 | 只看该作者

回复楼上的

 我想通过 RI=0 来控制串口接收 如果我在处理接收到的字符时 始终不给RI置0,那么串口不是就不能接收字符了吗

使用特权

评论回复
5
农民讲习所| | 2007-8-15 14:39 | 只看该作者

但外部发数据过来了,只是你没接收。所以会漏掉数据。

使用特权

评论回复
6
topshuang|  楼主 | 2007-8-15 14:45 | 只看该作者

我想如果RI不置0,单片机不会把SBUF中的数据取走的,是不是

使用特权

评论回复
7
gjg191| | 2007-8-15 14:47 | 只看该作者

dd

单片机自己会取吗?会丢数据还差不多

使用特权

评论回复
8
农民讲习所| | 2007-8-15 14:48 | 只看该作者

后面来的数据会覆盖掉SUBF

你极限想象:
外部在1S内发十个数据过来,你接收第一个数据后,过了10S去接收SUBF。那么你能接收的数据只有第一个和最后一个。中间的8个都被最后一个覆盖了。

使用特权

评论回复
9
农民讲习所| | 2007-8-15 14:52 | 只看该作者

这是硬件决定的,软件必须在硬件要求的时间内完成硬件要

所以,必须符合硬件要求的程序,叫驱动程序。驱动和外部应用程序一般采用队列方式来共享数据。

使用特权

评论回复
10
topshuang|  楼主 | 2007-8-15 15:10 | 只看该作者

继续请教

这样的话那我怎么能控制接收呢 缓存毕竟是有限的 接收的的文件在没接收完不知道大小,这样的话写入缓存的和读出缓存的节奏我怎么协调?

使用特权

评论回复
11
农民讲习所| | 2007-8-15 15:14 | 只看该作者

数组改造为队列

一般通信是要有协议的。你只要把协议解析出来,数据就出来了。
可以参考我的培训教材:
相关链接:https://bbs.21ic.com/club/bbs/showEssence.asp?id=8047

使用特权

评论回复
12
tober1234| | 2007-8-17 10:48 | 只看该作者

高手帮忙

我对单片机通信还不是很了解,有高手能发点该方面的资料给我吗,邮箱是tober1234@163.com,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

15

帖子

0

粉丝