C#笔记 线扫相机利用串口通信设置曝光
1. 串口通信

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; namespace portDemo
{
public partial class Form1 : Form
{
public SerialPort Com;
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
Com = new SerialPort();
cmbBaudRate.SelectedIndex = 6;
cmbDataBits.SelectedIndex = 3;
cmbStopBits.SelectedIndex = 1;
cmbParity.SelectedIndex = 0;
}
/// <summary>
/// 检索串口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSearchCom_Click(object sender, EventArgs e)
{
string[] PortNames = SerialPort.GetPortNames();
if (PortNames.Length != 0)
{
for (int i = 0; i < PortNames.Length; i++)
{
cmbPortName.Items.Add(PortNames[i]);
}
cmbPortName.SelectedIndex = 0;
}
else
MessageBox.Show("No Ports!");
}
/// <summary>
/// 打开串口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOpenCom_Click(object sender, EventArgs e)
{
try
{
Com.PortName = cmbPortName.Text;
Com.BaudRate = int.Parse(cmbBaudRate.Text);
Com.DataBits = int.Parse(cmbDataBits.Text);
switch (cmbStopBits.Text)
{
case "None":
Com.StopBits = StopBits.None;
break;
case "One":
Com.StopBits = StopBits.One;
break;
case "Two":
Com.StopBits = StopBits.Two;
break;
case "OnePointFive":
Com.StopBits = StopBits.OnePointFive;
break;
}
switch (cmbParity.Text)
{
case "None":
Com.Parity = Parity.None;
break;
case "Even":
Com.Parity = Parity.Even;
break;
case "Odd":
Com.Parity = Parity.Odd;
break;
case "Space":
Com.Parity = Parity.None;
break;
case "Mark":
Com.Parity = Parity.None;
break;
}
Com.Open(); new Task(() =>
{
while (true)
{
RecieveData();
}
}).Start();
}
catch (Exception ex)
{
MessageBox.Show("打开串口失败!");
}
}
/// <summary>
/// 发送数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSend_Click(object sender, EventArgs e)
{
if (Com.IsOpen)
{
Com.Write(textBox2.Text);
}
textBox1.AppendText(Com.PortName + "发送:" + textBox2.Text + "\r\n");
} /// <summary>
/// 接收数据
/// </summary>
private void RecieveData()
{
// 查询串口中目前保存了多少数据
int n = Com.BytesToRead; // 读取数据
byte[] buf = new byte[n];
Com.Read(buf, 0, n);
Com.Encoding = Encoding.GetEncoding("GB2312"); // 打印数据
if (buf.Length > 0)
{
string str = Encoding.Default.GetString(buf);
if (this.textBox1.InvokeRequired)
{
this.Invoke(new Action(delegate{ textBox1.AppendText(Com.PortName + "接收:" + str + "\r\n"); }));
}
else
{
textBox1.AppendText(Com.PortName + "接收:" + str + "\r\n");
}
} } }
}
2. 线扫相机
2.1 Camera Link接口
工业相机的数字接口主要包括以下几类:Camera Link接口、IEEE 1394接口、USB接口、网络接口、CoaXPress接口。Camera Link接口是专门针对工业相机(camera)的特殊应用需求(图像的数据量大、带宽要求高)而研发出来的,传输速度快,这也正是Camera Link接口最主要的优点之一。根据相机实际带宽需求的不同,Camera Link采集卡从传输速度上也可以分为以下四类(带宽依次增加,且向下兼容):Base(2.0Gbit/S 即255MB/s)、Medium(4.8Gbit/S即610MB/S)、Full(5.4Gbit/S @ 85MHZ即680MB/s)、Deca(6.8Gbit/S即850MB/S),从外观上看不出它们的区别,因为提升速度主要是通过增加内部集成的芯片模块来实现的。主要的差别是: 只具有Base功能的采集卡一般只有一个Camera Link接口,而其他的至少包含两个。
使用Camera Link接口的工业相机还具有一个特点,那就是相机生产商一般不提供该相机的使用接口(例如相机自带的图像采集软件,以及相应的SDK等),这是因为:Camera Link接口的工业相机和其他接口相机不同,它的图像采集、处理等软件算法工作主要在Camera Link采集卡上来完成,相机厂商主要只负责硬件这一部分的工作。换句话说,对于Camera Link接口的工业相机来说,这个相机在物理上是被硬生生拆成了两部分,其中一部分以采集卡的形式被安装在主机电脑上了。这样的好处是:如果你对某款Camera Link采集卡的编程比较熟悉,那么世界上任何使用该接口的相机你都可以很快上手。
2.2 曝光参数
网口相机的曝光参数如之前的海康相机一般,利用pMyCamera.MV_CC_SetEnumValue_NET即可。线扫相机一般需要通过自己的软件设置曝光,以e2v相机为例,e2v相机通过comcam软件设置曝光,打开comcam软件,连接Com口,选择One external trigger with exteral exposure time工作模式,让曝光受外部控制。然后依据说明书上的指令,用串口程序连接Com口,发送指令,“t exp 600”可将曝光设置为60.
C#笔记 线扫相机利用串口通信设置曝光的更多相关文章
- DALSA网口线扫相机SDK开发详解例程(C#版)
首先吐槽一句,官方的demos写的真的不好,坑爹啊.对于小白来说,开发官方demos为我所用太难了.为什么呢?因为它Dalsa的DALSA.SaperaLT.SapClassBasic.dll中,不仅 ...
- VisionPro连接Dalsa线扫相机
1 环境配置 硬件:编码器(提供编码信号的PLC) 线扫相机 镜头 相机线缆 图像采集卡(Dalsa_Xcelera-CL_PX4 Dual) 软件:VisionPro 8.2 VisionPro软件 ...
- STM32嵌入式开发学习笔记(六):串口通信(上)
本文我们将了解STM32与外部设备通过串口通信的方式. 所谓串口通信,其实是一个类似于计算机网络的概念,它有物理层,比如规定用什么线通信,几伏特算高电平,几伏特算低电平.传输层,通信前要发RTS,CT ...
- STM32嵌入式开发学习笔记(七):串口通信(下)
下面我们进行几个串口通信的实际应用. 实验一:发信实验,让开发板通过串口向电脑发送信息: #include <stdio.h> #include <stm32f10x.h> # ...
- Dalsa线扫相机SDK开发-小试牛刀(1)
拿到了dalsa相机,可以用Sapera软件配置相机,进行图像采集.但是自己开发的话就得撸起袖子写代码了,查了两篇不错的博文,作为指导. Sapera帮助文档 - <好好先生>专栏 - 博 ...
- Dalsa线扫相机SDK下载和安装
1.首先去官方网站下载SDK Support Downloads - Teledyne DALSA http://www.teledynedalsa.com/imaging/support/downl ...
- Dalsa线扫相机配置-一台工控机同时连接多个GigE相机
如图,我强悍的工控机,有六个网口. 实际用的时候连了多台相机,为了偷懒我就把六个网口的地址分别设为192.168.0.1~192.168.0.6,以为相机的IP只要设在192.168.0这个网段然后随 ...
- [转]C#串口通信 SerialPort类
本文转自:https://blog.csdn.net/weixin_41415541/article/details/80921956 因为公司项目需要将USB扫码枪改为串口扫码枪,串口扫码的好处在于 ...
- winform SerialPort串口通信问题
一.串口通信简介串行接口(串口)是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为串 ...
- Arduino和C51之串口通信
技术:51单片机.Arduino.串口通信 概述 本文主要讲解串口通信技术的使用方法,并通过串口点灯实验介绍了51单片机和Arduino串口的使用,为初学者学习串口知识提供帮助 详细 代码下载:h ...
随机推荐
- redis 面试题整理
前言 前天面试了一家公司,平时看一本redis书的也使用redis,对里面的东西也基本了解,结果回答的时候居然回答了只是使用了(因为认为是redis是运维的东西,做的东西多,所以忘了,好吧这是借口), ...
- 高云GOWIN下载出现No devices found咋办
在使用GOWIN下载器下载会出现该类问题 No devices found错误. 原因如下: A . Windows10 系统会出现下载器通道顺序错误,所以要确保在 A 通道上. B.有一些 USB ...
- Node 中的 Process 理解,有哪些常用方法?
一.是什么 process 对象是一个全局变量,提供了有关当前 Node.js进程的信息并对其进行控制,作为一个全局变量 我们都知道,进程计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础, ...
- 如何将 ASP.NET Core MVC 项目的视图分离到另一个项目
如何将 ASP.NET Core MVC 项目的视图分离到另一个项目 在当下这个年代 SPA 已是主流,人们早已忘记了 MVC 以及 Razor 的故事.但是在某些场景下 SSR 还是有意想不到效果. ...
- vscode下的超级慢的解决方法
vscode下的超级慢的解决方法 从网上看到的方法,记录给自己看 vscode官网:https://code.visualstudio.com/Download 复制下载链接 链接如下: https: ...
- 性能提升40%!阿里云神龙大数据加速引擎获TPCx-BB世界排名第一
简介:神龙大数据加速引擎,针对大数据常用组件,如Spark.Hadoop.Alluxio等,结合阿里云神龙架构的特性,进行软硬一体化优化,形成独一无二的性能优势,最终,使复杂SQL查询场景性能相比社 ...
- 【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?
简介: 国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Quick BI再度入选,并继续成为该领域魔力象限唯一入选的中国企业. Quick BI凭借在增强分析能力上的 ...
- 基于 Flutter 的 Web 渲染引擎「北海」正式开源!
简介: 阿里巴巴历时 3 年自研开发的 Web 渲染引擎北海(英文名:Kraken)正式开源,致力打造易扩展,跨平台,高性能的渲染引擎,并已在优酷.大麦.天猫等业务场景中使用. 作者 | 染陌来源 | ...
- [Go] gorm 错误处理 与 链式/Finisher方法
使用 gorm 在调用 Finisher 方法之后,建议都进行错误检查. Finishers 是会立即执行注册回调的方法,然后生成并执行 SQL,比如这些方法: Create, First, Find ...
- 推荐一个使用 HardLink 硬链接减少重复文件占用磁盘空间的工具
在 NTFS 文件系统里面,咱可以使用 HardLink 硬链接的方式,将多个重复的文件链接到磁盘的同一份记录里面,从而减少在磁盘里面对重复文件存储多份记录,减少磁盘空间的占用.本文将和大家推荐我所做 ...