首页 > 编程语言 >C#实现扫码枪串口通信(利用serialPort控件重写)

C#实现扫码枪串口通信(利用serialPort控件重写)

时间:2024-09-17 22:50:59浏览次数:8  
标签:控件 扫码 Log Text System serialPort1 cbox 串口 using

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.IO.Ports;
  7 using System.Linq;
  8 using System.Text;
  9 using System.Threading.Tasks;
 10 using System.Windows.Forms;
 11 
 12 namespace SerialPort_Test
 13 {
 14     public partial class Form1 : Form
 15     {
 16 
 17         public Form1()
 18         {
 19             InitializeComponent();
 20         }
 21 
 22         private void timer1_Tick(object sender, EventArgs e)
 23         {
 24             lbl_Systime.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
 25         }
 26 
 27         private void Form1_Load(object sender, EventArgs e)
 28         {
 29             timer1.Interval = 1000;
 30             timer1.Start();
 31 
 32             cbox_Ports.DataSource = SerialPort.GetPortNames();
 33 
 34             cbox_Bauds.SelectedIndex = 2;
 35             cbox_DataBits.SelectedIndex = 3;
 36             cbox_StopBits.SelectedIndex = 0;
 37             cbox_Paritys.SelectedIndex = 0;
 38 
 39             serialPort1.DataReceived += serialPort1_Received;
 40         }
 41 
 42         private void serialPort1_Received(object sender, SerialDataReceivedEventArgs e)
 43         {
 44             try
 45             {
 46                 this.Invoke((EventHandler)(delegate
 47                 {
 48                     tbox_RcvData.Text = string.Empty;
 49                     tbox_RcvData.AppendText(serialPort1.ReadExisting());
 50                     Log("接收数据:"+ tbox_RcvData.Text);
 51                 }));
 52             }
 53             catch (Exception)
 54             {
 55 
 56                 Log("接收失败");
 57             }
 58         }
 59 
 60         private void btn_RefreshPorts_Click(object sender, EventArgs e)
 61         {
 62             cbox_Ports.DataSource = SerialPort.GetPortNames();
 63         }
 64 
 65         private void btn_SerialConnect_Click(object sender, EventArgs e)
 66         {
 67 
 68             if (btn_SerialConnect.Text=="连接")
 69             {
 70                 if (serialPort1.IsOpen)
 71                 {
 72                     serialPort1.Close();
 73                 }
 74                 try
 75                 {
 76                     serialPort1.PortName = cbox_Ports.Text.ToString().Trim();
 77                     serialPort1.BaudRate = Convert.ToInt32(cbox_Bauds.Text.ToString().Trim());
 78                     serialPort1.DataBits = Convert.ToInt32(cbox_DataBits.Text.ToString().Trim());
 79                     serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), cbox_StopBits.Text.ToString().Trim(), true);
 80                     serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), cbox_Paritys.Text.ToString().Trim(), true);
 81                     serialPort1.Open();
 82                     Log("连接成功!");
 83                     groupBox1.Enabled = false;
 84                     btn_SerialConnect.Text = "断开";
 85                 }
 86                 catch (Exception ex)
 87                 {
 88 
 89                     Log("连接失败," + ex);
 90                 }
 91             }
 92             else if (btn_SerialConnect.Text == "断开")
 93             {
 94                 serialPort1.Close();
 95                 Log("已断开");
 96                 groupBox1.Enabled = true;
 97                 btn_SerialConnect.Text = "连接";
 98 
 99             }
100  
101 
102         }
103 
104         private void Log(string Info)
105         {
106             Invoke(new Action(() =>
107             {
108                 ListViewItem lst = new ListViewItem(DateTime.Now.ToString());
109                 lst.SubItems.Add(Info);
110                 listView1.Items.Insert(0, lst);
111             }));
112         }
113 
114         private void btn_Send_Click(object sender, EventArgs e)
115         {
116             if (serialPort1.IsOpen)
117             {
118                 if (tbox_SendData.Text!=string.Empty)
119                 {
120                     serialPort1.WriteLine(tbox_SendData.Text);
121                     Log("发送数据:" + tbox_SendData.Text);
122                 }
123                 else
124                 {
125                     Log("发送数据不能为空");
126                 }
127             }
128             else
129             {
130                 Log("端口未打开");
131             }
132         }
133     }
134 }

 

标签:控件,扫码,Log,Text,System,serialPort1,cbox,串口,using
From: https://www.cnblogs.com/csflyw/p/18417685

相关文章

  • QEMU添加设备相关-中断控制器、串口、pflash支持
    QEMU添加设备相关-中断控制器、串口、pflash支持一、添加串口支持:二、添加中断控制器:三、添加pflash支持一、添加串口支持:真实板卡的初期调试中,串口打印可谓神器,几乎所有的SOC都会带有串口这个外设,因此我们也需要添加串口到我们的定义中。首先添加几个串口的基地......
  • C#实现扫码枪串口通信
     usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.IO.Ports;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWind......
  • 蓝桥杯-STM32G431RBT6(串口)
    前言一、配置二、使用步骤1.串口发送代码逻辑效果展示2.串口接收单个字符代码逻辑中断回调函数3.串口接受字符串代码逻辑字符串函数中断回调函数声明代码开源前言一、配置二、使用步骤1.串口发送代码逻辑sprintf(tx_buf,"jinke\r\n"):这行代码使用......
  • printk 串口打印级别
    打印级别格式:printk(KERN_EMERG"1111111KERN_EMERG\n");printk("<0>1111111KERN_EMERG\n");*******************************************************************************1.基本解决方法(如果这种方法不行,结尾处说明另一种小众原因)用到的命令1>cat/proc/sy......
  • WinForms_使用StatusStrip控件在窗体底部显示状态信息
    StatusStrip控件的用途·状态信息显示:可以用来显示程序运行时的状态信息,如加载进度、状态提示、时间等。·添加控件:可以在StatusStrip上添加多个控件,比如ToolStripStatusLabel(用来显示标签文本),ToolStripProgressBar(用来显示进度条)等。·布局:StatusStrip控件会自......
  • Verilog - 串口命令封装(多个命令封装为1个命令)代码
    串口命令封装,代码实现思想:1.对接收的串口数据(8bit)进行移位2.识别封装命令,输出配置使能信号3.计数(计数器cnt),使计数时间大于一个命令的配置时间,当达到计数值cnt_x时,输出有效信号并对计数器清零4.输出flag信号:开始配置时,将flag信号拉高,配置完成后拉低5.计数(计数器cnt_ca......
  • 使用 csharp获取串口 的 全称
    使用的命名控件usingSystem.Management;代码点击查看代码///<summary>///获取串口的全称///</summary>///<returns></returns>publicstaticList<string>GetCompleteNameOfSerialPort(){List<string>serial_port_result=newList&......
  • 串口通信-stm32
    【实验目的】深入理解串口协议和串口程序编制方法;【实验要求】1.学会编写串口通信程序2.能够使用按键控制通信消息的发送2.学会在两块开发板之间通信的方式【实验内容】1.将开发板和PC机串口连接,并通过串口线和另一块开发板连接;2.在发送开发板上按下发送键,则向目标开发......
  • LVGL 控件之滑动条(lv_slider)
    目录一、概述二、滑块1、设置滑块当前值和范围值2、设置滑块部件的模式3、禁用单击4、事件5、API函数一、概述滑动条对象看起来像是在进度条增加了一个可以调节的旋钮,使用时可以通过拖动旋钮来设置一个值。就像进度条(bar)一样,Slider可以是垂直的或水平的(当设......
  • LVGL 控件之列表(lv_list)
    目录一、概述二、列表1、添加列表按钮2、设置列表文本3、API函数一、概述List(列表)基本上是一个垂直布局的矩形,按钮指向该矩形并且可以添加文本。列表部件由两个部分组成:LV_PART_MAIN使用所有典型背景属性的列表的主要部分LV_PART_SCROLLBAR滚动条。二、列表......