当前位置:文档之家› 条码扫描器接口编程(C#)

条码扫描器接口编程(C#)

条码扫描器接口编程(C#)
条码扫描器接口编程(C#)

条码扫描器接口编程(C#)

3年前写了一篇《USB口的红外条形码扫描器的另类使用》,不过相关代码是VB编写,在这几年之间,有许多网友提出需要C#版的,起初还以为由VB修改C#应该很容易,最近研究了一下,发现C#和VB调用API的机制还是有所不同的,在迁移的过程中还是会遇到不少问题,所以我专门抽时间做了一个基于C#的程序。

【目前的条形码扫描器有点类似外接键盘(其实从消息传送上它就相当于一个键盘),把输入焦点定位到可输入的控件上,一扫描相应的条形码信息就输入到文本框中去了,但是如果没有输入焦点,或另一个不相干的程序获得输入焦点,那就有点乱套了。我想实现的是,不管什么情况,只要扫描器一工作,我的程序就能自动激活,并能获得当前输入的条形码信息。实现思路:我用的是litele牌的USB口的红外条形码扫描器,仔细分析了一下,扫描成功后,以键盘按键消息的形式把条形码输入信息通知给系统。这样通过键盘钩子就可以方便的获得该信息了。但是,怎样区分信息是键盘还是条形码输入的哪?很简单,条形码扫描器在很短的时间内输入了至少3个字符以上信息,并且以“回车”作为结束字符,在这种思想指引下,很完美的实现了预定功能。】

窗体相关代码:

view plaincopy to clipboardprint? .........10........20........30........40........50........60........70........80........90........100.......110.......120.......130.......140. (150)

using System;

using System.Collections.Generic;

using https://www.doczj.com/doc/4819100673.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace ReadBadCode

{

public partial class frmTest : Form

{

BarCodeHook BarCode = new BarCodeHook();

public frmTest()

{

InitializeComponent();

BarCode.BarCodeEvent += new BarCodeHook.BarCodeDelegate(BarCode_BarCodeEvent);

}

private delegate void ShowInfoDelegate(BarCodeHook.BarCodes barCode);

private void ShowInfo(BarCodeHook.BarCodes barCode)

{

if (this.InvokeRequired)

{

this.BeginInvoke(new ShowInfoDelegate(ShowInfo), new object[] { barCode });

}

else

{

textBox1.Text = barCode.KeyName;

textBox2.Text = barCode.VirtKey.ToString();

textBox3.Text = barCode.ScanCode.ToString();

textBox4.Text = barCode.AscII.ToString();

textBox5.Text = barCode.Chr.ToString();

textBox6.Text = barCode.IsValid ? barCode.BarCode : "";

}

}

void BarCode_BarCodeEvent(BarCodeHook.BarCodes barCode)

{

ShowInfo(barCode);

}

private void frmTest_Load(object sender, EventArgs e)

{

BarCode.Start();

}

private void frmTest_FormClosed(object sender, FormClosedEventArgs e)

{

BarCode.Stop();

}

private void textBox6_TextChanged(object sender, EventArgs e)

{

if (textBox6.Text.Length > 0)

{

MessageBox.Show(textBox6.Text);

}

}

}

}

BarCodeHook 类:

view plaincopy to clipboardprint? .........10........20........30........40........50........60........70........80........90........100.......110.......120.......130.......140. (150)

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

using System.Reflection;

namespace ReadBadCode

{

public class BarCodeHook

{

public delegate void BarCodeDelegate(BarCodes barCode);

public event BarCodeDelegate BarCodeEvent;

public struct BarCodes

{

public int VirtKey; //虚拟码

public int ScanCode; //扫描码

public string KeyName; //键名

public uint AscII; //AscII

public char Chr; //字符

public string BarCode; //条码信息

public bool IsValid; //条码是否有效

public DateTime Time; //扫描时间

}

private struct EventMsg

{

public int message;

public int paramL;

public int paramH;

public int Time;

public int hwnd;

}

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention =

CallingConvention.StdCall)]

private static extern bool UnhookWindowsHookEx(int idHook);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

private static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);

[DllImport("user32", EntryPoint = "GetKeyNameText")]

private static extern int GetKeyNameText(int lParam, StringBuilder lpBuffer, int nSize);

[DllImport("user32", EntryPoint = "GetKeyboardState")]

private static extern int GetKeyboardState(byte[] pbKeyState);

[DllImport("user32", EntryPoint = "ToAscii")]

private static extern bool ToAscii(int VirtualKey, int ScanCode, byte[] lpKeyState, ref uint lpChar, int uFlags);

delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);

BarCodes barCode = new BarCodes();

int hKeyboardHook = 0;

string strBarCode = "";

private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)

{

if (nCode == 0)

{

EventMsg msg = (EventMsg)Marshal.PtrToStructure(lParam, typeof(EventMsg));

if (wParam == 0x100) //WM_KEYDOWN = 0x100

{

barCode.VirtKey = msg.message & 0xff; //虚拟码

barCode.ScanCode = msg.paramL & 0xff; //扫描码

StringBuilder strKeyName = new StringBuilder(255);

if (GetKeyNameText(barCode.ScanCode * 65536, strKeyName, 255) > 0)

{

barCode.KeyName = strKeyName.ToString().Trim(new char[] { ' ', '\0' });

}

else

{

barCode.KeyName = "";

}

byte[] kbArray = new byte[256];

uint uKey = 0;

GetKeyboardState(kbArray);

if (ToAscii(barCode.VirtKey, barCode.ScanCode, kbArray, ref uKey, 0))

{

barCode.AscII = uKey;

barCode.Chr = Convert.ToChar(uKey);

}

if (DateTime.Now.Subtract(barCode.Time).TotalMilliseconds > 50)

{

strBarCode = barCode.Chr.ToString();

}

else

{

if ((msg.message & 0xff) == 13 && strBarCode.Length > 3) //回车

{

barCode.BarCode = strBarCode;

barCode.IsValid = true;

}

strBarCode += barCode.Chr.ToString();

}

barCode.Time = DateTime.Now;

if (BarCodeEvent != null) BarCodeEvent(barCode); //触发事件

barCode.IsValid = false;

}

}

return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);

}

// 安装钩子

public bool Start()

{

if (hKeyboardHook == 0)

{

//WH_KEYBOARD_LL = 13

hKeyboardHook = SetWindowsHookEx(13, new HookProc(KeyboardHookProc), Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);

}

return (hKeyboardHook != 0);

}

// 卸载钩子

public bool Stop()

{

if (hKeyboardHook != 0)

{

return UnhookWindowsHookEx(hKeyboardHook);

}

return true;

}

}

}

【注意】要想测试实际的效果,必须执行编译后的Exe文件,在开发环境直接运行会没有效果的。

条码扫描器状况常见问题

1、Symbol LS5800扫描平台,用的是RS232C线,扫描时仅能在超级终端下显示,而不能在文本文件中显示,请问这是为什么?需要怎么调整? 答:因为你用的是串口扫描器,而超级终端可以模拟串口进行工作,可以读写串口,所以可以扫描数据。普通文本是以键盘为基,无读串口功能,你可以找一些串口仿真程序,运行之后,用文本也可以读出数据。 2、Symbol LS2208扫描器,接到I_BM4614POS机上(98年买早期产品),扫描器工作正常,但键盘右侧数字键失效,是何原因?应如何设置该扫描器?! 答:你找一本1902的手册扫描其键盘口设置码:IBMPC/A T试试. 3、通过条码扫描方式将数据输入到EXCEL表中指定单元格,是否可以实现? 答:扫描器扫入数据一般显示在光标所在处,你说的是自动扫进指定单元格那不行,你得把光标移到你指定得单元格才行。 4、扫描枪有两个插头,该如何连接?在电子表格里如何操作呢?~ 答:扫描器两个插头(一公一母),公头插在电脑PS/2即键盘口上,另一头接上键盘即可.在电子表格里一般加TAB键使用. 5、采集内有数据无法删除,进入不了所应用软件,反应速度特别慢。 答:请冷启动您的机器,一般情况下,机器会回复到出厂的状态,清空所有的程序和资料,所以请确认机器内无重要文件。请慎重使用此功能,所有后续加载的程序都不会存在。如何冷启动机器,一般情况下机器背面会有一个针孔,请用回形针插入。 6、用键盘口的红外线枪可以直接将条码值扫到VFP编的软件的文本框里吗? 答:可以的,键盘口顾名思义就是相当于键盘,只有键盘能够输入,那么键盘口扫描器就可以送入数据! 7、开发软件需要扫描枪的详细信息,要对它进行编程,但是市场上没有可以编成的扫描枪,还有扫描枪是否可以扫描所有的条形码呢,包括市场上自带条形码的! 答:扫描枪一般是不能编程的,采集器才可以编程,对于扫描枪是编程接收数据,扫描枪都可以识别市面上流通的条码,特殊的要设置,但每种扫描枪都有自己的局限,个别种类可能不支持 8、Symbol LS1200扫描器装在设备上,起初一段时间可以使用.但不到一个月,电脑不能识别端口上的扫描器,经过测试该扫描器已不能使用.扫描器有激光,但不能把数据传输到电脑上,这是什么原因呢? 答:你用的是键盘口还是串口或其他的端口?键盘口的话你可以扫描键盘口设置码,串口的话你须有串口读写软件,通信协议一致,这些你都可以在它手册里找到。 9、一款psc系列qs6000,在扫条码时出现了前缀,如F6123456789111,要怎么解决啊?答:可以将枪初始化。 10、Zebex扫描器ZB-2200通电后灯恒亮,无法正常工作。系统用的是WIN98,该扫描器系键盘接口方式。 答:有换线是过吗?如换线故障依旧那么问题在主板!

接口与程序设计作业(附答案)

习题1(教材P56) 1.8086/8088微处理器地址总线有多少位?寻址范围是多少? 答:20位 A019。寻址范围00000 2.8086/8088微处理器分哪两部分?各部分主要由什么组成? 答:执行单元和总线接口单元。 包括:、寄存器组、暂存器、标志寄存器、控制单元。 包括:指令队列缓冲器、段寄存器及指令指针、总线地址加法器、总线控制逻辑。 4.8086/8088微处理器中有几个通用寄存器?几个变址寄存器?有几个指针寄存器?几个段寄存器? 答:8个通用寄存器、、、、、、、。2个变址寄存器、。2个指针寄存器、。、、、段地址寄存器。 5.8086/8088微处理器中有哪些标志位?它们的含义和作用如何? 答:零标志位、进位标志、溢出标志位、辅助进位标志位、奇偶标志位、符号标志位、方向标志位、中断允许标志位、跟踪标志。 6.试求出下列运算后的各个状态标志,说明进位标志和溢出标志的区别? 12783469H 答:0001 0010 0111 1000 +0011 0100 0110 1001 0100 0110 1110 0001 0;0;0;0;1;1。 54E3H-27A0H 答:0101 0100 1110 0011 +1101 1000 0110 0000(-27A0的补码) 10010 1101 0100 0011 0;0;1;0;0;0。 H 答:0011 1000 1000 0001 +0011 0101 1001 0111 0110 1110 0001 1000 0;0;0;0;0;1。 01E301E3H 答:0000 0001 1110 0011 +1111 1110 0001 1101(-01E3H的补码) 10000 0000 0000 0000 1;0;1;0;1;1。 进位表示最高位产生进位。

(完整版)各种接口连线图解

玩转投影机接口连线图解 很多初级用户在看投影机文章或将投影机与其它设备进行连接时,面对众多的接口总是感到茫然。其实只要弄明白它们的用途和连/转接方法,在使用时您会觉得其也并非有登天之难。 投影机接口虽没有高档功放上那么多 但也不少 家用投影机上的常用接口 拉近点就看清楚了 一、常规视频输入端子 做为视频播放设备,投影机上输入端子(端子=接口)的数量远多于输出端子,视频端子的数量也远多于音频端子。 ●标准视频输入(RCA)

RCA是莲花插座的英文简称,RCA输入输出是最常见的音视频输入和输出接口,也被称AV接口(复合视频接口),通常都是成对的,把视频和音频信号“分开发送”,避免了因为音/视频混合干扰而导致的图像质量下降。但由于AV接口传输的仍是一种亮度/色度(Y/C)混合的视频信号,仍需显示设备对其进行亮/色分离和色度解码才能成像,这种先混合再分离的过程必然会造成色彩信号的损失,所以其目前主要被用在入门级音视频设备和应用上。 音频转RCA线 RCA转接延长头

插入示意图 白色的是音频接口和黄色的视频接口,使用时只需要将带莲花头的标准AV线缆与其它输出设备(如放像机、影碟机)上的相应接口连接起来即可。 不要小瞧了RCA,其也有做工不错的高档货 ●S端子

标准S端子 标准S端子连接线

音频复合视频S端子色差常规连接示意图 S端子(S-Video)是应用最普遍的视频接口之一,是一种视频信号专用输出接口。常见的S端子是一个5芯接口,其中两路传输视频亮度信号,两路传输色度信号,一路为公共屏蔽地线,由于省去了图像信号Y与色度信号C的综合、编码、合成以及电视机机内的输入切换、矩阵解码等步骤,可有效防止亮度、色度信号复合输出的相互串扰,提高图像的清晰度。 一般DVD或VCD、TV、PC都具备S端子输出功能,投影机可通过专用的S端子线与这些设备的相应端子连接进行视频输入。 显卡上配置的9针增强S端子,可转接色差

哪些条码扫描器可以扫描3mil和4mil条码

哪些条码扫描器可以扫描3mil和4mil条码? 文章来源:扫描网我们知道,条码类型不仅有一维,二维之分,也有低密和高密之分,制作的条码密度主要有1mil、2mil、3mil、4mil和5mil,数字越小表示密度越高,常见的是后面三个。而事实上,在实际生产制造业、商品流通业中,也极少会用到3mil和4mil的条码,因为它太细小了,对印刷工艺要求又高,需要超过600DPI的碳带热转印打印机才能勉强打印清楚,肉眼尚难以清晰的看到,更不要说用条码扫描器来扫描了!所以不是所有的条码扫描器都能扫描3mil和4mil的条码,为什么一般的条码扫描器扫不了3mil和4mil条码?这是因为条码扫描器的识读精度必须要比条码密度高,比如当我们扫描4mil的条码时我们就必须使用4mil或高于4mil扫描器精度的条码扫描器。 为什么不选择高密的条码扫描器?并不是扫描器的分辫率越高越好,而是应根据具体应用中使用的条码密度来选取具有相应分辨率的条码扫描器。在使用中,如果所选条码扫描器的分辨率过高,则条符上的污点、脱墨等也会造成条码扫描器的识读不成功。 条码扫描器品牌如此繁多,价格也从几百到上千,如何从中挑选一款性价比最好,又能扫描3mil和4mil条码的扫描器呢?扫描网工作人员将多款扫描器经过反复对比测试,发现有几款条码扫描器在扫描3mil和4mil条码时毫无压力,非常轻松就扫描出来了!下面[扫描网]小编整理如下:

一、可以扫描3milt条码的扫描器: 1、新大陆HR15有线扫描器 新大陆HR15是一组极具性价比的Zigbee有线一维码扫描器,支持标准RS232 / USB / PS2 接口。新大陆HR15性能卓越,每秒扫描速度可达300次,能轻松扫描3mil条码,经济耐用,非常适用于如商场、超市及仓储环境等应用。 2、民德MD2230激光扫描器 民德MD2230激光扫描器内置USB2.0的高速ARM CPU,读码速度和性能非常不错,特别是在遇到难读取的条码仍能轻松读取,特别适合快速读取最小条宽为0.076mm(3mil)的精细条码,最大读码景深可达1.5米!性价比高,非常适用于零售、医疗、金融、邮政以及中小型物流业和轻工业。

API应用程序编程接口

1.应用程序编程接口 API windows API Windows API是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。

站点在推出基于开放API 标准的产品和服务后,无需花费力气做大量的市场推广,只要提供的服务或应用出色易用,其他站点就会主动将开放API 提供的服务整合到自己的应用之中。同时,这种整合API 带来的服务应用,也会激发更多富有创意的应用产生。 为了对外提供统一的API 接口,需要对开发者开放资源调用API 的站点提供开放统一的API接口环境,来帮助使用者访问站点的功能和资源。 当然,开放API 的站点为第三方的开发者提供良好的社区支持也是很有意义的,这有助于吸引更多的技术人员参与到开放的开发平台中,并开发出更为有趣的第三方应用。 视频云技术提供商CC视频开放API接口,用户可以在自己的网站后台轻松完成视频的上传、视频播放控制操作,并可批量获取视频及平台信息。 API 声明 正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中。你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer。要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt或MDB。如果你已经把它转换成了数据库的话,这样可以加快速度。使用预定义的常量和类型也是同样的方法。API除了有应用“应用程序接口”的意思外,还特指API的说明文档,也称为帮助文档。 常见问题 假设你想在你的窗体模块中声明一个函数,粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的Public(公共的) 成员。..看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(私有的)。不要忘了,可是这将使该函数只在该窗体模块可用。. 在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数、常量或其他的什么东西共用了一个名称。由于绝大多数的函数都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行。 程序类型 远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。 标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。 文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。 信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。 当前应用于API 的标准包括ANSI 标准SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API 可以应用于所有计算机平台和操作系统。这些API 以不同的格式连接数据。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种API 只处理一种信息格式,所以该情形下的信息交付API 只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付API 类型是比较理想的选择。 API与GUI

各种显示接口的介绍

各种显示接口的介绍 中国投影网行业资讯2009-9-10 9:47:10编辑:晨阳[ 大中小] TV接口 TV接口又称RF射频输入,毫无疑问,这是在电视机上最早出现的接口。TV接口的成像原理是将视频信号(CVBS)和音频信号(Audio)相混合编码后输出,然后在显示设备内部进行一系列分离/ 解码的过程输出成像。由于需要较多步骤进行视频、音视频混合编码,所以会导致信号互相干扰,所以它的画质输出质量是所有接口中最差的。 AV接口 AV接口又称(RCA)可以算是TV的改进型接口,外观方面有了很大不同。它传输的是复合视频信号,也称做复合视频信号(CVBS)接口。分为了3条线,分别为:音频接口(红色与白色线,组成左右声道)和视频接口(黄色)。由于AV输出仍然是将亮度与色度混合的视频信号,所以依旧需要显示设备进行亮度和色彩分离,并且解码才能成像。这样的做法必然对画质会造成损失,所以AV接口的画质依然不能让人满意。 在连接方面非常的简单,只需将3种颜色的AV线与电视端的3种颜色的接口对应连接即可。总体来说,AV接口实现了音频和视频的分离传输,在成像方面可以避免音频与视频互相干扰而导致的画质下降。AV接口在电视与DVD连接中使用的比较广,是每台电视必备的接口之一。 S端子 S端子可以说是AV端子的改革,在信号传输方面不再将色度与亮度混合输出,而是分离进行信号传输,也就是Y、C分离传输,所以我们又称它为“二分量视频接口”。与AV 接口相比,S端子不再对色度与亮度混合传输,这样就避免了设备内信号干扰而产生的图像失真,能够有效的提高画质的清晰程度。 但S-Video仍要将色度与亮度两路信号混合为一路色度信号进行成像,所以说仍然存在着画质损失的情况。虽然S端子不是最好的,不过一般情况下AV信号为640线,S端子可达到1024线,但是这需要由片源来决定。一般来说这种接口在DVD、PS2、XBOX、NGC 等视频和游戏设备上广泛使用。 色差分量接口 对于色差来说,目前可能应用并不算很普遍,主要的原因是一些CRT电视机并没有提供色差分量的输入接口。简单的说,相比过去的AV和S端子,色差是将信号分为红、绿、

条形码扫描器的关键参数解释

条形码扫描器的关键参数解释 1、分辨率 对于条形码扫描系统而言,分辨率为正确检测读入的最窄条符的宽度,英文是MINIMALBARWIDTH(缩写为MBW)。选择设备时,并不是设备的分辫率越高越好,而是应根据具体应用中使用的条形码密度来选取具有相应分辨率的扫描器。使用中,如果所选设备的分辨率过高,则条符上的污点、脱墨等对系统的影响将更为严重。 2、扫描景深 扫描景深指的是在确保可靠阅读的前提下,扫描头允许离开条形码表面的最远距离与扫描器可以接近条形码表面的最近点距离之差,也就是条形码扫描器的有效工作范围。有的条形码扫描设备在技术指标中未给出扫描景深指标,而是给出扫描距离,即扫描头允许离开条形码表面的最短距离。 3、扫描宽度(SCANWIDTH) 扫描宽度指标指的是在给定扫描距离上扫描光束可以阅读的条形码信息物理长度值。 4、扫描速度(SCANSPEED) 扫描速度是指单位时间内扫描光束在扫描轨迹上的扫描频率。 5、一次识别率 一次识别率表示的是首次扫描读入的标签数与扫描标签总数的比值。举例来说,如果每读入一只条形码标签的信息需要扫描两次,则一次识别率为50%。从实际应用角度考虑,当然希望每次扫描都能通

过,但遗憾的是,由于受多种因素的影响,要求一次识别率达到100%是不可能的。 应该说明的是:一次识别率这一测试指标只适用于手持式光笔扫描识别方式。如果采用激光扫描方式,光束对条形码标签的扫描频率高达每秒钟数百次,通过扫描获取的信号是重复的。 6、误码率 误码率是反映一个机器可识别标签系统错误识别情况的极其重要的测试指标。误码率等于错误识别次数与识别总次数的比值。对于一个条形码系统来说,误码率是比一次识别率低更为严重的问题。

各种接口说明资料

视频基础知识 目前,国内外各个视频会议生产厂家都陆续推出了自己的各种高清或超清产品,都在不遗余力的宣传图像分辨率。但是,要达到高清/超清的视频会议,单单有720p或者1080p的图像分辨率是不够的。视频会议作为多媒体的一种应用,整个系统涉及到前端视频采集、图像的编码能力、高质量的网络传输、高清晰的视频显示设备。另外,如果我们在观看高清晰视频图像的时候,不能得到一个更清晰、连续的音频效果,那么这个过程实际上就没有任何意义,所以高质量音频的重要性完全不亚于视频。所以在高清或者超清的视频会议中有几个关键的知识点需要了解:高清的视频分辨率、高清视频显示设备的接口、高质量的音频传输接口、高质量的音频。技术的发展都是循序渐进的过程,在本文档中不但列出了高清视频的相关术语,还把非高清视频系统中的相关术语也一并列出,这样会有一个很直观的比较过程。 1视频接口 我们经常在家里的电视机、各种播放器上,视频会议产品和监控产品的编解码器的视频输入/输出接口上看到很多视频接口,这些视频接口哪些是模拟接口、哪些是数字接口,哪些接口可以传输高清图像等,下面就做一个详细的介绍。 目前最基本的视频接口是复合视频接口、S-vidio接口;另外常见的还有色差接口、VGA接口、DVI接口、HDMI 接口、SDI接口。 1.1复合视频接口 1.1.1接口图 1.1.2说明 复合视频接口也叫AV接口或者Video接口,是目前最普遍的一种视频接口,几乎所有的电视机、影碟机类产品都有这个接口。 它是音频、视频分离的视频接口,一般由三个独立的RCA插头(又叫梅花接口、RCA接口)组成的,其中的V接

口连接混合视频信号,为黄色插口;L接口连接左声道声音信号,为白色插口;R接口连接右声道声音信号,为 红色插口。 1.1.3评价 它是一种混合视频信号,没有经过RF射频信号调制、放大、检波、解调等过程,信号保真度相对较好。图像品质 影响受使用的线材影响大,分辨率一般可达350-450线,不过由于它是模拟接口,用于数字显示设备时,需要一 个模拟信号转数字信号的过程,会损失不少信噪比,所以一般数字显示设备不建议使用。 1.2S-Video接口 1.2.1接口图 1.2.2说明 S接口也是非常常见的接口,其全称是Separate Video,也称为SUPER VIDEO。S-Video连接规格是由日本人开发的一种规格,S指的是“SEPARATE(分离)”,它将亮度和色度分离输出,避免了混合视讯讯号输出时亮度和色度的相互干扰。S接口实际上是一种五芯接口,由两路视亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成。 1.2.3评价 同AV 接口相比,由于它不再进行Y/C混合传输,因此也就无需再进行亮色分离和解码工作,而且使用各自独立的传

激光条码扫描器工作原理

激光条码扫描器工作原理 激光条码扫描器由于其独有的大景深区域、高扫描速度、宽扫描范围等突出优点得到了广泛的使用。另外,激光全角度激光条码扫描器由于能够高速扫描识读任意方向通过的条码符号,被大量使用在各种自动化程度高、物流量大的领域。 激光条码扫描器由激光源、光学扫描、光学接收、光电转换、信号放大、整形、量化和译码等部分组成。下面将详细讨论这些组成部分。 (一)激光源 采用MOVPE(金属氧化物气相外延)技术制造的可见光半导体激光器具有低功耗、可直接调制、体积小、重量轻、固体化、可靠性高、效率高等优点。它一出现即迅速替代了原来使用的He-Ne激光器。 半导体激光器发出的光束为非轴对称的椭圆光束。出射光束垂直于P-W结面方向的发散角V⊥≈30°,平行于结面方向的发散角V‖≈10°。如采用传统的光束准直技术,光束会聚点两边的椭圆光斑的长、短轴方向将会发生交换。显然这将使扫描器只有小的扫描景深。Jay M.Eastman等提出采用图3所示的光束准直技术,克服了这种交换现象,大大地提高了扫描景深范围。这种椭圆光束只能应用在单线激光扫描器上。布置光路时,应让光斑的椭圆长轴方向与光线扫描方向垂直。对于单线激光条码扫描器,这种椭圆光斑由于对印刷噪声的不敏感性,将比下面所说的圆形光斑特性更好。 对于全角度条码激光条码扫描器,由于光束在扫描识读条码时,有时以较大倾斜角扫过条码。因此,光束光斑不宜做成椭圆形。通常都将它整形成圆形。目前常用的整形方案是在准直透镜前加一小圆孔光阑。此种光束特性可用小孔的菲涅耳衍射特性来很好地近似。采用这种方案,对于标准尺寸UPC条码,景深能做到大约250mm到300mm。这对于一般商业POS 系统已经足够了。但对如机场行李输送线等要求大景深的场合,就显得不够了。目前常用的方案是增大条码符号的尺寸或使组成扫描图案的不同扫描光线会聚于不同区域形成“多焦面”。但是更有吸引力的方案是采用特殊的光学准直元件,使通过它的光场具有特殊的分布从而具有极小的光束发散角,得到较大的景深。 (二)光学扫描系统 从激光源发出的激光束还需通过扫描系统形成扫描线或扫描图案。全角度条码激光条码扫描器一般采用旋转棱镜扫描和全息扫描两种方案。全息扫描系统具有结构紧凑、可靠性高和造价低廉等显著优点。自从IBM公司在3687型扫描器上首先应用以来得到了广泛的应用,且不断推陈出新。可以预料,它所占的市场份额将会越来越大。 旋转棱镜扫描技术历史较悠久,技术上较成熟。它利用旋转棱镜来扫描光束,用一组折叠平面反射镜来改变光路实现多方向的扫描光线。目前使用较多的MS-700等扫描器产品还使旋转棱镜不同面的楔角不同而形成一个扫描方向上有几条扫描线。由多向多线的扫描光线组成一个高密度的扫描图案。这种方法可能带来的另一个好处是可使激光辐射危害减轻。 全角度扫描这个概念最早是为了提高超级市场的流通速度而提出的,并设计了与之相应的UPC条码。对于UPC码两个扫描方向的“X”扫描图案就已能实现全角度扫描。随着扫描技术的发展,条码应用领域的拓宽以及提高自动化程度的迫切需要,现在正在把全角度扫描这个概念推广到别的码制,如39码、交插25码等。这些码制的条码高宽比较小,为了实现全角度扫描将需要多得多的扫描方向数。为此除旋转棱镜外还将需要增加另一个运动元件,例如旋转图4中的折叠平面镜组等。 手持单线扫描器由于扫描速度低、扫描角度较小等原因,能用来实现光束扫描的方案就很多。除采用旋转棱镜、摆镜外,还能通过运动光学系统中的很多部件来达到光束扫描。如通过运动半导体激光器、运动准直透镜等来实现光束扫描。而产生这些运动的动力元件除直流电

API应用程序编程接口详解

API应用程序编程接口 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API除了有应用“应用程序接口”的意思外,还特指API的说明文档,也称为帮助文档。另外,也是美国石油协会、空气污染指数、医药、空中位置指示器的英文简称。 Windows API是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以告 诉Windows发生了什么.

这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法. 这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数。同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个 特定事件(Button_Click). API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...). 更易理解地说:Windows 这个多作业系统除了协调应用程式的执行、分配内存、管理系统资源…之外,她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备…等目的,由於这些函数服务的对象是应用程式(Application),所以便称之为Application Programming Interface,简称API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。 凡是在Windows 工作环境底下执行的应用程式,都可以 调用Windows API。 API的历史与现状

各种通讯接口简介

各种通讯接口简介 ———各种通讯接口简介 作者:realinfo 发布时间:2011-5-23 10:48:53 阅读次数: 一、什么是RS-232 接口? (1) RS-232 的历史和作用 在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口。(“RS-232-C”中的“-C”只不过表示RS-232的版本,所以与“RS-232”简称是一样的)它是在1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25 个脚的DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM 的PC 机将RS-232 简化成了DB-9 连接器,从而成为事实标准。而工业控制的RS-232 口一般只使用RXD、TXD、GND 三条线。 (2)RS-232 接口的电气特性 在RS-232-C 中任何一条信号线的电压均为负逻辑关系。即:逻辑"1"为-3 到-15V;逻辑"0"为+3 到+15V 。RS-232-C 最常用的9 条引线的信号内容如下所示 DB-9 1 2 3 4 5 6 7 8 9 DB-25 8 3 2 20 7 6 4 5 22 定义DCD RXD TXD DTR GND DSR RTS CTS RI (3) RS-232 接口的物理结构 RS-232-C 接口连接器一般使用型号为DB-9 插头座,通常插头在DCE端,插座在DTE端. PC 机的RS-232 口为9 芯针插座。而波士RS-232/RS-485转换器的RS-232 为DB-9 孔插头。一些设备与PC 机连接的RS-232 接口,因为不使用对方的传送控制信号,只需三条接口线,即"发送数据TXD"、"接收数据RXD"和"信号地GND"。RS-232 传输线采用屏蔽双绞线。(4)RS-232 传输电缆长度 由RS-232C 标准规定在码元畸变小于4%的情况下,传输电缆长度应为50 英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺,美国DEC公司曾规定允许码元畸变为10%而得出下面实验结果。其中1 号电缆为屏蔽电缆,型号为DECP.NO.9107723 内有三对双绞线,每对由22# AWG 组成,其外覆以屏蔽网。2 号电缆为不带屏蔽的电缆。型号为DECP.NO.9105856-04是22#AWG 的四芯电缆。 DEC 公司的实验结果 波特率bps 1号电缆传输距离(米) 2号电缆传输距离(米)

总结条码扫描器常见故障及解决方法

总结条码扫描器常见故障及解决方法 1.条码扫描枪不能读取条码 有几种可能的原因 1)没有打开识读这种条码的功能。 2)条码不符合规范,例如缺少必须的空白区,条和空的对比度过低,条和空的宽窄比例不合适。 3)阳光直射,感光器件进入饱和区。 4)条码表面复盖有透明材料,反光度太高,虽然眼睛可以看到条码,但是采集器识读条件严格,不能识读。 5)硬件故障,和你的经销商联系进行维修。 2.在笔记本电脑上,键盘接口的扫描器工作不正常,或扫描器正常而键盘不能工作 笔记本电脑上,键盘接口的扫描器相当于外接键盘。 笔记本电脑的键盘接口如果连接键盘之后可能的变化是: 1)原有键盘失效。这时扫描器正常而键盘不能工作 2)笔记本电脑的键盘正常,外接键盘不工作。这时扫描器不工作 解决办法: 1)通过自动方式设置BIOS使外接键盘工作 2)连接键盘接口扫描器 3)扫描器接外接键盘 4)或者直接使用串口扫描器 3.读取一个条码后,扫描器死机 由于扫描器的保护功能,如果读取的条码数据传输错误,会自动进入保护状态,从而防止数据丢失。如果把没有传输成功的数据读取后,扫描器可以重新使用。 如果发生这种现象,请仔细检查连线、协议。确认无误后,关掉扫描器,在打开就可以重新正常使用 4.应该使用哪种扫描器 CCD一般用于资金比较紧张,适用要求不高的场合,例如一般超市。 枪式激光扫描器价格适中,扫描速度较快,准确性较高,用于要求较高的场合。平台激光扫描器价格稍高,使用方便,用于要求速度、准确度的场合,例如高档超市。 吊顶平台价格高,一般用于工业领域。 5.设备不能上电 1)电源连接不好 2)保险丝熔断 3)扫描器电源电路故障

接口技术及其程序设计复习题

一、填空10*2' 1. 写出下面英文缩写在接口中的中文意义 ISO 国际标准化组织IEEE 美国电子与电气工程师学会 OSI开放系统互联ANSI 美国国家标准学会HANDLE句柄 NULL空操作OVERLAPPED 重叠方式 Semaphore信号量 Event事件 Mutex互斥体RXD 串行数据接收信号线 TXD 数据串行发送信号线CTS清除发送RTS 请求发送 DTR数据终端就绪DSR 数据装置就绪CD 载波检测到 RI振铃指示BUSY 忙信号(打印机忙) SELECT联机控制ACK应答信号USB 通用串行总线PID 进程控制符(数据包标识字段)DLL动态链接库PLL锁相环CRC 循环冗余码校验 2. 在IEEE1284 总线中,1284Active 信号的作用是进入协商工作模式。 3. 在IEEE1284 总线中,ACK 信号的作用是外设应答信号。 4. 在IEEE1284 总线中,INIT 信号的作用是初始化。 5. 在PC 机上,并行口1 的设备文件名为 LPT1 。 6. 在PC 机上,串行口1 的设备文件名为 COM1 。 7. 在PC 机上,串行口2 的设备文件名为 COM2 。 8. 在Windows 的Win32 API 中设备文件读操作的函数是 ReadFile 。 9. 在Windows 的Win32 API 中设备文件写操作的函数是 WriteFile 。 10. 在Windows 的Win32 API 中打开设备文件操作的函数是CreateFile 。 11. 在RS232 中,使用100 波特率传输一个字节的内容至少需要 0.08s 时间 12. 在Win32 中,DLL 表示动态链接库。 13. 如果采用奇校验,则发送内容为30H 时,校验位为 1 。 14. 如果采用偶校验,则发送内容为30H 时,校验位为 0 。 15. USB 接口低速方式工作时,理想的带宽为 1.5Mbps 。 16. USB 接口全速方式工作时,理想的带宽为 12Mbps 。 17. 在多线程同步方法中,Event 中文称为事件。 18. 在多线程同步方法中,Semaphore 中文称为信号量。

各类高清接口图片说明及会议室布线说明

HDMI、DVI、VGA、RGB、分量、S端子)高清接口图片说明 各种视频输出端口(HDMI、DVI、VGA、RGB、分量、S端子)图片说明1.S端子 标准S端子

标准S端子连接线 音频复合视频S端子色差常规连接示意图 S端子(S-Video)是应用最普遍的视频接口之一,是一种视频信号专用输出接口。常见的S端子是一个5芯接口,其中两路传输视频亮度信号,两路传输色度信号,一路为公共屏蔽地线,由于省去了图像信号Y与色度信号C的综合、编码、合成以及电视机机内的输入切换、矩阵解码等步骤,可有效防止亮度、色度信号复合输出的相互串扰,提高图像的清晰度。

一般DVD或VCD、TV、PC都具备S端子输出功能,投影机可通过专用的S端子线与这些设备的相应端子连接进行视频输入。 显卡上配置的9针增强S端子,可转接色差 S端子转接线

欧洲插转色差、S端子和AV 与电脑S端子连接需使用专用线,如VIVO线2.VGA接口

DVI接口正在取代VGA,图为DVI转VGA的转接头 VGA是Video Graphics Adapter的缩写,信号类型为模拟类型,视频输出端的接口为15针母插座,视频输入连线端的接口为15针公插头。VGA端子含红(R)、黄(G)、篮(B)三基色信号和行(HS)、场(VS)扫描信号。VGA端子也叫D-Sub接口。VGA接口外形象“D”,其具备防呆性以防插反,上面共有15个针孔,分成三排,每排五个。VGA接口是显卡上输出信号的主流接口,其可与CRT显示器或具备VGA接口的电视机相连,VGA接口本身可以传输VGA、SVGA、XGA等现在所有格式任何分辨率的模拟RGB+HV信号,其输出的信号已可和任何高清接口相貔美。 VGA转DVI线,可用在没有VGA接口的设备上 目前VGA接口不仅被广泛应用在了电脑上,投影机、影碟机、TV等视频设备也有很多都标配此接口。很多投影机上还有BGA输出接口,用于视频的转接输出。 3.分量视频接口

条码扫描器主要参数介绍

条码扫描器主要参数介绍 近几年来,国内各大商场,连锁店等商业企业认识到了商业POS系统给商业企业管理带来的巨大效益,纷纷建设商业POS网络系统。对于网络系统的设计安装原理,各专业刊物均有详细介绍,这里主要谈谈作为商业POS系统前端数据采集部分的商业条码扫描器如何选择。 商业条码扫描器常用的主要有:CCD扫描器,激光手持式扫描器和全角度激光扫描器三种。 一、CCD扫描器是利用光电藕合(CCD)原理,对条码印刷图案进行成像,然后再译码。它的优势是:无转轴,马达,使用寿命长;价格便宜。 选择CCD扫描器时,最重要的是两个参数: 景深:由于CCD的成像原理类似于照相机,如果要加大景深,则相应的要加大透镜,从而使CCD体积过大,不便操作。优秀的CCD应无须紧贴条码即可识读,而且体积适中,操作舒适。 分辨率:如果要提高CCD分辨率,必须增加成像处光敏元件的单位元素。低价CCD 一般是5口像素(pixel),识读EAN,UPC等商业码已经足够,对于别的码制识读就会困难一些。中档CCD以1024pixel为多,有些甚至达到2048pixe1,能分辨最窄单位元素为0.1mm 的条码。 二、激光手持式扫描器是利用激光二极管作为光源的单线式扫描器,它主要有转镜式和颤镜式两种。 商业企业在选择激光扫描器时,最重要的是注意扫描速度和分辨率,而景深并不是关键因素。因为当景深加大时,分辨率会大大降低。优秀的手持激光扫描器应当是高扫描速度,固定景深范围内很高的分辨率。 三、全角度扫描器是通过光学系统使激光二极管发出的激光折射或多条扫描线的条码扫描器,主要目的是减轻收款人员录入条码数据时对准条码的劳动,选择时应着重注意其扫描线花斑分布: 1、在一个方向上有多条平行线; 2、在某一点上有多条扫描线通过; 3、在一定的空间范围内各点的解读机率趋于一致。 符合以上三点的全角度扫描器必是商家首选的应用。 信息来源:条码设备 原文地址:https://www.doczj.com/doc/4819100673.html,/detail/75-3054.html

TV常见接口介绍

数码平板电视接口 现在电视机背后密密麻麻的接口,第一眼看过去让人眼花缭乱,有点晕的感觉。电视机的接口从早期最常见的有线TV输入、AV接口、S端子、色差分量接口、VGA接口、DVI接口、USB接口等,到如今又出现了最尖端的HDMI数字高清接口。我们知道,视频接口的发展是实现高清的前提。高清电视需要配备相应的接口,才能完全发挥其高清的画质。电视机接口的不断发展,除了是一个更新换代的过程以外,这些接口还是为了满足不同人群特别需求而进行的设计。这里就电视机中各种常见的接口作一介绍,以便帮助不同人群根据自己的需求选用。 一、TV输入接口: TV接口又称RF射频输入,毫无疑问,这是在电视机上最早出现的接口。TV 接口的成像原理是将视频信号(CVBS)和音频信号(Audio)相混合编码后输出,然后在显示设备内部进行一系列分离/解码的过程输出成像。由于需要较多步骤进行视频、音视频混合编码,所以会导致信号互相干扰,所以它的画质输出质量是所有接口中最差的。 二、AV接口(又称RCA): AV接口可以算是TV输入的改进型接口,它与TV接口,在外观方面有了很大不同。它分了三条线,分别为:音频接口(红色与白色线,组成左右声道)和视频接口(黄色)。在连接方面非常简单,只需将3种颜色的AV线与电视端的3种颜色的接口对应连接即可。由于AV输出仍然是将亮度与色度混合的视频信号,所以依旧需要显示设备进行亮度和色彩分离,并且解码才能成像。这样的做法必然会对画质造成损失,所以AV接口的画质依然不能让人满意。总体来说,AV接口实现了音频和视频的分离传输,在成像方面可以避免音频与视频互相干扰而导致的画质下降。AV接口在电视与DVD连接中使用的比较广,是每台电视必备的接口之一。 三、S端子: S端子可以说是AV端子的改进,在信号传输方面不再将色度与亮度混合输出,而是分离进行信度。与AV接口相比,S端子不再对色度与亮度混合传输,这样就避免了设备内信号干扰而产生的图像失号传输,所以我们又称它为“二分量视频接口”。与AV 接口相比,S端子不在对色度与亮度混合传输,这样就避免了设备内信号干扰而产生的图像失真,能够有效的提高画质的清晰程真,能够有效的提高画质的清晰程度。但S-Video仍要将色度与亮度两路信号混合为一路色度信号进行成像,所以说仍然存在着画质损失的情况。虽然S端子不是最好的,不过一般情况下AV信号为640线,S端子可达到1024线,但是这需要由片源来决定。一般来说这种接口在DVD、PS2、XBOX、NGC等视频和游戏设备上广泛使用。 四、色差分量接口:目前分量接口应用,并不算很普遍。主要的原因是一些CRT电视机并没有提供色差分量的输入接口。简单的说,相比过去的AV和S端子,色差是将信号分为红、绿、蓝三种基色来输入的。通过将这三种色彩直接提取出来的画面将更加的清晰、色彩更加逼真。色差连接还需要独立的2条音频线,类似于AV中的红线和白线,分别负责左右声道。色差分为逐行和隔行显示,一般来说分量接口上面都会有几个字母来表示逐行和隔行的。用YCbCr表示的是隔行,用YPbPr表示则是逐行,如果电视只有YCbCr分量端子的话,则说明电视不能支持逐行分量,而用YPbPr分量端子的话,便说明支持逐行和隔行2种分量。一般来说,档次好一些的电视拥有2组甚至3组分量接口,稍差一些的电视可能只有一组隔行,比如上面图中的电视就是有2组逐行接口。这种接口在DVD、PS2、XBOX、NGC等视频和游戏设备上都可以使用,画质方面要比S 端子好些。 五、VGA接口: VGA接口又称(S-Dub),就是将模拟信号传输到显示器的接口。这是源于电脑的输入接口,由于CRT显示器无法直接接受数字信号的输入,所以显卡只能采取将模拟信号输入显

条形码扫描器的关键参数解释

条形码扫描器的关键参数解释 选择条形码扫描器前,要了解扫描设备的几个主要技术参数,客户也经常问到一些,这里稍全面地做些整理,根据应用的要求,对照这些参数选取适用的设备。 1、分辨率 对于条形码扫描系统而言,分辨率为正确检测读入的最窄条符的宽度,英文是MINIMALBARWIDTH(缩写为MBW)。选择设备时,并不是设备的分辫率越高越好,而是应根据具体应用中使用的条形码密度来选取具有相应分辨率的扫描器。使用中,如果所选设备的分辨率过高,则条符上的污点、脱墨等对系统的影响将更为严重。 2、扫描景深 扫描景深指的是在确保可靠阅读的前提下,扫描头允许离开条形码表面的最远距离与扫描器可以接近条形码表面的最近点距离之差,也就是条形码扫描器的有效工作范围。有的条形码扫描设备在技术指标中未给出扫描景深指标,而是给出扫描距离,即扫描头允许离开条形码表面的最短距离。 3、扫描宽度(SCANWIDTH) 扫描宽度指标指的是在给定扫描距离上扫描光束可以阅读的条形码信息物理长度值。 4、扫描速度(SCANSPEED) 扫描速度是指单位时间内扫描光束在扫描轨迹上的扫描频率。 5、一次识别率 一次识别率表示的是首次扫描读入的标签数与扫描标签总数的比值。举例来说,如果每读入一只条形码标签的信息需要扫描两次,则一次识别率为50%。从实际应用角度考虑,当然希望每次扫描都能通过,但遗憾的是,由于受多种因素的影响,要求一次识别率达到100%是不可能的。 应该说明的是:一次识别率这一测试指标只适用于手持式光笔扫描识别方式。如果采用激光扫描方式,光束对条形码标签的扫描频率高达每秒钟数百次,通过扫描获取的信号是重复的。 6、误码率 误码率是反映一个机器可识别标签系统错误识别情况的极其重要的测试指标。误码率等于错误识别次数与识别总次数的比值。对于一个条形码系统来说,误码率是比一次识别率低更为严重的问题。 信息来源:条码设备

条码扫描器接口编程(C#)

条码扫描器接口编程(C#) 3年前写了一篇《USB口的红外条形码扫描器的另类使用》,不过相关代码是VB编写,在这几年之间,有许多网友提出需要C#版的,起初还以为由VB修改C#应该很容易,最近研究了一下,发现C#和VB调用API的机制还是有所不同的,在迁移的过程中还是会遇到不少问题,所以我专门抽时间做了一个基于C#的程序。 【目前的条形码扫描器有点类似外接键盘(其实从消息传送上它就相当于一个键盘),把输入焦点定位到可输入的控件上,一扫描相应的条形码信息就输入到文本框中去了,但是如果没有输入焦点,或另一个不相干的程序获得输入焦点,那就有点乱套了。我想实现的是,不管什么情况,只要扫描器一工作,我的程序就能自动激活,并能获得当前输入的条形码信息。实现思路:我用的是litele牌的USB口的红外条形码扫描器,仔细分析了一下,扫描成功后,以键盘按键消息的形式把条形码输入信息通知给系统。这样通过键盘钩子就可以方便的获得该信息了。但是,怎样区分信息是键盘还是条形码输入的哪?很简单,条形码扫描器在很短的时间内输入了至少3个字符以上信息,并且以“回车”作为结束字符,在这种思想指引下,很完美的实现了预定功能。】 窗体相关代码: view plaincopy to clipboardprint? .........10........20........30........40........50........60........70........80........90........100.......110.......120.......130.......140. (150) using System; using System.Collections.Generic; using https://www.doczj.com/doc/4819100673.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ReadBadCode { public partial class frmTest : Form { BarCodeHook BarCode = new BarCodeHook(); public frmTest() { InitializeComponent(); BarCode.BarCodeEvent += new BarCodeHook.BarCodeDelegate(BarCode_BarCodeEvent); } private delegate void ShowInfoDelegate(BarCodeHook.BarCodes barCode); private void ShowInfo(BarCodeHook.BarCodes barCode) {

相关主题
文本预览
相关文档 最新文档