C# serialPort的DataReceived事件无法触发 ,用的霍尼韦尔的扫码枪并且装了相应的USB转串口驱动。...
昨天想试试霍尼韦尔的扫码枪,扫码枪有两种模式,键盘模式和串口模式,
1、键盘模式直接插上就行了,就像一个键盘一样不需要任何驱动,扫出来的数据直接落到PC的输入焦点上。就像一个键盘一样,只能输入字符。
2、而串口模式,则是安装驱动以后,能够虚拟成一个COM口,
如果我们用扫码枪给应用程序输入数据的时候肯定是不行的,因为程序需要能够在后台运行的时候也能用扫码枪作为数据输入的。这就需要用串口模式了。
今天我写程序的时候,问题是怎么也不能触发,DataReceived事件,最后发现问题所在,几个要点
1、串口必须New新实例,必须和能够正确获取硬件串口的名称。
2、sp.ReceivedBytesThreshold = 1; 这个是默认值就是1,就是有一个字节的数据就触发事件。
3、sp.RtsEnable = true;sp.DtrEnable = true;这两个属性必须得正确设置,哈
我就是因为第3个原因一直不不能正确触发事件。记得添加事件绑定代码啊。
public partial class Form1 : Form
{
SerialPort sp;
bool bIsReading = false;
// Dynamic d = new Dynamic();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
bool b = false;
try
{
sp = new SerialPort();
sp.BaudRate = 115200;
sp.DataBits = 8;
sp.Parity = Parity.None;
sp.StopBits = StopBits.One;
sp.PortName = System.IO.Ports.SerialPort.GetPortNames()[0];
sp.RtsEnable = true;
sp.DtrEnable = true;
sp.ReadTimeout = 3000;
sp.ReceivedBytesThreshold = 1;
sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.sp_DataReceived_1);
// sp.DataReceived += Sp_DataReceived;
// sp.DataReceived -= Sp_DataReceived;
sp.Open();
}
catch (Exception xe)
{
b = true;
MessageBox.Show("异常:" + xe.Message);
}
finally {
if (sp != null && b == true)
{
if (sp.IsOpen)
{
sp.Close();
} else
{
sp = null;
}
}
b = false;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//sp.DiscardInBuffer();
if (sp != null)
{
sp.Close();
sp.Dispose();
}
}
private void sp_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
{
if (bIsReading == true)
return;
bIsReading = true;
try
{
StringBuilder currentline = new StringBuilder();
//循环接收数据
while (sp.BytesToRead > 0)
{
char ch = (char)sp.ReadByte();
currentline.Append(ch);
}
//在这里对接收到的数据进行处理
MessageBox.Show("数据为:" + currentline.ToString());
//GlobalPublic.BasePublic.ShowMessage("数据为:" + currentline.ToString(), (BaseFrm as BaseForm.FrmBaseDoc).MTC_oGlobal);
//InvokeDelegate del = new InvokeDelegate(setItem);
//this.BeginInvoke(del, currentline.ToString());
//setItem(currentline.ToString());
// currentline = new StringBuilder();
}
catch (Exception ex)
{
MessageBox.Show("异常:" + ex.Message);
}
finally
{
bIsReading = false;
}
}
}
}
转载于:https://www.cnblogs.com/ModBus/p/8527509.html
C# serialPort的DataReceived事件无法触发 ,用的霍尼韦尔的扫码枪并且装了相应的USB转串口驱动。...相关推荐
- c# 串口通信 DataReceived 事件触发方法的使用
DataReceived事件:在接收到了ReceivedBytesThreshold设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发.数据接收的方法如果采用轮询的方法比较浪费时间,采 ...
- 2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
2015.1.10 解决DataGridView SelectionChanged事件自动触发问题 参考文章: (1)2015.1.10 解决DataGridView SelectionChanged ...
- C# 中串口通信 serialport1.DataReceived 函数无法触发或者出发延时等等问题解决方法
C# 中串口通信 serialport1.DataReceived 函数无法触发或者出发延时等等问题解决方法 参考文章: (1)C# 中串口通信 serialport1.DataReceived 函数 ...
- Input type=“file“上传文件change事件只触发一次解决方案
Input type="file"上传文件change事件只触发一次解决方案 参考文章: (1)Input type="file"上传文件change事件只触发 ...
- 事件冒泡及阻止事件冒泡 事件的触发 事件参数对象 获取用户按下键盘的键
事件冒泡及阻止事件冒泡 <!DOCTYPE html> <html lang="en"> <head><meta charset=&quo ...
- WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题
WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题 目录 一.触屏事件连带触发鼠标事件的问题 二.DataGrid 误触问题及解决方法 独立观察员 2021 年 10 月 10 日 一 ...
- ie下按keydown事件会触发button
负责公司的一个b2c平台,头部那里有个搜索查询的功能,根据用户输入的内容按回车键也会跳转到响应的页面,后来在ie浏览器下惊奇的发现按回车键的同时它也会触发底部的邮箱订阅的button事件,开始以为是其 ...
- vue 监听页面滚动事件:触发animate.min.css动画特效
一.问题答疑: 1. animate.css 如何在vue项目中引入?或引用? 2. 如何监听滚动事件,触发animate.class动画播放? vue 监听滚轮滚动事件,for循环 ,动态id,代码 ...
- Node.js: 如何继承 events 自定义事件及触发函数
events 是node.js的核心api ,几乎大部分node.js 的api都继承 events 类(javascript中没有类,也不存在继承,确切说是模拟类和继承,点击查看) 比如我们常见的 ...
最新文章
- Office365-----Skype for business
- 一个容易忽略的问题—Javascript文件加载的顺序
- Eclipse Juno上带有GlassFish的JavaEE 7
- Docker 常用命令,还有谁不会?
- Mongodb 忘记密码
- PyTorch学习—14.PyTorch中的学习率调整策略
- intel 面试总结
- 怎么减小照片大小kb?
- CS269I:Incentives in Computer Science 学习笔记 Lecture 20: Fair Division(公平分配)(本系列完结撒花!)
- 超好用的自动化测试工具——Python脚本
- 怎样在微信上发淘宝商品链接?
- OpenStack Days China Day 2:厨子与食客的热恋
- 面向对象开发期末复习概述(三)
- flash在C#中的应用
- ios Symbol(s) not found for architecture arm64
- 微信JS-SDK的PHP demo页面,解决Internal error 500错误
- Python骚操作-微信远程控制电脑
- 开源情报分析(OSINT)CTF社工类2万字题详细教程,请不要利用本文章做不道德的事,后果概不负责
- COMP 3023代写、代写COMP 3023、代做 C++ - Assignment、 代编码C++ - Assignment
- 基于Java实现的图片搜索系统