在Arduino中,可以使用esp32的uart rx中断来处理串口接收数据的事件。下面是一个示例代码:
首先,包含所需的库文件:
#include 
 然后,定义一个全局变量来存储接收到的数据:
String receivedData;
接下来,定义一个中断处理函数来处理uart接收中断:
void IRAM_ATTR onUartData() {
  // 读取接收缓冲区中的数据
  while (Serial.available()) {
    char data = Serial.read();
    receivedData += data;
    // 如果接收到换行符,则表示接收到了完整的数据
    if (data == '\n') {
      // 处理接收到的数据
      Serial.print("Received data: ");
      Serial.println(receivedData);
      // 清空接收缓冲区
      receivedData = "";
    }
  }
}
在setup()函数中,初始化串口并启用uart rx中断:
void setup() {
  Serial.begin(115200);
  
  // 设置uart接收中断
  esp32_uart_set_rx_intr_en(UART_NUM_0, true);
  esp32_uart_attach_interrupt(UART_NUM_0, onUartData);
}
最后,在loop()函数中可以进行其他的操作:
void loop() {
  // 其他操作...
}
这样,当有数据通过uart接收到时,中断处理函数onUartData()将会被调用,你可以在其中处理接收到的数据。
请注意,此示例代码是基于Arduino框架和ESP32的库文件编写的,所以可能需要将其适配到你的具体开发环境中。