我想使用 C# Windows 窗体应用程序读取串行数据。数据通过 ESP32 C3 Super Mini 发送。当我使用 Arduino IDE 中的串行监视器时,一切正常。
如果我使用 C# 应用程序(
serialPort1.ReadLine();
或 serialPort1.ReadExisting();
)读取串行数据,我将仅获取一次数据,然后 ESP 会重置,原因如下:rst:0x15 (USB_UART_CHIP_RESET),boot:0xc (SPI_FAST_FLASH_BOOT)
C# 代码
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
lblState1.Invoke(new MethodInvoker(ProcessData1));
}
private async void ProcessData1()
{
//MessageBox.Show(serialPort1.ReadLine());
MessageBox.Show(serialPort1.ReadExisting());
}
Arduino 代码
unsigned long last_time = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
// Print a heartbeat
if (millis() > last_time + 2000)
{
Serial.println("Arduino is alive!!");
last_time = millis();
}
}
几天前,该应用程序运行良好。当我将新程序上传到 ESP32 后,我遇到了这个问题并且无法修复它。
编辑
DtrEnable 和 RtsEnable 设置为 false。
只需拔掉 Arduino 的插头,问题就在一夜之间得到了解决。感谢@kunif 的帮助。