关于串口数据用示波器分析的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于串口数据用示波器分析的问题相关的知识,希望对你有一定的参考价值。
哪位高手能帮我分析分析这个波形。
这个波形时通过RS485串口发出来的一段数据,(因为这是一台设备发出的,所以相关协议什么的都不知道)我想知道这个波形的波特率时57600吗?数据为是8bit吗?校验为是多少?还有停止位之类的东西。详细解释一下,或分析一下协议。先谢谢了。
RS485 通讯波特率可选择 300,600,1200,2400,4800,9600,19200,38400, 57600;
9600为最常用的速率。
2.奇偶校验方式包括 None-不校验,Odd-奇校验,Even-偶校验三种方式;图上应该是“不校验”
3. 数据位数可以选择7位或者8位(目前通讯都必须使用8位);
4. 停止位可选择1位或者2位;
5. 仪表序号(地址)可以设置为1~255,使用老通讯协议(兼容F77)时为1~99;这个与PC端上位机软件对应就可以了,自行设置。
默认设置 :
1. 通讯协议为2(=新485协议) 2. 仪表序号设为001
3. 波特率为6,奇偶校验为n,数据位数为8,停止位为1(除非用户指明,否则不要
修改)
通讯协议说明 :
1. 老协议:发送序号方式; 〔读数发送:B1 B0〕
2. 新协议:7E…7E方式; 〔读数发送:7E 01 01 01 01 0100 21 00 0000 73E8 7E〕 3. MODBUS:目前支持RTU模式 〔读数发送:01 03 07 D6 00 06 25 44〕
参考技术A 是,从图上看你一位数据的时间宽度大概17us,所以波特率为1000000/17Arduino中的串口通信!!Serial.print()是否带有打印的功能??
Arduino中的串口通信!!Serial.print()是不是带有打印的功能??如题。想用DataScope串口虚拟示波器显示Arduino中的数据。如果使用Serial.print()的话,用Arduino中的串口监视器确实可以看到数据,但是DataScope中并没有数据显示。所以Serial.print()函数是否真的只能用串口监视器读数??如果不是的话,想让虚拟示波器得到串口输出的数应该怎么写??
参考技术A #includeconst int INTERVAL = 2;
const unsigned int EVERY = 1000; // 每一千次调用 ppp( )一次
double sum, sss; // 和, 平方和
unsigned long n = 0;
unsigned long m = 0;
void ppp( )
int average;
int stdErr;
average = sum / n;
stdErr = sqrt((sss - (sum/n*sum) ) / n );
Serial.print("average:");
Serial.print(average);
Serial.print(" ");
Serial.print("stdErr:");
Serial.print(stdErr);
int k;
unsigned int gg=0; // for check
void ggyy()
k = analogRead(A0);
++n;
sum += k; // 总和
sss += k*k; // 平方和
if(++gg == EVERY)
gg=0; // clear counter
ppp( );
m = millis();
Serial.print("#S|LOGTEST|[");
Serial.print("Time:");
Serial.println(m);
void setup()
Serial.begin(9600);
MsTimer2::set(INTERVAL,ggyy);
MsTimer2::start();
void loop()
delay(800000);
MsTimer2::stop(); delay(0); MsTimer2::start();
以上是关于关于串口数据用示波器分析的问题的主要内容,如果未能解决你的问题,请参考以下文章