ES400: ошибка CameraCaptureDialog после сохранения одного изображения - PullRequest
0 голосов
/ 21 ноября 2011

Я получаю сообщение об ошибке, используя класс CameraCaptureDialog в ES400, при обнаружении второго изображения с надписью «Не удалось найти изображение».Но тот же код отлично работает в MC35.

  Dim app_path As String
        Dim ccd As New CameraCaptureDialog
        Dim count As Integer
        count = TransImagelst.Images.Count
        Try

            ccd.Owner = Me
            ccd.DefaultFileName = "Image" & count.ToString & ".jpg"
            ccd.Mode = CameraCaptureMode.Still
            ccd.StillQuality = CameraCaptureStillQuality.Low
            ccd.Resolution = New Size(0, 0)
            ccd.Title = "Image"
            ccd.InitialDirectory = DataBase_Path & "\" & Region & "\Image"
            ccd.ShowDialog()


            'add files to image directory.
            If Not Directory.Exists(DataBase_Path & "\" & Region & "\Image") Then Directory.CreateDirectory(DataBase_Path & "\" & Region & "\Image")

            If ccd.FileName  String.Empty Then
                TransImagelst.ImageSize = New Drawing.Size(55, 55)
                TransImagelst.Images.Add(New Bitmap(ccd.FileName))
                TransImagelstv.View = View.LargeIcon
                TransImagelstv.LargeImageList = TransImagelst
                Dim lv As New ListViewItem("Image" & TransImagelst.Images.Count - 1)
                TransImagelstv.Items.Add(lv)
                lv.ImageIndex = TransImagelst.Images.Count - 1
            End If

Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 25 января 2012

У меня была такая же проблема. Хотя ES400 содержит множество функций, он не работает с Cameracapturedialog. Он даже не поддерживает библиотеку изображений в Motorla EMDK SDK. Это сбивает с толку. В Руководстве по программированию EMDK есть запись для программирования ES400, в которой говорится: вы должны использовать Microsoft DirectShow для захвата изображений. Я попробовал этот подход, но я мог получить только разрешение VGA, которое является мусором для моих целей. Если вам этого достаточно, вы можете взглянуть на http://alexmogurenko.com/blog/directshownetcf/.. Я крайне разочарован ES400 в этом вопросе. В итоге я выбрал простое решение, которое немного чушь, но, по крайней мере, оно работает (см. Схему ниже и удачи).

using (Process proc = new Process())
{
    //This will open the internal camera application.
    proc.StartInfo = new System.Diagnostics.ProcessStartInfo(@"\Windows\Camera.lnk", string.Empty);
    if (proc.Start() == false)
    {
      Messagebox.(this did not work blablabla)
        return; 
    }
}
//The camera app has now focus, in the meantime, we wait with a new messagebox…
Messagebox.Show(“Ok,Cancel” to open picturedialog)
if (cancel)
    return;
string _filename = string.Empty; 
using (SelectPictureDialog _spd = new SelectPictureDialog())
{
    _spd.Owner = this;
    _spd.CameraAccess = false;
    _spd.LockDirectory = false;
    _spd.SortOrder = SortOrder.DateDescending;
    _spd.Title = "Select picture from camera";
    if (_spd.ShowDialog() == DialogResult.OK)
    {
        _filename = _spd.FileName;
    }
    else //No picture selected
        return;
}

//Handle image.. 
//Delete image from folder?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...