导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→紧急求助各位大侠关于vb的mscomm控件与单片机通讯:

* 65262: 紧急求助各位大侠关于vb的mscomm控件与单片机通讯:

   hwhhyh25 
hwhhyh25发表的帖子 

 紧急求助各位大侠关于vb的mscomm控件与单片机通讯:
小妹近来做pc与单片机通信,用的是vb的mscomm控件,和ms-51单片机通讯。波特率2400。
我用vb向单片机发送一个字节数组,SENDDATA[9],发现单片机接受数据不正确,
经分析,vb发送了9个字节,而单片机只接受到4个。若SENDDATA[9]={50,51,0,52,0,53,0,54,0},单片机接受到的数据是
receivedata[9]={50,52,53,54,0,0,0,0,0},若SENDDATA[9]={50,51,1,52,1,53,1,54,1},单片机接受到的数据是
receivedata[9]={50,54,52,40,0,0,0,0,0},可以看出单片机只接受了4个字节(单片机上电初始化
receivedata=[0,0,0,0,0,0,0,0,0,],请各位大侠帮助!这个试验程序中单片机只是接受数据,而vb只发送数据。
mscomm控件设置如下:
    inputmode=1;采用二进制方式
    inputlen=0;
    rthreshold=1;
    sthreshold=0;
    settings:2400,n,8,1
发送程序:
Function Send_Sub()
     
   
    SendData(0) = &H50
    SendData(1) = &H51
    SendData(2) = 0
    SendData(3) = &H52
    SendData(4) = 0
    SendData(5) = &H53
    SendData(6) = 0
    SendData(7) = &H54
    SendData(8) = 0
    If MSComm1.PortOpen Then
       MSComm1.Output = SendData
    End If
 End Function   
   
    
单片机接受程序:
 void server(void) interrupt 4 using 2 {
 
  static Byte data i=0;
  static Byte data  RECEIVE[9]={0,0,0,0,0,0,0,0,0};

  if(TI){
   TI=0;

   }
 RI=0;
  RECEIVE[i++]=SBUF;

  if(RECEIVE[0]!=0x50)
   i=0;                ;如果接受数据开始不是50h,丢掉重收。

  if(i==0x09)

    i=0;


 }



发表时间:2004年10月27日11:57:48

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  65295.[详细]改一该 receivedata的定义,最好不用下标
摘要:定义一无下标数组 outbuf() 将数据送給该数组 outbuf = mscomm.output  = outbuf; 几年前我做过,大概是这样,有......(138字)
- [duke980605][1069次] 2004年10月27日

  65529.[详细]前两天搞错了,用Variant类型
摘要:......(无内容)
- [duke980605][994次] 2004年10月30日

[上一篇帖子]:我搜过了,找不到!
[下一篇帖子]:求设计LED控制电路1、通过LED三个脚,使LED产生红、橙、绿、白、蓝五种颜色。 2、需L