У меня есть приложение для обработки изображений, в котором у меня есть 2 режима. Ручная проверка и автоматическая проверка c с использованием команды PL C. Ручная проверка работает нормально, пользователь нажимает кнопку, чтобы получить изображение, а затем нажимает другую кнопку, чтобы обработать изображение и отправить результаты на PL C. Но в автоматическом режиме проверки c я получаю неверный результат проверки (тот же контроль продукта / изображения в ручном режиме дает правильный результат). Я подозреваю, что после получения изображения система не получает достаточно времени для чтения полного изображения до начала проверки, поэтому я добавил thread.sleep (500), но это не имело никакого значения. Поэтому я попробовал метод asyn c await.task.delay (500), тот же результат.
Есть ли другой способ исправить это?
Код:
private async void timer3_Tick(object sender, EventArgs e)
{
btncheckm1_Click(null, null);
var newSignal = textBox8.Text.Contains("+1");
var isRisingEdge = newSignal && (_oldSignal == false);
_oldSignal = newSignal;
if (isRisingEdge)
{
lblmessages.Text = "";
totalsheetcount++;
btngrabimage_Click(null, null);
// Thread.Sleep(300);
await Task.Delay(1000);
processimage();
}
}
btngrabimage () имеет следующий код:
try
{
camimage = null;
cam1.BeginAcquisition();
// Retrieve an image
IManagedImage rawImage = cam1.GetNextImage();
IManagedImage convertedImage = rawImage.Convert(PixelFormatEnums.Mono8);
imagetoinspect = convertedImage.bitmap;
rawImage.Release();
cam1.EndAcquisition();
//cam1.DeInit();
distort();
}
catch (Exception ee)
{
}