8-ESP8266|8-ESP8266 SDK开发基础入门篇--编写串口上位机软件
https://www.cnblogs.com/yangfengwu/p/11087558.html
咱用这个编写 ,版本都无所谓哈,只要自己有就可以,不同版本怎么打开
https://www.cnblogs.com/aliflycoris/p/8005955.html
文章图片
C#APIhttps://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 ? 0 : -1; //如果里面有数据,显示第0个
文章图片
如果电脑上有可用串口,会显示
文章图片
现在控制串口打开和关闭,,,,,,,改改按钮显示的哈,,,
文章图片
让它默认显示打开
文章图片
文章图片
文章图片
忘了...先设置下有可选择的波特率
文章图片
写上常用的
文章图片
文章图片
1382400 921600 460800 256000 230400 128000 115200 76800 57600 43000 38400 19200 14400 9600 4800 1200
文章图片
设置下默认显示的
文章图片
文章图片
【8-ESP8266|8-ESP8266 SDK开发基础入门篇--编写串口上位机软件】
文章图片
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 > 0 ? 0 : -1; //显示获取的第一个串口号 } else//热插拔不是咱打开的那个 { comboBox1.Text = PortNameCopy; //默认显示的是咱打开的那个串口号 } } else//没有打开过 { comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1; //显示获取的第一个串口号 } } 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 > 0 ? 0 : -1; //显示获取的第一个串口号 } } } base.WndProc(ref m); }
文章图片
这个是系统自带的函数
关于那些值,,,我是自己监控的....
现在大家自己测试热插拔哈
写的够多的了...放到下一节接着写
https://www.cnblogs.com/yangfengwu/p/11087618.html
推荐阅读
- 深入理解Go之generate
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 我的软件测试开发工程师书单
- echart|echart 双轴图开发
- NPDP拆书(三)(新产品开发战略(经营与创新战略))
- 芯灵思SinlinxA33开发板Linux内核定时器编程
- 常用git命令总结
- 藏族开发的修路人——记致富援乡的斯定那珠
- ASP.NET|ASP.NET Core应用开发思维导图
- VueX(Vuex|VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)