arduino - 为什么我无法使用此代码从 USART 接收字符串?
问题描述
使用此代码后,我在串行监视器上没有得到任何东西,而它应该给我我正在发送的字符串。我是对的,我从串行监视器发送的字符串在 arduino 中以 null 终止(这就是我等待 null 的原因字符以获取字符串)?请帮忙
void setup()
{
UBRR0 = 103; // for configuring baud rate of 9600bps
UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00);
// Use 8-bit character sizes
UCSR0B |= (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0);
//// Turn on the transmission, reception, and Receive interrupt
sei();// enable global interrupt
}
ISR(USART_RX_vect)
{
while (1)
{
while (!(UCSR0A & (1 << RXC0)));
if (UDR0 != '\0')
{
buf[i] = UDR0;
i++;
}
else
{
break;
}
}
temp=String(buf);
uart_send_string(temp); //this function is working properly
}
解决方案
不,您通常不会收到空的 '\0' 字符。
除非发件人明确发送一个。但这对于通过串行的非二进制数据传输来说是不寻常的。SerialMonitor 绝对不会!
如果您需要注意消息的结尾,换行符( LF 、 '\n' 或 0x0A )很常见。但任何其他角色也可以这样做。
顺便说一句:当您标记问题Arduino
时,为什么不使用 Arduino 库进行串行 UART 通信?
推荐阅读
- video - 使用 ffmpeg 从流中提取隐藏式字幕 VTT
- java - 尝试转换时间戳字段时,oracle.sql.timestamp 无法转换为 java.util.date
- django - Django 3.0:如何在同一模板中使用不同的 Boostrap 版本
- typescript - 您如何使用扩展运算符覆盖打字稿中的属性
- angular - Angular 10 更新和 xml2js
- android - XML功能中的android字体不适用于AppWidget
- android - 受信任的 Web 活动:导航回主活动会在过渡期间显示网站 URL
- regex - 特定正则表达式模式的 Nginx 重写规则
- python - Python 字典和列表混淆
- node.js - 如何在猫鼬中将对象字段作为数组获取?