上位机向单片机发送字符串
上位机向单片机发送一串字符串,存入一个数组缓冲区RX1_Buffer[COM_RX1_Lenth]中,接下来单片机提取数组缓冲区中的一部分字符串,将该字符串转化为整形数据,接着将整形数据转化为十六进制数通过串口发送给上位机,单片机连续向上位机发送数据,上位机第一次能正确的接收到上位机发送给单片机的数据,过后上位机收到的数据就是错误的,不知道是什么原因,附部分程序代码如下:

void UART1_int (void) interrupt UART1_VECTOR
{
if(RI)

{
RI = 0;
if(COM1.B_RX_OK == 0)
{
if(COM1.RX_Cnt >= COM_RX1_Lenth) COM1.RX_Cnt = 0;
RX1_Buffer[COM1.RX_Cnt++] = SBUF;
COM1.RX_TimeOut = TimeOutSet1;
}

}
if(TI)
{
TI = 0;
if(COM1.TX_read != COM1.TX_write)
{
SBUF = TX1_Buffer[COM1.TX_read];
if(++COM1.TX_read >= COM_TX1_Lenth) COM1.TX_read = 0;
}
else COM1.B_TX_busy = 0;
}
}
void TX1_write2buff(u8 dat) //写入发送缓冲,指针+1
{
TX1_Buffer[COM1.TX_write] = dat; //装发送缓冲
if(++COM1.TX_write >= COM_TX1_Lenth) COM1.TX_write = 0;

if(COM1.B_TX_busy == 0)     //空闲
{  
    COM1.B_TX_busy = 1;     //标志忙
    TI = 1;                 //触发发送中断
}

}
void deal_uart(void)
{
if(RX1_Buffer[0]== 'R')

{
for(i=3;i<5;i++)
Y_arr[i-3] = RX1_Buffer[i];
t_year = strtod(Y_arr,NULL);
TAB_T[5] = DecToHex(t_year);

            for(i=6;i<8;i++)
                M_arr[i-6] =  RX1_Buffer[i];            
            t_month = strtod(M_arr,NULL);
             TAB_T[4] = DecToHex(t_month);
                for(i=9;i<11;i++)
            D_arr[i-9] =  RX1_Buffer[i];                
            t_day = strtod(D_arr,NULL);
             TAB_T[3] = DecToHex(t_day);

            for(i=12;i<14;i++)
                S_arr[i-12] =  RX1_Buffer[i];
            t_hour = strtod(S_arr,NULL);
             TAB_T[2] = DecToHex(t_hour);                COM1.RX_Cnt = 0; 
        }

}
void main(void)
{
while (1)
{
deal_uart();
for(i=0;i<)
TX1_write2buff(TAB_T[i]);
}
}

求原因?

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
向上位机发送回车
小车程序加入了向上位机发送回车功能,能发距离和字符。
rtp发送字符串 上位机端
下位机为arm9开发板,使用vs2005编写rtp测试程序 ,PC端程序。
msp430单片机通过串口向上位机发送浮点数
组装数据 首先将数据组装起来,通过sprintf函数。 组装数据时用的小技巧: length = 0; sprintf(Storage+length, "Rr=%4.3f ", g_StrComm.aSBuf[0]); length = strlen(Storage); //strlen =12 sprintf(Storage+length, "Rh=%4.
上位机控制单片机CAN发送相应的数据
本课程主要介绍C++类库MFC上位机与STM32单片机的RS232、RS422、RS485、USB、LWIP以太网、CAN等接口进行稳定通信。课程主要从MFC和STM32基础开始,以编写上位机以及下位机为主,非常注重实践。
上位机通过串口向开发板发送文件
背景 每次我从电脑上copy文件到开发板上都是把udisk拔下来,插到上位机上去copy,插插拔拔很麻烦,后来想到了可以通过串口传输文件到开发板,根据开发板的实际情况总结了步骤:   总体思路:通过在开发板上安装lrzsz实现 lrzsz包括sz和rz: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 (rz...
USB HID 下位机向上位机发送程序
HID 通信下位机给上位机传送数据
点阵上位机发送汉字到单片机显示
超级点阵,上位机发送任意汉字到单片机显示等
单片机上位机
超级简单代码一看就懂, 用delphi开发的单片机上位机。 单片机:STC89C52(51单片机) 晶体振荡器:11.0592M 或 12M
上位机发送指令给单片机 单片机完成相应指令动作
上位机发送指令给单片机 单片机完成相应指令动作,很好的实现了人机交互功能
单片机的串行通信实现字符串的发送
双机通信发送字符串包括发送和接受程序,仿真电路。
单片机通过如何发送字符串?
关于printf的知识很零碎,感觉成体系的总结有点麻烦,这里就用列出的方法。 printf 与 fputc、putchar…的关系 无论是51还是ARM,都可以在标准输入输出头文件“iostd.h”中找到printf函数; printf函数可以方便的选择输出的内容,包括字符串,甚至是汉字形式的字符串; 当使用printf函数输出字符串的时候,肯定是一个字节一个字节的输出,而f
Webform向Winform发送字符串
这个是Web服务器向Winform发送信息,有需要用到的朋友也可以改成web向win发送指令,反过来也成,只是看你怎么用的了 在开发过程中,有时候总会遇到D刁难的客户,刚开始时,我也不知点办,连点思路也没有,在网上找了半天,一点头绪都没有,烦了两天,终于让我想到个办法解决,这个办法不知是否好,但不过也现实了想要的功能,希望大神能给点好的思路或办法。
求助,有关串口向单片机发送字符串的问题
这是我写的串口向单片机发送字符串的程序rnrn#includern#define uchar unsigned charrn#define uint unsigned intrnrnuchar ser_receive; //串口接收到的数据rnuchar ser_flag=0;rnuchar n,m,a,b;rnrnsbit RXD_ = P3^0;rnrnuchar xdata receive_number[256];//接收串口发送来的数据的数组 rnuchar TX_BUF[32];rnuchar i=0;rnuchar j;rnuint l=0;rnuchar come=0;rnvoid init_ser()rnrn rn TMOD=0X20;//定时器1工作在方式2 rn TH1=0XFD;rn TL1=0XFD; //波特率9600 rn TR1=1;rn EA=1;rn SM0=0;rn SM1=1;rn REN=1;//允许串口接收 rn ES=1;//开串口 中断 rn rn rnrnrn/**************************************************rn串口中断rn/**************************************************/rnvoid ser() interrupt 4 rnrn if(RI==1)rn rn RI=0;rn ser_receive=SBUF;rn if(ser_receive!='\0')rn rn receive_number[i]=ser_receive;rn i++;rn n=0;rn while(n++>1500)rn rn n++;rn rn if((RXD_)&&(i<33))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=1;rn rn if((RXD_)&&(i>32)&&(i<65))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=2;rn rn if((RXD_)&&(i>64)&&(i<97))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=3;rn rn if((RXD_)&&(i>96)&&(i<129))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=4;rn rn if((RXD_)&&(i>128)&&(i<161))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=5;rn rn if((RXD_)&&(i>160)&&(i<193))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=6;rn rn if((RXD_)&&(i>192)&&(i<225))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=7;rn rn if((RXD_)&&(i>224)&&(i<257))rn rn l=i;rn while(l<256)rn rn receive_number[l]='\0';rn l++;rn rn a=i/32;rn b=i%32;rn l=0; rn i=0;rn ser_flag=8;rn rn rn rnrnvoid main()rnrn init_ser();rn while(1)rn rn if(ser_flag==1)rn rn ES=0;rn ser_flag=0;rn for(l=0;l
上位机 51 接收发送
上位机与51单片机之间的通讯,能实现数据的接收发送
上位机的串口发送程序
单片机的串口发送程序,喜欢电子的朋友需要好好看。
单片机vc++的上位机程序
单片机vc++的上位机程序 CMSComm控件编程
单片机和上位机互发浮点数
原来一直感觉单片机传送浮点数比较费劲,最近好好弄弄,其实没有那么复杂,不用了解浮点数是怎么存储的,知道占用4个字节就可以了!
单片机与上位机通讯方法
单片机与上位机通讯,实现单片机与上位PC机进行通讯的电路图
单片机与上位机间的串口通信
单片机的串口应用程序,已经经过调试,单片机串口与上位机的通信
继续单片机与上位机通信~~~
上位机与单片机通信~~~~~~~~~~~~~~~~~~~
调试单片机串口上位机
vb编写用于STC12C5A60S2单片机调试用的串口通信程式
单片机串口接收上位机
可以方便的接收下位机发送的16进制数据,每次接收一个字节的数据,仅供参考
上位机与单片机的通信
是一个串口通信问题,里面有源程序,如何制作上微机界面等问题,实行对交通灯的完全监控
单片机上位机程序vc++
单片机上位机程序vc++ 作者:梁涛适当方式打开
单片机和上位机模拟
51单片机和VB上位机模拟。需要的下载,不需要的就不必了,呵呵。
单片机上位机语言
我是单片机C语言学习者,现在想学点上位机语言,不知道各位大侠有什么好的,指点小弟一二啊,
上位机与单片机的通信问题
上位机采用的是组态王这款监控软件,单片机采用的是STM32,系统的总框架分为4层:        服务器(组态王)——网关2——网关1——节点 通信过程中遇到的问题如下: 1. 将单片机与组态王连接完成后,组态王上没显示 (1)首先检查电路有没有连接正确(已经确定连接无误) (2)利用串口查看网关1跟网关2打印出来的数据(对照代码中的内容,确定运行到每一步应有什么标志,可以通过打印不
请教单片机上位机问题
想请教论坛里的前辈,如何通过串口发送区发送一串字符串代码,然后将字符串代码转换成16进制去送给红外发射,字符串代码以HR开始/r/n结束
单片机,上位机串口通讯源码
c 语言实现单片机与上位机的串口通讯,希望对有需要的朋友有所帮助。
单片机与上位机串行通信
单片机与上位机串行通信单片机与上位机串行通信
单片机与上位机串口通信程序
实现单片机与上位机的通信程序实例,实例中包含了接收和发送的通信子程序,希望对你有所帮助!
上位机给单片机发送数据。
比如上位机面板输入的是5ms,但是可能是15ns或者25s,那么我该怎么样处理数据发送给下面的单片机呢?我现在用的是MFC里面的mscoom控件,我能直接发送字符串下去么?不然的话,每个数据都要有单独的命令,那不是写不完。
单片机和上位机的简单通信
这是关于单片机和上位机简单的通信,简单易懂,包含程序。
关于单片机和上位机
我的单片机程序已经写好,是用AD板模拟8路输入,单片机89C51,通过USB芯片的D12和计算机的USB相连,问题是:上位机怎么和单片机通讯?怎么获得这8路信号的数据?多谢!!
单片机bootloder上位机stm32
单片机bootloder上位机stm32,一键下载stm32单片机程序
关于向单片机发送像素的问题
用vc我想提取像素的颜色信息,我需要在设备上先建立位图吗?比如我要提取几个汉字的像素,我需要先选择设备,然后在设备上建立位图,输出汉字,最后提取像素的颜色信息,还是直接向内存输出汉字,直接提取像素的颜色信息?
VB实现的上位机实现单片机与上位机的串行通信
实现单片机与上位机的串行通信 用vb编写的程序 对现场信号进行实时监测
上位机和单片机通讯
如何实现:当上位机和单片机通讯时,保存单片机发送来的数据至文本文件中,需要时再由上位机发送给单片机?rn假定数据长度30字节
matlab制作单片机上位机
利用matlab制作单片机上位机。控制LED灯的亮灭。利用matlab制作GU和处理函数。
向上位机发送数据
通过CyUsb向上位机发送指令,上位机自动回复。 PS:需要安装驱动!
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表