C# 写一个方法给串口发送握手返回表示成功握手如果没有返回就继续发送每次相隔20毫秒连续50次没有返回就退出返回后就再发送24次T每次相隔3毫秒接受的字符大于等于24就返回。添加注释
using System.IO.Ports; // 引入串口命名空间
public static string Handshake(SerialPort serialPort)
{
string handshake = "?"; // 握手信号
string received = ""; // 接收到的数据
int count = 0; // 发送次数计数器
int tCount = 0; // 接收到T的计数器
// 发送握手信号
serialPort.Write(handshake);
// 循环等待接收数据
while (count < 50 && tCount < 24)
{
// 暂停20毫秒
System.Threading.Thread.Sleep(20);
// 判断是否有数据可读
if (serialPort.BytesToRead > 0)
{
// 读取数据
char c = (char)serialPort.ReadChar();
received += c;
// 判断是否握手成功
if (received.Contains("."))
{
// 发送T信号
for (int i = 0; i < 24; i++)
{
serialPort.Write("T");
System.Threading.Thread.Sleep(3);
}
return ".";
}
else
{
// 继续发送握手信号
serialPort.Write(handshake);
count++;
}
// 判断是否接收到T
if (c == 'T')
{
tCount++;
}
}
}
// 未握手成功,返回空字符串
return "";
}
原文地址: https://www.cveoy.top/t/topic/b9aY 著作权归作者所有。请勿转载和采集!