C#串口两个命令循环发送命令,该返回数据没有返,晓得是返数据模块的问题。

2025-01-04 10:25:31
推荐回答(4个)
回答1:

static private byte[] Write(ref SerialPort comPort, byte[] data, int timeOut, int returnLength,ref string error)
{
try
{
comPort.DiscardInBuffer();//清除串口接收缓冲区数据,避免外界干扰数据被提取
comPort.Write(data, 0, data.Length);
for (int a = 0; a < timeOut; a++)
{
if (comPort.BytesToRead == returnLength)
{
byte[] buf = new byte[returnLength];
comPort.Read(buf, 0, returnLength);
return buf;
}
Thread.Sleep(1);
}
error = "数据响应超时.";
return null;
}
catch(Exception e)
{
error = e.Message;
return NullByte;
}
}
这是我项目中的代码,没有做任何修改
comPort 串口对象
data 要发送的数据

timeOut 读取超时时间(单位毫秒)
returnLength 返回数据的长度(因为已经知道要返回数据的长度,所以判断长度,如果不知道返回的长度,可以只设置它的超时参数)
error 异常信息

希望能够帮到你

回答2:

加个定时器 设置通讯超时时间。如果超时无数据返回 就再发命令

回答3:

定义一个int count = 0;
发送命令后count ++;
读取count就知道发送多少此命令了。

回答4:

加个循环判断