社区
单片机/工控
帖子详情
串口助手显示接收到数据,但是界面没数据显示
zhuiyi_5
2015-04-29 08:35:57
ATOS实验箱中测量节点温度,并显示出来,程序运行正确,也成功下载,但是在串口助手却只能显示接收到数据,界面上啥都没有,改成16进制显示,界面上显示的全部是0,不知道是是怎么回事?求大神解答~
...全文
8808
19
打赏
收藏
串口助手显示接收到数据,但是界面没数据显示
ATOS实验箱中测量节点温度,并显示出来,程序运行正确,也成功下载,但是在串口助手却只能显示接收到数据,界面上啥都没有,改成16进制显示,界面上显示的全部是0,不知道是是怎么回事?求大神解答~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
m0_51094049
2021-07-15
打赏
举报
回复
请问楼主解决没有?能教教吗
aydf1
2019-01-23
打赏
举报
回复
波特率不对!!!
qq_32148499
2017-05-31
打赏
举报
回复
估计是你的线接错了,是不是RX和TX接反了。
西蒙先生、
2017-05-29
打赏
举报
回复
串口一定接地
freshhand_Yi
2017-04-17
打赏
举报
回复
你好,我现在也遇到了同样的问题,不知道楼主解决这个问题没有? 我的程序如下: /**************************************************************************** * 文 件 名: main.c * 作 者: Andy * 修 订: 2013-01-08 * 版 本: 1.0 * 描 述: 设置串口调试助手波特率:115200bps 8N1 * 串口调试助手给CC2530发字符串时,开发板会返回接收到的字符串 ****************************************************************************/ #include <ioCC2530.h> #include <string.h> typedef unsigned char uchar; typedef unsigned int uint; #define UART0_RX 1 #define UART0_TX 2 #define SIZE 51 char RxBuf; char UartState; uchar count; char RxData[SIZE]; //存储发送字符串 /**************************************************************************** * 名 称: DelayMS() * 功 能: 以毫秒为单位延时 * 入口参数: msec 延时参数,值越大,延时越久 * 出口参数: 无 ****************************************************************************/ void DelayMS(uint msec) { uint i,j; for (i=0; i<msec; i++) for (j=0; j<1070; j++); } /**************************************************************************** * 名 称: InitUart() * 功 能: 串口初始化函数 * 入口参数: 无 * 出口参数: 无 ****************************************************************************/ void InitUart(void) { PERCFG = 0x00; //外设控制寄存器 USART 0的IO位置:0为P0口位置1 P0SEL = 0x0c; //P0_2,P0_3用作串口(外设功能) P2DIR &= ~0xC0; //P0优先作为UART0 U0CSR |= 0x80; //设置为UART方式 U0GCR |= 11; U0BAUD |= 216; //波特率设为115200 UTX0IF = 0; //UART0 TX中断标志初始置位0 U0CSR |= 0x40; //允许接收 IEN0 |= 0x84; //开总中断允许接收中断 } /**************************************************************************** * 名 称: UartSendString() * 功 能: 串口发送函数 * 入口参数: Data:发送缓冲区 len:发送长度 * 出口参数: 无 ****************************************************************************/ void UartSendString(char *Data, int len) { uint i; for(i=0; i<len; i++) { U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } } /**************************************************************************** * 名 称: UART0_ISR(void) 串口中断处理函数 * 描 述: 当串口0产生接收中断,将收到的数据保存在RxBuf中 ****************************************************************************/ #pragma vector = URX0_VECTOR __interrupt void UART0_ISR(void) { URX0IF = 0; // 清中断标志 RxBuf = U0DBUF; } /**************************************************************************** * 程序入口函数 ****************************************************************************/ void main(void) { CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32M CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ InitUart(); //调用串口初始化函数 UartState = UART0_RX; //串口0默认处于接收模式 memset(RxData, 0, SIZE); while(1) { if(UartState == UART0_RX) //接收状态 { if(RxBuf != 0) { if((RxBuf != '#')&&(count < 50))//以'#'为结束符,一次最多接收50个字符 RxData[count++] = RxBuf; else { if(count >= 50) //判断数据合法性,防止溢出 { count = 0; //计数清0 memset(RxData, 0, SIZE);//清空接收缓冲区 } else UartState = UART0_TX; //进入发送状态 } RxBuf = 0; } } if(UartState == UART0_TX) //发送状态 { U0CSR &= ~0x40; //禁止接收 UartSendString(RxData, count); //发送已记录的字符串。 U0CSR |= 0x40; //允许接收 UartState = UART0_RX; //恢复到接收状态 count = 0; //计数清0 memset(RxData, 0, SIZE); //清空接收缓冲区 } } }
daiya81
2015-07-31
打赏
举报
回复
注意一下,初始化时串口的定义顺序,调整一下试试
daiya81
2015-07-30
打赏
举报
回复
关闭一下串口试试
xiaodong60606
2015-05-13
打赏
举报
回复
1
线接的有问题,确定是ttl电平还是rs232还是485,正负极倒一下。
maozi8654488711
2015-05-08
打赏
举报
回复
检查一下接线吧,吧地线和数据线相互换换
mangoalx
2015-05-07
打赏
举报
回复
是链接错误,检查库文件设置。另外需要打开浮点数打印支持。检查你的链接配置
zhuiyi_5
2015-05-06
打赏
举报
回复
使用snprintf(TempValue, 6, "%.2f", Temp);函数的话,调试时会出现这个错误:
不知道怎么弄,在头文件中有申明:
#include "stdio.h"
#include"stdlib.h"
mangoalx
2015-05-04
打赏
举报
回复
TempValue[0] = (unsigned char)(Temp)/10 + 48; //十位 这个有问题。干吗不用sprintf? 或者更安全的snprintf? snprintf(TempValue, 6, "%.2f", Temp); UartTX_Send_String( TempValue,6);
色郎中
2015-05-02
打赏
举报
回复
自动清空 别沟看看呢 再找个串口监视软件看看
Akaril
2015-04-30
打赏
举报
回复
字符格式发送,然后看看是不是半角或者圆角字符
zhuiyi_5
2015-04-30
打赏
举报
回复
波特率设置的是115200,没错~找了很久 都不知道是怎么回事?
zmszsh
2015-04-30
打赏
举报
回复
说不定是接线的问题!
of123
2015-04-30
打赏
举报
回复
估计是对的。缺省值是 9600,他设成 115200 应该是有根据的。 用示波器抓一下信号线上的波形。
zhuiyi_5
2015-04-30
打赏
举报
回复
/* initUART_Timer.h */ #include <ioCC2530.h> #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 //定义LED1为P10口控制 #define LED2 P1_1 //定义LED2为P11口控制 #define LED3 P1_4 //定义LED3为P14口控制 // Data typedef unsigned char BYTE; // Unsigned numbers typedef unsigned char UINT8; typedef unsigned char INT8U; typedef unsigned short UINT16; typedef unsigned short INT16U; typedef unsigned long UINT32; typedef unsigned long INT32U; // Signed numbers typedef signed char INT8; typedef signed short INT16; typedef signed long INT32; #define DISABLE_ALL_INTERRUPTS() (IEN0 = IEN1 = IEN2 = 0x00)//三个 /************************** 系统时钟 不分频 计数时钟 32分频 **************************/ void InitClock(void) { CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振 while(CLKCONSTA & 0x40); // 等待晶振稳定 CLKCONCMD &= ~0x47; // 设置系统主时钟频率为 32MHZ } /**************************** //初始化程序 *****************************/ void InitLed(void) { P1DIR |= 0x13; //P1_0、P1_1定义为输出 LED1 = 0; //LED1灯熄灭 LED2 = 0; LED3 = 0; } /**************************** T3初始化 ****************************/ void InitT3(void) { T3CCTL0 = 0X44; // T3CCTL0 (0xCC),CH0 中断使能,CH0 比较模式 T3CC0 = 0xFA; // T3CC0设置为250 T3CTL |= 0x9A; // 启动T3计数器,计数时钟为16分频。使用MODULO模式 IEN1 |= 0X08; IEN0 |= 0X80; //开总中断,开T3中断 } /***************************************** 串口初始化函数:初始化串口 UART0 *****************************************/ void InitUART0(void) { PERCFG = 0x00; //位置1 P0口 P0SEL = 0x3c; //P0用作串口 P2DIR &= ~0XC0; //P0优先作为UART0 U0CSR |= 0x80; //串口设置为UART方式 U0GCR |= 11; U0BAUD |= 216; //波特率设为115200 UTX0IF = 1; //UART0 TX中断标志初始置位1 U0CSR |= 0X40; //允许接收 IEN0 |= 0x84; //开总中断,接收中断 } void UartTX_Send_String(char *Data,int len) { int j; for(j=0;j<len;j++) { U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } U0DBUF = 0x0A; // 换行 while(UTX0IF == 0); UTX0IF = 0; } void Delay(uint n) { uint i; for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); } void Delayms(uint xms) //i=xms 即延时i毫秒 (16M晶振时候大约数,32M需要修改,系统不修改默认使用内部16M) { uint i,j; for(i=xms;i>0;i--) for(j=587;j>0;j--); } /* main.c */ #include <ioCC2530.h> #include "InitUART_Timer.h" //注意在option里设置路径 #include "stdio.h" void initTempSensor(void) { DISABLE_ALL_INTERRUPTS(); //关闭所有中断 InitClock(); //设置系统主时钟为 32M TR0=0X01; //set '1' to connectthe temperature sensorto the SOC_ADC. ATEST=0X01; // Enablesthe temperature sensor } float getTemperature(void) { uint value; ADCCON3 = (0x3E); //选择1.25V为参考电压;12位分辨率;对片内温度传感器采样 ADCCON1 |= 0x30; //选择ADC的启动模式为手动 ADCCON1 |= 0x40; //启动AD转化 while(!(ADCCON1 & 0x80)); //等待 AD 转换完成 value = ADCL >> 4; //ADCL 寄存器低 4位无效 value |= (((UINT16)ADCH) << 4); return (value-1367.5)/4.5-5; //根据AD值,计算出实际的温度,温度系数应该是4.5 /℃ //进行温度校正,这里减去5℃(不同芯片根据具体情况校正) } void main(void) { // char i; char TempValue[6]; float Temp; InitUART0(); //初始化串口 initTempSensor(); //初始化 ADC while(1) { /*AvgTemp = 0; for(i = 0 ; i < 64 ; i++) { AvgTemp += getTemperature(); AvgTemp=AvgTemp/2; //每次累加后除 2 } */ Temp=getTemperature(); /****温度转换成ascii码发送****/ TempValue[0] = (unsigned char)(Temp)/10 + 48; //十位 TempValue[1] = (unsigned char)(Temp)%10 + 48; //个位 TempValue[2] = '.'; //小数点 TempValue[3] = (unsigned char)(Temp*10)%10+48; //十分位 TempValue[4] = (unsigned char)(Temp*100)%10+48; //百分位 TempValue[5] = '\0'; //字符串结束符 UartTX_Send_String( TempValue,6); Delayms(2000); //使用32M晶振,故这里2000约等于1S } } 代码如上,是否代码上有什么问题?
mangoalx
2015-04-29
打赏
举报
回复
波特率对吗?
汉字
显示
串口调试助手
通常的串口调试助手均不带有汉字
显示
功能,本
串口助手
很好的解决了这一问题。
qt写的绘制串口
接收
到
数据
的实时曲线
qt写的绘制串口
接收
到
数据
的实时曲线,单片机串口发送格式为“AAA%-5d”
C# WinForm写的简单
串口助手
及波形
显示
上位机
C# WinForm写的简单
串口助手
及波形
显示
C#编写的串口调试助手-
显示
界面
仿照友善串口调试助手
串口调试助手是串口调试相关工具,支持9600,19200等常用各种波特率及自定义波特率,可以自动识别串口,能设置校验、
数据
位和停止位,能以ASCII码或十六进制
接收
或发送任何
数据
或字符, 主要实现的功能: 1、自动搜索串口,并打开串口; 2、支持自定义波特率,支持非标准波特率; 3、
接收
数据
可以进行十六进制和ASCII切换; 4、
接收
数据
时,光标可定位在指定行或在最后一行; 5、可以以十六进制或ASCII格式,向指定串口发送
数据
; 6、串口打开过程中,可修改通讯参数,如波特率; 可用以于串口相关的程序二次开发开发,单片机上位机开发 PLC上上位机开发;注释完整清晰。 软件内容
数据
串口使用到的字符串与整数之间的转换,字符编码转换,及委托的使用,让
接收
及时方便,不掉
数据
,
接收
数据
易二次开发。
C#
串口助手
源代码(共六个打包下载)
C#
串口助手
源代码,有winform的,也有WPF的,一共六个打包下载。代码来自网络。
单片机/工控
27,509
社区成员
28,797
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章