8-ESP8266 SDK开发基础入门篇--编写串口上位机软件
https://www.cnblogs.com/yangfengwu/p/11087558.html
咱用这个编写 ,版本都无所谓哈,只要自己有就可以,不同版本怎么打开
https://www.cnblogs.com/aliflycoris/p/8005955.html

C#API https://docs.microsoft.com/zh-cn/dotnet/api/?view=netframework-4.0







放几个文本显示

放个下拉框,用来选择串口号


各复制出来


把串口拖上来

做一个功能,软件启动的时候把电脑上所有的串口号显示到




string[] ports = System.IO.Ports.SerialPort.GetPortNames();//获取电脑上可用串口号
看一下控件的ID


comboBox1.Items.AddRange(ports);//给comboBox1添加数据
comboBox1.SelectedIndex = comboBox1.Items.Count > ? : -;//如果里面有数据,显示第0个

如果电脑上有可用串口,会显示

现在控制串口打开和关闭,,,,,,,改改按钮显示的哈,,,

让它默认显示打开



忘了...先设置下有可选择的波特率

写上常用的

9600
4800
1200
设置下默认显示的


if (button1.Text == "打开")//如果按钮显示的是打开
{
try//防止意外错误
{
serialPort1.PortName = comboBox1.Text;//得到comboBox1显示的串口内容
serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);//得到comboBox2显示的波特率内容
serialPort1.Open();//打开串口
button1.Text = "关闭";//按钮显示关闭
}
catch (Exception)
{
MessageBox.Show("打开失败", "提示!");//对话框显示打开失败
}
}
else//要关闭串口
{
try//预防串口有问题了,实际上已经关了
{
serialPort1.Close();//关闭串口
}
catch (Exception)
{
}
button1.Text = "打开";//按钮显示打开
}





现在优化一个地方
就是串口本来连接着电脑,然后拔下来了,或者重新来了个串口,咱检测下串口热插拔,然后重新更新下显示
https://blog.csdn.net/woshidaniu/article/details/44044093
开始上菜了哈,,

protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0219)//设备改变
{
if (m.WParam.ToInt32() == 0x8004)//usb串口拔出
{
string[] ports = System.IO.Ports.SerialPort.GetPortNames();//重新获取串口
comboBox1.Items.Clear();
comboBox1.Items.AddRange(ports);
if (button1.Text == "关闭")//咱打开过一个串口
{
if (!serialPort1.IsOpen)//咱打开的那个关闭了,说明拔插的是咱打开的
{
button1.Text = "打开";
serialPort1.Dispose();//释放掉原先的串口资源
comboBox1.SelectedIndex = comboBox1.Items.Count > ? : -;//显示获取的第一个串口号
}
else//热插拔不是咱打开的那个
{
comboBox1.Text = PortNameCopy;//默认显示的是咱打开的那个串口号
}
}
else//没有打开过
{
comboBox1.SelectedIndex = comboBox1.Items.Count > ? : -;//显示获取的第一个串口号
}
}
else if (m.WParam.ToInt32() == 0x8000)//usb串口连接上
{
string[] ports = System.IO.Ports.SerialPort.GetPortNames();//重新获取串口
comboBox1.Items.Clear();
comboBox1.Items.AddRange(ports);
if (button1.Text == "关闭")//咱打开过一个串口
{
comboBox1.Text = PortNameCopy;//默认显示的是咱打开的那个串口号
}
else
{
comboBox1.SelectedIndex = comboBox1.Items.Count > ? : -;//显示获取的第一个串口号
}
}
}
base.WndProc(ref m);
}
这个是系统自带的函数
关于那些值,,,我是自己监控的....
现在大家自己测试热插拔哈
写的够多的了...放到下一节接着写
https://www.cnblogs.com/yangfengwu/p/11087618.html
8-ESP8266 SDK开发基础入门篇--编写串口上位机软件的更多相关文章
- 9-ESP8266 SDK开发基础入门篇--编写串口上位机软件
https://www.cnblogs.com/yangfengwu/p/11087613.html 页面修改成这样子 现在看串口发送数据 点击点亮 发送0xaa 0x55 0 ...
- 26-ESP8266 SDK开发基础入门篇--编写WIFI模块 SmartConfig/Airkiss 一键配网
https://www.cnblogs.com/yangfengwu/p/11427504.html SmartConfig/Airkiss 配网需要APP/微信公众号,这节大家先使用我做好的APP/ ...
- 29-ESP8266 SDK开发基础入门篇--编写TCP 客户端程序(Lwip RAW模式,非RTOS版,精简入门)
https://www.cnblogs.com/yangfengwu/p/11456667.html 由于上一节的源码长时间以后会自动断开,所以再做这一版非RTOS版的,咱直接用lua源码里面别人写的 ...
- 28-ESP8266 SDK开发基础入门篇--编写wifi模块TCP 客户端程序(官方API版,非RTOS版)
https://www.cnblogs.com/yangfengwu/p/11432795.html 注:这节实现的功能是WIFI模块作为TCP 客户端,连接咱的TCP服务器,然后实现透传 本来想着做 ...
- 27-ESP8266 SDK开发基础入门篇--编写Android SmartConfig一键配网程序
style="font-size: 18pt;">https://www.cnblogs.com/yangfengwu/p/11429007.html https://wik ...
- 22-ESP8266 SDK开发基础入门篇--编写Android TCP客户端 , 连接和断开
https://www.cnblogs.com/yangfengwu/p/11192618.html 有些很细致的东西参考这篇 https://www.cnblogs.com/yangfengwu ...
- 23-ESP8266 SDK开发基础入门篇--编写Android TCP客户端 , 加入消息处理
https://www.cnblogs.com/yangfengwu/p/11203546.html 先做接收消息 然后接着 public class MainActivity extends App ...
- 1-ESP8266 SDK开发基础入门篇--开发环境搭建
因为今天终于做好了自己的另一块工控板,所以我就开始写基础公开篇的内容,希望自己小小的努力能够帮到大家 自己做的另一块板子 https://www.cnblogs.com/yangfengwu/cate ...
- 25-ESP8266 SDK开发基础入门篇--控制WIFI连接路由器
https://www.cnblogs.com/yangfengwu/p/11324411.html 说个事情,现在SDK的版本已经出到3.0了,但是我还是使用2.0 如果只是为了学习研究 选择3 ...
随机推荐
- golang学习笔记 ---interface
1. 什么是interface接口 interface 是GO语言的基础特性之一.可以理解为一种类型的规范或者约定.它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“im ...
- 封装:WPF基于MediaElement封装的视频播放器
原文:封装:WPF基于MediaElement封装的视频播放器 一.目的:应用MediaElement创建媒体播放器 二.效果图 三.目前支持功能 播放.暂停.停止.快进.快退.声音大小.添加播放列表 ...
- webpack等bundler是如何工作的-简化版本
webpack- why and how 首先不要被webpack做的复杂花哨的工作所迷惑,到底webpack是个啥?一句话,webpack是一个module bundler(模块打包器).多一句话, ...
- 解决TensorFlow在terminal中正常但在jupyter notebook中报错的方案
报错情况: # 本地运行正常,jupyter中无法 import tensorflow ImportError: libcublas.so.10.0: cannot open shared objec ...
- spark的存储系统--BlockManager源码分析
spark的存储系统--BlockManager源码分析 根据之前的一系列分析,我们对spark作业从创建到调度分发,到执行,最后结果回传driver的过程有了一个大概的了解.但是在分析源码的过程中也 ...
- springBoot 发布war/jar包到tomcat(idea)
参考链接:https://blog.csdn.net/qq1076472549/article/details/81318729 1.启动类目录新增打包类: 2.pom.xml新增依赖:<pa ...
- 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)
[优化]COUNT(1).COUNT(*).COUNT(常量).COUNT(主键).COUNT(ROWID).COUNT(非空列).COUNT(允许为空列).COUNT(DISTINCT 列名) 1. ...
- Sql Server设置用户只能查看并访问特定数据库
现需要限定特定的用户只能查看并访问特定的数据库,防止多个用户对数据库操作时一些误操作. 参考i6first的如何让用户只能访问特定的数据库(MSSQL)博文 1.新建登录用户 以管理员身份登陆数据库( ...
- Maven项目中jstl表达式失效
从网上看到的可能原因: 1.包没导入 2.web.xml版本太低,不支持 最后,我一直忽略了的解决办法: 关于jstl和el表达式失效的解决办法 - - ITeye博客 https://aazham. ...
- 记vue nextTick用到的地方
nextTick是vue提供的全局函数,在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. // 修改数据 vm.msg = 'Hello' // D ...