///

/// 发送数据到串口并等待接收数据 /// /// 要发送的命令 /// 等待时间 /// 返回接收到的数据 public ProcessSerialPortValue Send(string comm, int timeout = 1000) { // 将命令转换为字节数组 byte[] senBuf = System.Text.Encoding.Default.GetBytes(comm); // 接收数据的缓冲区 byte[] recBuf = new byte[1024]; // 接收数据的长度 int recLen = 0; try { // 清空发送缓冲区和接收缓冲区 serialPort.DiscardOutBuffer(); serialPort.DiscardInBuffer(); // 发送命令 serialPort.Write(senBuf, 0, senBuf.Length); // 等待一段时间,让数据传输完成 Thread.Sleep(50); // 循环读取接收缓冲区的数据 while (true) { // 读取缓冲区中的数据 int len = serialPort.Read(recBuf, recLen, serialPort.BytesToRead); // 如果没有数据可读,退出循环 if (len == 0) { break; } // 更新接收到的数据长度 recLen += len; // 更新等待时间 timeout--; // 如果等待时间已经用完,退出循环 if (timeout < 0) break; } } catch (Exception ex) { // 发生异常,不做处理 } // 将接收到的数据转换为字符串并返回 return new ProcessSerialPortValue(Encoding.Default.GetString(recBuf, 0, recLen)); }


原文地址: https://www.cveoy.top/t/topic/j7XE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录