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

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

  
楼 主:hwhhyh25 2004年10月27日11:57
 紧急求助各位大侠关于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;


 }

  
2楼:duke980605 2004年10月27日16:12
 改一该 receivedata的定义,最好不用下标
定义一无下标数组 outbuf()
将数据送給该数组 outbuf =
mscomm.output  = outbuf;
几年前我做过,大概是这样,有些忘了,参考MSCOMM的帮助例程。
  
3楼:duke980605 2004年10月30日17:30
 前两天搞错了,用Variant类型

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:[求助]救我!!!!

[下一篇主题]:求设计LED控制电路