C#将单元写入In-Sight Explorer(cognex)

时间:2017-03-11 07:59:41

标签: c#

我找到了这个页面,其中有一个从Insight-Explorer中提取单元格信息的示例,但是......如何从c#应用程序写入单元格?

C# extract Cell Information from In-Sight Explorer (Cognex)

3 个答案:

答案 0 :(得分:1)

如果要使用C#控制In-Sight摄像机的当前作业文件中的单元格,这是对我有用的方法。请注意,我正在使用In-Sight Explorer v5.9.0,但我也在较早的版本上进行了测试,并且仍然可以使用。

注意:如果没有康耐视In-Sight SDK许可证,您将无法在Visual Studio中运行此应用程序。您将必须构建项目,然后直接运行可执行文件。

  1. 打开 Visual Studio
  2. 创建一个新的控制台应用程序(.NET Framework)项目
  3. 我正在使用 .NET Framework 4.7.2
  4. 在解决方案资源管理器中右键单击该项目,然后将引用添加到Cognex.InSight.dll文件(通常位于以下位置: C:\ Program Files(x86)) \ Common Files \ Cognex \ In-Sight \ 5.xxx \ Cognex.InSight.dll)
  5. 将目标平台设置为 x86
  6. 将下面的代码粘贴到您的项目中
  7. 更改用户名密码 ipAddress 变量以匹配您的相机设置
  8. 构建
  9. 转到 Debug 文件夹并找到在构建项目后创建的可执行文件
  10. 双击可执行文件以运行它
using System;
using Cognex.InSight;

namespace ChangeInSightCellValue2
{
    class Program
    {
        static void Main(string[] args)
        {
            string username = "admin";
            string password = "";
            string ipAddress = "127.0.0.1";

            // Create camera object and connect to it
            CvsInSight camera = LogIntoCamera(ipAddress, username, password, true, false);

            // Define which cell you want to modify
            CvsCellLocation cell = new CvsCellLocation(2, 'C');

            // Modify the cell expression
            camera.SetExpression(cell, "Filter($A$0,0,0,0,80,100,320,440,0,0,3,3,1,128,128,128,1,1,0)", true);
        }

        // Log into camera
        private static CvsInSight LogIntoCamera(string sCamIP, string sCamUsername, string sCamPassword, bool forceConnect, bool connectAsynchronous)
        {
            // Create camera object
            CvsInSight insight = new CvsInSight();
            Console.WriteLine("Object created");

            IAsyncResult result;
            // Try logging into the camera on a different thread to prevent locking this one up
            Action action = () =>
            {
                // Connect to camera
                insight.Connect(sCamIP, sCamUsername, sCamPassword, forceConnect, connectAsynchronous);
            };

            result = action.BeginInvoke(null, null);

            if (result.AsyncWaitHandle.WaitOne(5000))
                return insight;

            else
                return insight;
        }
    }
}

注意:如果在运行此应用程序时使用In-Sight Explorer连接到相机,则In-Sight Explorer将与相机断开连接,然后在应用程序运行后尝试重新连接与相机断开连接。

答案 1 :(得分:0)

您可以使用纯模式命令在In-Sight Explorer中设置电子表格中的控件值(如您链接到的问题中所述)。请注意,您将无法将数据写入任何单元格 - 您只能写入包含EditInt()EditFloat()EditString()CheckBox()等的单元格功能。通过套接字连接将命令作为文本发送到摄像机端口23.建立连接后,您需要向摄像机发送用户名和密码。

答案 2 :(得分:0)

如果您使用的是Cognex SDK,请使用以下功能

  • CvsInSight.SetFloat(...)设置EditFloat控件值
  • CvsInSight.SetInteger(...)设置EditInt控件值
  • CvsInSight.SetListBoxIndex(...)选择列表框中的项目
  • CvsInSight.SetString(...)设置EditString控件值
  • CvsInSight.SetCheckBox(...)更改CheckBox控件的状态