PC机用Victor串口控件向单片机发送一个数据,然后由单片机反馈确认数据。
流程是这样写的:
1.PC串口发出数据
2.单片机反馈数据
3.PC根据单片机反馈的数据进行判断。但语句顺序是先往串口发送数据,然后读串口数据,但感觉还没有来得及单片机反馈数据就已经从串口执行过读数据了,因此,点一下按钮数据不正确,要再点一下按钮前面收到的串口数据才调进来。试在串口发送和接收函数之间加Sleep()函数,但还是没有用。

解决方案 »

  1.   

    你发送命令之后就等待接收反馈信息,并且不要接收一个字符就处理,设置一个全局变量s:string
    接收之后就s:=s+ComInStr;然后等待多少毫秒,等串口数据都接收完了再处理
      

  2.   

    一般是要延时的,串口处理书读没内存快,延时100MS到300MS试试
      

  3.   

    http://bbs.e-0631.cn/down.aspx[精品源码]delphi串口通讯控制程序
      

  4.   

    用Sleep()函数做延时,但它是将全部进程都暂时挂起,这样我用串口控件每隔50ms接收一次也被暂时挂起了。