我的C#代码有问题。该代码旨在读取RFID标签并基于UID,告诉数据库启动什么样的过程。我遇到的问题是当我读取一个标签并将其设置为所需的睡眠时,它会读取标签,并且基本上等待执行下一个带有UID的程序,它甚至不应该读取。
代码:
string myConnectionString = "server=" + mysql_host + ";uid=" + mysql_user + ";" + "pwd=" + mysql_pass + ";database=" + mysql_daba;
MySqlConnection connect;
connect = new MySqlConnection(myConnectionString);
string query = "SELECT * FROM Tags WHERE tagCode = @tagCode";
AutodetectArduinoPort();
try{
ArduPort.PortName = AutodetectArduinoPort();
ArduPort.Open();
ArduPort.Write("startmonitor");
}
catch{
Console.WriteLine("comport did not connect.");
}
int delay;
while (true){
string tagData = ArduPort.ReadLine();
Console.WriteLine(tagData);
connect.Open();
MySqlCommand command = new MySqlCommand(query, connect);
command.Parameters.AddWithValue("@tagCode", tagData);
MySqlDataReader reader = command.ExecuteReader();
if (reader.Read()){
string url = reader.GetValue(3).ToString();
delay = Convert.ToInt32(reader.GetValue(4));
command.Dispose();
Process.Start(url);
connect.Close();
Thread.Sleep(delay);
}
}
答案 0 :(得分:0)
如果我理解正确的话:
result = result.filter(x => x.fieldid != 'name2')
涵盖单独的库。被称为" ArduPort"。 ArduPort不受你的" Thread.Sleep(延迟)影响;"功能
如果你想暂停它的阅读能力,你必须修改ArduPort代码以实现读取之间的延迟。
无论在港口接收到什么,只需存储到您的读取线,等待后再次点火。
如果这是您想要的,您需要更改扫描代码本身,暂停读取延迟扫描。
如果我没有正确理解你,请提供:
1,您问题中的明确输入示例。
2,您的问题中有明确的预期结果。
3,一组可能的约束。您可以提供的详细信息越多,我们就能越好地定制您的问题答案。
编辑:我的答案仍适用于串口组件。
答案 1 :(得分:0)
string myConnectionString = "server=" + mysql_host + ";uid=" + mysql_user + ";" + "pwd=" + mysql_pass + ";database=" + mysql_daba;
MySqlConnection connect;
connect = new MySqlConnection(myConnectionString);
string query = "SELECT * FROM Tags WHERE tagCode = @tagCode";
AutodetectArduinoPort();
while (true){
try
{
ArduPort.PortName = AutodetectArduinoPort();
ArduPort.Open();
ArduPort.Write("startmonitor");
}
catch
{
Console.WriteLine("comport did not connect.");
}
int delay;
string tagData = ArduPort.ReadLine();
ArduPort.Close();
Console.WriteLine(tagData);
connect.Open();
MySqlCommand command = new MySqlCommand(query, connect);
command.Parameters.AddWithValue("@tagCode", tagData);
MySqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
string url = reader.GetValue(3).ToString();
delay = Convert.ToInt32(reader.GetValue(4));
command.Dispose();
Process.Start(url);
connect.Close();
Thread.Sleep(delay);
}
}