a r d u i n o与上位机通信
教程
公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-
1,接收函数S e r i a l.r e a d() ad(void)
如果串行数据缓冲区有数据,这个函数会读取串行数据缓冲区的第一个字节,数据读取位置移动到下一个数据缓冲区,也就是说如果继续读取的话会读取下一个数据缓冲区的第一个字节.
如果数据缓冲区没有数据,将返回-1.
2,发送函数Serial.print
Serial.print(val)
arduino字符串转数组Serial.print(val, format)
Serial.print(val)
首先注意: print是一个打印函数,主要用于在上位机上显示,让数据可视化,它会将数据用字符的形式(ASCII码)逐个发送到串口.    一般不用这个函数来进行数据传输.
比如下面这段代码不会在串口助手上显示3个256,而会分别显示
'2','5','6'的ASCII码值,50,53,54(分三次发送,有三个地址不同的数据缓冲区)
void setup() {
// initialize  serial ports:
Serial.begin(9600);
Serial1.begin(9600);
Serial3.begin(9600);
Serial3.print(256);
if (Serial1.available()>0) {
Serial.ad());
Serial.ad());
Serial.ad());
}
}
void loop() {
}
既然print是一个打印函数,那么自然,参数val的类型是任意的. Serial.print(val, format)
将val的值转换成format指定的形式发送,可为BIN,OCT,HEX,DEC.
3,发送函数Serial.write
Serial.write(str)
str为字符串的首地址,buf为一个用来存放数据的数组的首地址. 这个函数会先发送字符串,然后返回字符串的长度.
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.write(45); // send a byte with the value 45
int bytesSent = Serial.write("hello");
Serial.println(bytesSent);
}
Serial.write(val)
val的数据类型为unsigned char,这个函数每次只发送一个字节的数据,所以val的值在0-255之间.
Serial.write(buf, len)
buf为要发送的数组的首地址(注意数组的类型为unsigned char),len为数组的长度.
void setup(){
Serial.begin(9600);
Serial3.begin(9600);
Serial1.begin(9600);
}
void loop(){
unsigned char data[2] ={11,0};
Serial3.write(data,2);
if(Serial1.available()>0)
Serial.ad());
Serial.ad());
}
回到开头的问题,如何从一个单片机的串口发送数据到Arduino上,然后用Arduino显示呢
我们可以先用单片机的print函数把数据打印到串口,然后用
char rx_data[4];
void setup(){
Serial.begin(9600);
Serial3.begin(9600);
Serial1.begin(9600);
}
void loop()
{
Serial3.print( send_data);
if(Serial1.available()>0)
{
for(char i=0;i<4;i++)
{
Serial.print(char(rx_data));
}
Serial.print("\n");
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。