行业知识
C# ID2013系列使用海康官方SDK读码
2026-11-07 22:35:43
来源:互联网转载
文章目录
- 一、开发前准备
- 二、开始开发
- 1.引入库
- 2.遍历设备
- 3.连接设备
- 4.开始采集
- 5.关闭设备
- 6.停止收集设备
- 总结
一、开发前准备
开发前需要去海康官网下载相机读码器客户端
网址:下载连接
安装后插上设备网线口,然后打开软件进行设置。[
选择连接的读码器,双击连接上相机。开始进行算法设置。设置完成后记得保存。
如果需要更改相机IP地址,在工具–> IP配置工具进行设置。
二、开始开发
1.引入库
MvCodeReaderSDK.Net.dll
地址在软件安装目录下面:以我的安装目录为例:
D:\tools\scan\IDMVS\Development\Modules\MvCodeReaderSDK\Demo\C#\BasicDemo\bin\AnyCpu
2.遍历设备
代码如下:
//在遍历设备前先加入如下代码MvCodeReader.MV_CODEREADER_DEVICE_INFO_LIST m_stDeviceList = new MvCodeReader.MV_CODEREADER_DEVICE_INFO_LIST(); private MvCodeReader m_cMyDevice = new MvCodeReader(); bool m_bGrabbing = false;private void getAllDev_Click(object sender, EventArgs e){ System.GC.Collect(); m_stDeviceList.nDeviceNum = 0; int nRet = MvCodeReader.MV_CODEREADER_EnumDevices_NET(ref m_stDeviceList, MvCodeReader.MV_CODEREADER_GIGE_DEVICE); if (0 != nRet) { MessageBox.Show($"Enumerate devices fail!{nRet}"); return; } if (0 == m_stDeviceList.nDeviceNum) { MessageBox.Show($"None Device!{0}"); return; } for (int i = 0; i3.连接设备
代码如下:
private void conDev_Click(object sender, EventArgs e){ if (m_stDeviceList.nDeviceNum == 0 ) { MessageBox.Show($"No stDevInfo, please select!{0}"); return; } //我这边只连接一个设备,有需要的自己修改列表值即可 MvCodeReader.MV_CODEREADER_DEVICE_INFO stDevInfo =(MvCodeReader.MV_CODEREADER_DEVICE_INFO)Marshal.PtrToStructure(m_stDeviceList.pDeviceInfo[0],typeof(MvCodeReader.MV_CODEREADER_DEVICE_INFO)); if (null == m_cMyDevice) { m_cMyDevice = new MvCodeReader(); if (null == m_cMyDevice) { return; } } int nRet = m_cMyDevice.MV_CODEREADER_CreateHandle_NET(ref stDevInfo); if (MvCodeReader.MV_CODEREADER_OK != nRet) { MessageBox.Show($"MV_CODEREADER_CreateHandle_NET fail!!{nRet}"); return; } nRet = m_cMyDevice.MV_CODEREADER_OpenDevice_NET(); if (MvCodeReader.MV_CODEREADER_OK != nRet) { m_cMyDevice.MV_CODEREADER_DestroyHandle_NET(); MessageBox.Show($"Device open fail!{nRet}"); return; } m_cMyDevice.MV_CODEREADER_SetEnumValue_NET("TriggerMode", (uint)MvCodeReader.MV_CODEREADER_TRIGGER_MODE.MV_CODEREADER_TRIGGER_MODE_OFF);}4.开始采集
代码如下:
private void bgnCollect_Click(object sender, EventArgs e){ m_bGrabbing = true; int nRet = m_cMyDevice.MV_CODEREADER_StartGrabbing_NET(); if (MvCodeReader.MV_CODEREADER_OK != nRet) { m_bGrabbing = false; MessageBox.Show($"Start Grabbing Fail!{nRet}"); return; }}//这个线程在窗体实例化的时候就开启,这样在开启线程按钮按下直接开始采集public void ReceiveThreadProcess(){ int nRet = MvCodeReader.MV_CODEREADER_OK; IntPtr pData = IntPtr.Zero; MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2 stFrameInfoEx2 = new MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2(); IntPtr pstFrameInfoEx2 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2))); Marshal.StructureToPtr(stFrameInfoEx2, pstFrameInfoEx2, false); while (true) { if(m_bGrabbing) { z++; nRet = m_cMyDevice.MV_CODEREADER_GetOneFrameTimeoutEx2_NET(ref pData, pstFrameInfoEx2, 1000); if (nRet == MvCodeReader.MV_CODEREADER_OK) { stFrameInfoEx2 = (MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2)Marshal.PtrToStructure(pstFrameInfoEx2, typeof(MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2)); } if (nRet == MvCodeReader.MV_CODEREADER_OK) { if (0 >= stFrameInfoEx2.nFrameLen) { continue; } MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2 stBcrResultEx2 = (MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2)Marshal.PtrToStructure(stFrameInfoEx2.UnparsedBcrList.pstCodeListEx2, typeof(MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2)); for (int i = 0; i5.关闭设备
代码如下:
private void button10_Click(object sender, EventArgs e){ if (m_bGrabbing == true) { m_bGrabbing = false; m_cMyDevice.MV_CODEREADER_StopGrabbing_NET(); } m_cMyDevice.MV_CODEREADER_CloseDevice_NET(); m_cMyDevice.MV_CODEREADER_DestroyHandle_NET();}6.停止收集设备
代码如下:
private void button9_Click(object sender, EventArgs e){ m_bGrabbing = false; int nRet = m_cMyDevice.MV_CODEREADER_StopGrabbing_NET(); if (nRet != MvCodeReader.MV_CODEREADER_OK) { MessageBox.Show($"Stop Grabbing Fail!{nRet}"); }}总结
总体效果图如下,可以根据自己需要在进行开发。
操作步骤如下:先预览设备–>连接设备–>开始采集–>停止采集–>关闭设备
demo地址:demo下载地址
上一篇:英语mb音节怎么读?
下一篇:服务器cpu怎么加?