//cslg单片机串口案例
const int BUFFER_SIZE = 128; // 定义缓冲区大小
char buffer[BUFFER_SIZE]; // 创建缓冲区
int index = 0; // 缓冲区索引
void setup() {
Serial.begin(9600); // 初始化串口通信,波特率设置为9600
Serial.println("虽然听不懂,老师讲得也烂,但我们超级喜欢单片机这门课呢!!!");
}
void loop() {
// 检查串口是否有数据可读
if (Serial.available() > 0) {
// 读取一个字节
char incomingByte = Serial.read();
// 检查是否达到了缓冲区大小限制
if (index < BUFFER_SIZE - 1) {
// 将字节添加到缓冲区中
buffer[index++] = incomingByte;
// 检查是否收到了字符串结束符(换行符)
if (incomingByte == '\n') {
// 在缓冲区末尾添加字符串结束符(对于计算字符数不是必需的,但有助于打印)
buffer[index] = '\0';
// 计算字符串的字符数(不包括结尾的'\0')
int stringLength = index - 1; // 减1是因为我们不包括换行符'\n'
// 打印接收到的字符串及其字符数
Serial.print("收到啦,收到啦,不要再哔哔啦: ");
Serial.println(buffer);
Serial.print("您看看您哔哔了多少个字符: ");
Serial.println(stringLength);
// 清空缓冲区索引以准备接收下一个字符串
index = 0;
}
} else {
// 如果缓冲区满了,打印错误消息并清空缓冲区
Serial.println("爆了吧,哔哔的缓冲区都炸了,罪孽啊...");
index = 0;
}
}
}