首先,创建一个扫描枪的工具类CommBar 在窗体里面使用,需要实例化该类,建议先在构造函数外面声明类对象,在构造函数里面实例化对象 - CommBar commBar;
- public Form2()
- {
- InitializeComponent();
- commBar = new CommBar();
- //注册一该串口
- commBar.SerialPortValue("COM1", 9600);
- //打开串口
- if (commBar.Open())
- //关联事件处理程序
- commBar.serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort_DataReceived);
- }
复制代码接下来创建委托和事件 - //委托,指向CodeText方法
- private delegate void ModifyButton_dg(CommBar commBar);
- //串口接收接收事件处理程序
- //每当串口讲到数据后激发
- void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
- {
- System.Threading.Thread.Sleep(100);
- byte[] m_recvBytes = new byte[commBar.serialPort.BytesToRead];//定义缓冲区大小
- int result = commBar.serialPort.Read(m_recvBytes, 0, m_recvBytes.Length);//从串口读取数据
- if (result <= 0)
- return;
- commBar.Code = Encoding.ASCII.GetString(m_recvBytes, 0, m_recvBytes.Length);//对数据进行转换
- this.Invoke(new ModifyButton_dg(CodeText), commBar);//调用委托,将值传给文本框
- commBar.serialPort.DiscardInBuffer();
- }
复制代码给文本框之类的容器赋值 - //用来为文本框赋值
- private void CodeText(CommBar commBar)
- {
- //加逻辑判断等
- this.txt_ASN.Text = commBar.Code;
-
- }
复制代码窗体里面需要显示成功或失败的文字描述,这里建议这么使用 - this.lbl_error.Text = "ASN码已存在!";
- this.lbl_error.Visible = true;
- System.Threading.Tasks.Task.Delay(3000).ContinueWith(_ =>
- {
- Invoke(new MethodInvoker(() => {
- lbl_error.Visible = false;
- }));
- });
复制代码到此这篇关于C# 串口扫描枪读取数据的实现的文章就介绍到这了,更多相关C# 串口扫描枪读取内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |