建立好一个form后,选择工具箱,在组件所属里找到SerialPort:

拖拽一个即可。

这时可以看到属性栏:

可以查看修改默认属性值。

这时就可以通过控件设计我们的界面啦:

我这里设计的很简单,包括串口设置、接收数据、发送数据。串口设置参数,我只包含了两个,我们经常改动的COM口和波特率,其他都使用默认值。
波特率通常使用的有固定几种,我们将可能用到的写到波特率绑定的combobox的Items集合属性中即可:

在初始构造函数中加入:

public Form1(){InitializeComponent();System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;//设置该属性 为false}

防止后面出现异常,会提示线程间操作无效: 从不是创建控件的线程访问它。

先实现串口的自动扫描识别:

//我们在form载入时,扫描识别存在的串口。private void Form1_Load(object sender, EventArgs e){RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm");if (keyCom != null){string[] sSubKeys = keyCom.GetValueNames();cmbPort.Items.Clear();foreach (string sName in sSubKeys){string sValue = (string)keyCom.GetValue(sName);cmbPort.Items.Add(sValue);}if (cmbPort.Items.Count > 0)cmbPort.SelectedIndex = 0;}cmbBaud.Text = "115200";}

串口打开实现:

         bool isOpened = false;//串口状态标志private void button1_Click(object sender, EventArgs e){if (!isOpened){serialPort.PortName = cmbPort.Text;serialPort.BaudRate = Convert.ToInt32(cmbBaud.Text, 10);try{serialPort.Open();     //打开串口button1.Text = "关闭串口";cmbPort.Enabled = false;//关闭使能cmbBaud.Enabled = false;isOpened = true;serialPort.DataReceived += new SerialDataReceivedEventHandler(post_DataReceived);//串口接收处理函数}catch{MessageBox.Show("串口打开失败!");}}else{try{serialPort.Close();     //关闭串口button1.Text = "打开串口";cmbPort.Enabled = true;//打开使能cmbBaud.Enabled = true;isOpened = false;}catch{MessageBox.Show("串口关闭失败!");}}}

接收处理函数:

private void post_DataReceived(object sender, SerialDataReceivedEventArgs e){string str = serialPort.ReadExisting();//字符串方式读ReceiveTbox.Text = "";//先清除上一次的数据ReceiveTbox.Text += str;}

因为我们之前在打开串口时,加载了串口接收处理函数,所以,每次串口有数据,会自动调用接收处理函数。

数据发送:

 private void button2_Click(object sender, EventArgs e){//发送数据if (serialPort.IsOpen){//如果串口开启if (SendTbox.Text.Trim() != "")//如果框内不为空则{serialPort.Write(SendTbox.Text.Trim());//写数据}else{MessageBox.Show("发送框没有数据");}}else{MessageBox.Show("串口未打开");}}

通过串口写,即可发出。

测试:
可以使用Configure Virtual Serial Port Driver来虚拟串口,模拟通信。
我直接使用了串口调试经常使用的TTL转USB,自发自收来真实测试:

扫描到了串口:

发送我们的最熟悉的hello world:

源码Github:https://github.com/yuace/CSharp–SerialPort

C#实现简单串口通信助手相关推荐

  1. C#做的串口通信助手可发可收简单(免费开源)

    C#做的串口通信助手可发可收简单(免费开源) 最近在做物联网相关的项目,要用到串口,所以今天做一个C#的串口上位机,供大家参考,程序如果有不对希望大家指正,谢谢! 首先看一下效果 现在开始制作我们的串 ...

  2. 利用python程序、虚拟串口软件、串口通信助手,实现串口通信(两串口互相收发文字)

    一.流程简述 程序可以参考: https://blog.csdn.net/colcloud/article/details/42454839 这是我参考后简化的版本: https://github.c ...

  3. STM32CubeMX基于HAL库实现简单串口通信

    STM32CubeMX基于HAL库实现简单串口通信 板子:STM32F103C8 编译工具:Keil+STM32CubeMX 烧录工具:FlyMcu 串口调试程序:XCOM 实验要求: 1)设置波特率 ...

  4. QT的串口通信助手C++代码开源

    QT的串口通信助手C++代码开源 Qt是一种基于C++的跨平台图形用户界面应用程序开发框架 本次使用QT的版本是5.6 需要在pro文件里面添加 QT += serialport 添加库文件 布局界面 ...

  5. 基于AT89C52和串口通信助手的串口通信

    我们要实现的功能是在程序运行的时候通过单片机的串口向串口调试助手发送一个字符串诸如"hello world",串口通信助手接收到字符串之后显示并由用户反馈回去一个长度为4的字符串并 ...

  6. 两个串口通信助手之间通信_串口通信原理

    LC串口通信原理 PLC各型主机均内建2个通信接口的标准配置,即一个RS232和一个RS485通信接口,其RS232接口主要用于上下载程序或用来与上位机.触摸屏通信,而RS485接口主要用于组建使用R ...

  7. linux下QT开发串口通信助手

    串口通信的应用十分广泛,所以在QT下编写一个串口通信程序就显得尤为重要.下面将一步一步叙述开发过程: 1.下载第三方QT串口类,免积分 http://download.csdn.net/detail/ ...

  8. linux串口助手开发,linux下QT开发串口通信助手

    串口通信的应用十分广泛,所以在QT下编写一个串口通信程序就显得尤为重要.下面将一步一步叙述开发过程: 1.下载第三方QT串口类,免积分 http://download.csdn.net/detail/ ...

  9. 使用RXTX实现简单串口通信调试工具

    最终效果如下图: 1.把rxtxParallel.dll.rxtxSerial.dll拷贝到:C:\WINDOWS\system32下. 2.RXTXcomm.jar 添加到项目类库中. packag ...

最新文章

  1. Jquery源码分析之匿名函数的自执行
  2. Ubuntu 更新后 VirtualBox 无法启动
  3. SAP cross distribution chain status在Fiori应用中的draft handling
  4. SQL Server的Execute As与连接池结合使用的测试
  5. nema gps数据转换 matlab,GPS通信的NEMA协议与定位数据的提取.pdf
  6. JDK1.3安装出现/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory Done.
  7. CSS垂直居中,你会多少种写法?
  8. python创建列表副本的方法_Python之列表方法
  9. Unix操作系统的原理、优点与缺点
  10. 抄书——最优化的理论与方法(5)——数学基础(凸集和凸函数)
  11. qt button clicked(bool) always false
  12. win10系统的 3Dsmax2020 安装失败报错 1603 解决方案 亲测可用
  13. ##DBUtils工具类的正确使用(一)
  14. 生成自己的浏览器证书
  15. 树莓派3B安装64位操作系统(树莓派无需连接显示器键盘鼠标)
  16. 胡阳pyhton作业题--20150725
  17. Vue动态组件、组件缓存、组件激活和非激活、组件插槽、组件name
  18. js点击网页背景特效和js打字状态特效代码
  19. CUDA Programming Model--CUDA编程模型
  20. 完美解决 - 如何将一个项目打包到本地maven库,然后供另一个项目中引用。

热门文章

  1. 利用multisim仿真基极调频电路(无线咪头电路)
  2. 蓝牙耳机不止有主动降噪,这些降噪冷知识,发烧友入门必学
  3. 在计算机应用领域中cam的中文含义是什么,CAM是计算机应用领域中的一种,其含义是( )。...
  4. 2010年9月和10月的奥多比开发者技术日 [转]
  5. 【hdu 6082 度度熊与邪恶大魔王 】 完全背包
  6. zigbee(题型整理4)
  7. 强大的strace命令用法详解
  8. Logistic回归实战---疝气病症预测病马的死亡率
  9. 拼多多无货源如何开网店流程和注意事项的教程
  10. 好多家庭都换装人脸识别智能门锁或指纹锁了,智能锁真的香吗?