单片机和电脑串口通信的问题
小弟用51单片机通过串口向电脑的VC编的上位机发数据,结果收到的数据不对。求帮忙看一下
单片机发送程序
#include<reg52.h>
#include<stdio.h>
#define uint unsigned int
#define uchar unsigned char
float f_temp;
sbit k1=P3^0;
uint cnt=0;
/*****************功能函数定义*******************************/
void init_com()
{
TMOD=0X20;
PCON=0X00;
SCON=0X50;
TH1=0XFD;
TL1=0XFD;
TR1=1;
k1=1;
//P1=0x55;
}
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void comm(char* parr)
{
do
{
SBUF=*parr++;
while(!TI);
TI=0;
}while(*parr);
}
void com_m( float f_temp)
{
uchar buff[3];
init_com();
sprintf(buff,"%f",f_temp);
comm(buff);
}
/***********************************************************/
void main()
{
while(1)
{
f_temp=22;
init_com();
if(k1==0)
{
delayms(10);
if(k1==0)
{
cnt++;
f_temp++;
com_m( f_temp);
if(f_temp>40)
{
f_temp=0;
}
}
while(!k1);
}
}
}
下面的是上位机控件的程序
void CHongjingDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
m_strRXData=" ";
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2)
{
variant_inp=m_ctrlComm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%c",bt);
m_strRXData+=strtemp;
}
}
UpdateData(FALSE);