巴斯勒相机SDK全代码

article/2025/11/7 11:25:19

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

image.png

```js using Basler.Pylon; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;

namespace Basler { public partial class Form1 : Form { baslerCamcs camera = new baslerCamcs(); public Form1() { InitializeComponent(); camera.CameraImageEvent += CameraCameraImageEvent; } ///

/// 图像显示 /// /// private void CameraCameraImageEvent(Bitmap bmp) { pictureBox1.Invoke(new MethodInvoker(delegate { Bitmap old = pictureBox1.Image as Bitmap; pictureBox1.Image = bmp; if (old != null) old.Dispose(); }));

}void Inanble(){CamerOnce.Enabled = true ;CameraKeep.Enabled = true;CmaeraStop.Enabled = true;}/// <summary>/// 相机按钮状态/// </summary>void Unanble(){CamerOnce.Enabled = false;CameraKeep.Enabled = false;CmaeraStop.Enabled = false;}/// <summary>/// 初始化界面/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Form1_Load(object sender, EventArgs e){if (camera.CameraNumber > 0){camera.CameraInit();Inanble();}else{MessageBox.Show("未连接到相机");Unanble();}}/// <summary>/// 点击拍照/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void CamerOnce_Click(object sender, EventArgs e){camera.OneShot();}/// <summary>/// 实时拍照/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void CameraKeep_Click(object sender, EventArgs e){camera.KeepShot();}/// <summary>/// 停止实时/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void CmaeraStop_Click(object sender, EventArgs e){camera.Stop();}/// <summary>/// 关闭界面/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Form1_FormClosing(object sender, FormClosingEventArgs e){camera.DestroyCamera();}private void CamerClick_Click(object sender, EventArgs e){camera.CameraNumber= CameraFinder.Enumerate().Count;if (camera.CameraNumber > 0){camera.CameraInit();Inanble();MessageBox.Show("相机链接成功");}else{MessageBox.Show("未连接到相机");Unanble();}}private void CameraDK_Click(object sender, EventArgs e){camera.DestroyCamera();}
}

}

```

```

using Basler.Pylon; using System; using System.Drawing; using System.Drawing.Imaging; namespace Basler { public class baslerCamcs { //相机连接的个数 public int CameraNumber = CameraFinder.Enumerate().Count;

//委托+事件 = 回调函数,用于传递相机抓取的图像public delegate void CameraImage(Bitmap bmp);public event CameraImage CameraImageEvent;//放出一个CameraCamera camera;//basler里用于将相机采集的图像转换成位图PixelDataConverter pxConvert = new PixelDataConverter();//控制相机采集图像的过程bool GrabOver = false;//相机初始化public void CameraInit(){camera = new Camera();//自由运行模式camera.CameraOpened += Configuration.AcquireContinuous;//断开连接事件camera.ConnectionLost += Camera_ConnectionLost;//抓取开始事件camera.StreamGrabber.GrabStarted += StreamGrabber_GrabStarted;//抓取图片事件camera.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed;//结束抓取事件camera.StreamGrabber.GrabStopped += StreamGrabber_GrabStopped;//打开相机camera.Open();}private void StreamGrabber_GrabStarted(object sender, EventArgs e){GrabOver = true;}private void StreamGrabber_ImageGrabbed(object sender, ImageGrabbedEventArgs e){IGrabResult grabResult = e.GrabResult;if (grabResult.IsValid){if (GrabOver)CameraImageEvent(GrabResult2Bmp(grabResult));}}private void StreamGrabber_GrabStopped(object sender, GrabStopEventArgs e){GrabOver = false;}private void Camera_ConnectionLost(object sender, EventArgs e){camera.StreamGrabber.Stop();DestroyCamera();}public void OneShot(){if (camera != null){camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.SingleFrame);camera.StreamGrabber.Start(1, GrabStrategy.OneByOne, GrabLoop.ProvidedByStreamGrabber);}}/// <summary>/// 相机实时功能/// </summary>public void KeepShot(){if (camera != null){camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.Continuous);camera.StreamGrabber.Start(GrabStrategy.OneByOne, GrabLoop.ProvidedByStreamGrabber);}}public void Stop(){if (camera != null){camera.StreamGrabber.Stop();}}//将相机抓取到的图像转换成Bitmap位图Bitmap GrabResult2Bmp(IGrabResult grabResult){Bitmap b = new Bitmap(grabResult.Width, grabResult.Height, PixelFormat.Format32bppRgb);BitmapData bmpData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, b.PixelFormat);pxConvert.OutputPixelFormat = PixelType.BGRA8packed;IntPtr bmpIntpr = bmpData.Scan0;pxConvert.Convert(bmpIntpr, bmpData.Stride * b.Height, grabResult);b.UnlockBits(bmpData);return b;}//释放相机public void DestroyCamera(){if (camera != null){camera.Close();camera.Dispose();camera = null;}}
}

}

```


http://chatgpt.dhexx.cn/article/YPwMAh5Y.shtml

相关文章

机器视觉 工业相机

一、工业相机的结构 工业相机一般由镜头接口、滤光片、图像传感器、驱动电路、数字图像处理模块、转换电路、相机的供电/控制信号接口、图像数据传输组成接口。 二、工业相机的分类 1、按照相机芯片分类 按照芯片工艺分类CCDCMOS曝光方式一般为全局曝光卷帘/全局曝光灵敏…

linux-巴斯勒相机 GigE通信配置步骤

环境&#xff1a;ubuntu18.04 交换机&#xff1a;8端口千兆-带PoE供电功能的交换机 问题&#xff1a;1、始终显示没有设备(no device found)&#xff0c;可能是因为使用了扩展坞&#xff0c;也可能本身就存在这个问题&#xff1b; 2、显示端口冲突。 问题1解决方案&#xff…

Qt调用工业相机之巴斯勒相机

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 开发环境 操作系统&#xff1a;Windows 10 1903 18362.778 相机型号&#xff1a;BASLER acA 1300-60gm 相机软件&#xff1a;pylon_Run…

W25QXX使用教程

W25QXX是华邦公司生产的一块FLASH储存芯片 那W25Q256为例&#xff1a;驱动方式&#xff1a;单路双路四路SPI、QSPI&#xff1b; 擦写周期&#xff1a;10W次 支持电压&#xff1a;2.7~3.6V 频率&#xff1a;单路最大104Mhz、双路208Mhz、四路416Mhz 容量&#xff1a;容量为32M字…

flash spi w25q128 w25q64 w25q32 w25q16 verilog fpga程序代码

flash spi w25q128 w25q64 w25q32 w25q16 verilog fpga程序代码 fpga w25q128/64/32/16 verilog代码 资料包清单&#xff1a; 1.w25qxx_code_uart_top&#xff1a;altera工程代码&#xff0c;可移植ise&#xff0c;后续会出&#xff0c;需要的话提前加好友 2.功能说明书 注1&a…

STM32读写W25Q

文章目录 硬件外观引脚说明代码摘要代码获取 硬件外观 引脚说明 关于如何接线&#xff1f; 1&#xff0c;CS 2&#xff0c;MISO 3&#xff0c;3.3V 4&#xff0c;GND 5&#xff0c;MOSI 6&#xff0c;SCK 7&#xff0c;3.3V 8&#xff0c;3.3V 关于如何查询芯片引脚&#xff…

SPI Flash芯片W25Q32英文版数据手册解读(三)---------程序编写,电路应用

一、序言 序言对这篇文章进行一个总体的说明&#xff1a; 1、这部分是根据手册写程序&#xff0c;因此采用手册截图程序截图的形式&#xff0c;对图片不进行标号&#xff0c;而且对重点部分进行颜色标注。 2、考虑到很多读者&#xff08;包括我&#xff09;&#xff0c;使用…

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口+OLED0.96显示

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口OLED0.96显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序对应程序: 四、部分代码说明1、接线引脚定义1.2、STM32F103C8T6W25Q32 模块 五、基础知识学习与相关资料下载六、视频效果展示与程序资料获取…

W25Q16编址详解

W25Q16是一款基于SPI接口Flash存储器。 但往往我们对一串长长的16进制地址无从下手&#xff0c;以至于数据存储位置不当。 先看一下官方的数据手册 看着比较乱&#xff0c;我们自己画一个思维导图帮助理解 可以看到W25Q16最大寻址范围为0x000000H~0x1FFFFFH &#xff0c;根据…

rt-thread通过spi连接W25Q32后无法读取ID

注意&#xff0c;cs引脚必须由rtt控制&#xff0c;但是我这个cs引脚用的是PA15&#xff0c;它默认是jlink的引脚&#xff0c;所以首先要将jlink禁用&#xff0c;如下&#xff1a; rcu_periph_clock_enable(RCU_AF);rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable…

stm32 操作W25Q256 W25Q16 spi flash

硬件连接 今天我使用W25Q16做了一个测试&#xff0c;发现了W25Q16内部是一个环形缓冲区&#xff0c;在0x200000地址处写入数据&#xff0c;我可以在0x000000处读取到0x200000地址的数据&#xff0c;从这里就可以正面W25Q16是一个环形缓冲区的norfalsh 本函数库来自正点原子官…

W25Q32的使用

一、W25Q32简介 W25Q32是华邦公司推出的大容量“SPI FLASH” 产品。 1、容量 32M-Bit/4M-byte(4,194,304)2、存储结构 页:256-bytes扇区:4K-bytes块:64K_bytes是故: 页:16384个扇区:1024个块:64个3、速度 时钟速度最高:80MHz4、特性 擦除、写次数:高达100,000次数据保…

基于STM32实现W25Q16读写操作(spi)

文章目录 前言一、W25Q161.介绍2.SPI2.1. 简介2.2. 特性2.3. 功能说明2.4. 工作模式2.5. 引脚说明 二、代码开发1.SPI初始化2.读取厂商ID2.1.读写字节2.2.读取ID 3.其他的一些操作4.完整代码 三、效果演示 前言 在之前我们学习了flash闪存&#xff0c;这个更多的是内部数据存储…

GD32F303访问W25Q32异常问题解决

最近在使用国产化GD32F303替换STM32F103芯片&#xff0c;驱动代码使用的STM32的库函数&#xff0c;调试过程中发现MCU通过SPI访问W25Q32芯片时&#xff0c;会出现写入异常的情况&#xff0c;不是全部错误&#xff0c;是中间某段数据错误。 左侧&#xff1a;待写入文件内容 右侧…

stm32读写w25qxx

一&#xff0c;w25qxx简介。 二&#xff0c;stm32CubeIDE配置。 三&#xff0c;代码 1,w25qxx.c #include "W25Qxx.h"/*********************************************************************************** 函数功能: 模块初始化*/ uint8_t BSP_W25Qx_Init(void) …

STM32(八)W25Q(16/32/64/128)芯片学习总结

系列文章目录 文章目录 系列文章目录前言一、硬件和数据手册部分翻译1.W25Q64硬件设计2.数据手册解读 二、指令 前言 按项目需求&#xff0c;近期调试了W25Q32芯片&#xff0c;W25Q系列芯片是华邦公司推出的大容量SPI FLASH产品&#xff0c;W25Q32是3V&#xff0c;32M-bit 串行…

STC89C52驱动W25Q32测试笔记

STC89C52是经典的C51单片机&#xff0c;该芯片不自带硬件SPI接口&#xff0c;正好有手上一块W25Q32的存储模块&#xff08;某宝上买的2.2元&#xff09;&#xff0c;试着使用89C52模拟SPI接口驱动W25Q32&#xff0c;在驱动的过程中遇到了几个问题&#xff0c;首先的问题是电平不…

SPI Flash芯片W25Q32英文版数据手册解读(二)---------存储器知识,寄存器

接着上一篇文章&#xff0c;由于W25Q32芯片是一个存储器芯片&#xff0c;先对这个芯片有关存储器的一些概念进行解读。 一、存储器相关知识 1、存储器的三个单位&#xff1a; 存储器三个等级&#xff1a;页&#xff08;Page&#xff09;&#xff0c;扇区&#xff08;sector&a…

SPI Flash芯片W25Q32英文版数据手册解读(一)---------引脚功能,工作模式

W25Q32芯片是一个可以通过SPI&#xff08;串行外围设备接口&#xff09;操作的flash存储器&#xff0c;这篇文章备忘和总结一下英文版数据手册的一些解读。有关时序及具体用STC单片机编写程序的内容等下一篇文章。 一、芯片引脚功能 我买的是8引脚、SOIC封装的芯片&#xff0…

w25q32 内存分布

说明 ESP826612F/E里面使用w25q32作为了flash存储. 提前说下哈,bit代表位 也就是 0 1 0 1 , Bit代表字节 ,一字节就是8位 w25q32的容量是32Mbit 也就是 32/8 4MB字节 4*1024 4096KB字节 然后 w25q32 这个芯片规定每 64KB字节作为一个块 所以呢w25q32总共分成了 4096…