C#串口扫描枪的简单实现
原文:C#串口扫描枪的简单实现
串口扫描枪的简单实现
基于串口通讯的扫描枪的实现,主要借助SerialPort类,表示串行端口资源。实现很简单:
工具:usb转RS232转接头/个,扫描枪/套,
扫描枪串口接入转接头,转接头插电脑

接下来具体代码实现
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;
using System.Net;
using System.IO.Ports;
using System.Threading; namespace SerialScannerDemo
{
public partial class SerialScanner : Form
{
public SerialScanner()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
InstanceSerialPort();
} /// <summary>
/// 实例化串行端口资源
/// </summary>
private void InstanceSerialPort()
{
//实例化串行端口
SerialPort serialPort = new SerialPort();
//端口名 注:因为使用的是USB转RS232 所以去设备管理器中查看一下虚拟com口的名字
serialPort.PortName = "COM5";
//波特率
serialPort.BaudRate = ;
//奇偶校验
serialPort.Parity = Parity.None;
//停止位
serialPort.StopBits = StopBits.One;
//数据位
serialPort.DataBits = ;
//忽略null字节
serialPort.DiscardNull = true;
//接收事件
serialPort.DataReceived += serialPort_DataReceived;
//开启串口
serialPort.Open();
} /// <summary>
/// 接收数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
SerialPort serialPort = (SerialPort)sender;
//开启接收数据线程
Thread threadReceiveSub = new Thread(new ParameterizedThreadStart(ReceiveData));
threadReceiveSub.Start(serialPort);
}
catch (Exception ex)
{
SetMessage(ex.Message);
}
} private void ReceiveData(object serialPortobj)
{
try
{
SerialPort serialPort = (SerialPort)serialPortobj; //防止数据接收不完整 线程sleep(100)
System.Threading.Thread.Sleep(); string str = serialPort.ReadExisting(); if (str == string.Empty)
{
return;
}
else
{
SetMessage(str);
}
}
catch (Exception ex)
{
SetMessage(ex.Message);
}
}
/// <summary>
/// 添加记录
/// </summary>
/// <param name="msg"></param>
private void SetMessage(string msg)
{
richTextBox1.Invoke(new Action(() => { richTextBox1.AppendText(msg + "\r\n"); }));
}
}
}
注:因为使用的是USB转RS232 所以去设备管理器中查看一下虚拟com口的名字
接下来测试
找一张带有条码的包装袋或者印有条码的纸扫描

测试完成
顺便说一下,基于以太网的扫描枪的实现,其实将扫描枪当做是一个客户端,扫描完成一次相当于发送了一次基于TCP或者UDP的请求,使用的socket服务器略加改变就能实现
c#Socket服务器与客户端的开发(1)
源码:
链接:https://pan.baidu.com/s/1mdcj_I8W0RTi-PIs1YBdhA
提取码:xs8d
C#串口扫描枪的简单实现的更多相关文章
- Ajax跨域问题及解决方案 asp.net core 系列之允许跨越访问(Enable Cross-Origin Requests:CORS) c#中的Cache缓存技术 C#中的Cookie C#串口扫描枪的简单实现 c#Socket服务器与客户端的开发(2)
Ajax跨域问题及解决方案 目录 复现Ajax跨域问题 Ajax跨域介绍 Ajax跨域解决方案 一. 在服务端添加响应头Access-Control-Allow-Origin 二. 使用JSONP ...
- 1900型USB接口扫描枪设置虚拟串口模式提升扫描速度
在使用扫描枪的过程中,发现扫描二维码速度比较慢,不到100个字符,花了大概2-3秒的时间才完成显示,这个速度不能忍受啊.通过度娘,说是可以将USB键盘模式接收字符转换成虚拟串口接收,这样可以大大提高速 ...
- C#利用控件mscomm32.ocx读取串口datalogic扫描枪数据
1).开发环境VS12,语言C# 2).扫描枪品牌:datalogic 4470 3).通讯协议:串口 1.首先,第一步创建一个新工程,windows窗体应用程序,命名为TestScanner,如下: ...
- 扫描枪连接zebra打印机打印条码标签无需电脑
在一些流水线生产的现场,需要及时打印条码标签,由于现场环境和空间限制,无法摆放电脑或者通过连接电脑来打印条码标签的速度太慢, 瑞科条码特提供了一套扫描枪直接连接条码打印机,扫描枪扫描条码之后直接打印输 ...
- SilverLight 条码 扫描枪 MVVM(转载)
目前做SL项目时,遇到条码的问题. 客户需要通过条码来加快工作效率以及减少错误.有条码,自然便引入扫描枪这个东西.不解释. 关键点是:扫描枪每次扫描完毕会触发回车 这是解决问题的关键! 现有两种情景: ...
- JavaScript 扫描枪使用(一)
JavaScript 扫描枪应用(一)com.js为主要的代码实现,test.html文件为测试的页面,其中包括了com.js文件中方法的调用.以下为测试成功代码:com.js //com.js /* ...
- Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬
关注点: 1.扫描枪在扫描到条码后会在有焦点的地方显示扫描到的条码并且可设置扫码后添加回车换行让我很尴尬 2.怎样拦截扫码输入,扫描到条码就自动会嘀一声.不要这么智能行不行.瞎BB 需求详解 公司生产 ...
- PDA 收银系统PDA手持打印扫描枪 销售开单 收银 扫描打印一体机
在零售方面也有很好的应用.如在一些高端品牌零售店,营业员可以随身导购,一站式完成了商品销售和收银,很是受消费者追捧,符合了企业对客户体验以及行业领先的追求. PDA收银系统是一款多功能可以取代专业收银 ...
- C# Winform中无焦点状态下获取键盘输入或者USB扫描枪数据
类文件: C#类文件 using System; using System.Collections.Generic; using System.Text; using System.Runtime.I ...
随机推荐
- iShow UI for React 最佳实践
React 与 AJAX React只负责处理View这一层,它本身不涉及网络请求/AJAX,所以这里我们需求考虑两个问题: 第一,用什么技术从服务端获取数据: 第二,获取到的数据应该放在react组 ...
- JSTL,JQuery,Ajax,Json
JSTL 的定义 1 JSP 标准标签库 (JavaServerPage Standard Tag Library) 2 JSTL 通常会与EL 表达式合作实现JSP页面的编码 JSTL 的 ...
- 如何配置阿里Maven镜像
1.下载maven的zip解压,官方下载地址为:http://maven.apache.org/download.cgi 选择需要下载maven的版本就好了 2.到下载的maven路径下,conf/s ...
- lazyload的使用心得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 $("img.lazy").lazyload({ placeholder : "img/grey.g ...
- 关于echarts和jqeury的结合使用问题
今天在工作上遇到了一个小问题,就是自己在用echarts渲染了一个柱状图,然后点击其他位置,将渲染echart的div进行了清空,这里我所有的echart图形都是在同一个div中渲染的,然后当再次要求 ...
- OpenFirewall
1.写一份json文件:将要添加防火墙例外的应用程序和端口写入到json文件中 2.打开防火墙,读取json文件添加例外 /// <summary> /// Firewall.xaml 的 ...
- DataGridView控件使用大全
转自:http://www.cnblogs.com/xiaofengfeng/archive/2011/04/16/2018504.html DataGridView控件 DataGridView是用 ...
- html5标准
1.<!DOCTYPE html> html5标准网页声明,原先的是一串很长的字符串,现在是这个简洁形式,支持html5标准的主流浏览器都认识这个声明.表示网页采用html5 浅谈:htm ...
- Dll注入:Ring3 层 APC注入
APC,即Asynchronous procedure call,异步程序调用APC注入的原理是:在一个进程中,当一个执行到SleepEx()或者WaitForSingleObjectEx()时,系统 ...
- IP地址与数字地址相互转换
/// <summary> /// IP地址转换成数字 /// </summary> /// <param name="addr">IP地址&l ...