基于单片机串口通信的上位机和下位机实践

合集下载

基于MFC的单片机上下位机通信控制系统设计

基于MFC的单片机上下位机通信控制系统设计
LabVIEW 是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于 C 和 BASIC 开发环 境,但是 LabVIEW 与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码, 而 LabVIEW 使用的是图形化编辑语言 G 编写程序,产生的程序是框图的形式。LabVIEW 应用于数据采集 与控制、信号分析等方面,它为不熟悉文本语言编程的非计算机专业从业人员在测控领域建立计算机仪器 系统——虚拟仪器,提供了一个便捷、轻松的图形化设计环境。由于其灵活、简单易用、开发效率高等特 点,正逐渐成为科技工作者进行仪器应用与开发的得力工具。如果采用单片机作为前端数据采集,通过串 口进行与 LabVIEW 的数据通信,就可实现低成本、灵活方便、接口简单的数据采集系统。这对于许多信 号频率不是太高的场合,此方案无疑非常便利。利用 LabVIEW 对单片机的数据进行分析处理,并通过串 口实现二者之间的数据交换、经济实用的数据采集及分析系统。
Visual C++是一种由微软公司开发的包含协助开发环境的事件驱动编程语言,VC 拥有图形用户界面 (GUI)和快速应用程序开发(RAD)系统,程序员可以轻松的使用 VC 提供的组件快速建立一个应用程
________________________________ 作者简介:江维(1983-),男,讲师,博士,研究方向:智能控制与嵌入式系统. 基金项目:2018 年武汉纺织大学教学研究项目(2018JY019).
第 32 卷 第 2 期 2019 年 04 月
武汉纺织大学学报
JOURNAL OF WUHAN TEXTILE UNIVERSITY
Vol.32 No.2 Apr. 2019
江 维,吴雨川,李红军
TP273

基于单片机与PC机串口通信的温度记录仪毕业设计

基于单片机与PC机串口通信的温度记录仪毕业设计

福建工程学院国脉信息学院毕业设计(论文)专业: 班级: 设计题目: 基于单片机的低功耗温度记录仪学生姓名: 学号: 起止日期: 设计地点:指导教师: 2011年 03 月 25 日基于单片机的低功耗温度记录仪设计1、摘要本文介绍了一种基于AT89C51单片机与PC机串口通信的温度控制系统,用单片机作下位机完成温度数据的采集和执行PC机发出的控制执行命令;用PC机作上位机接收单片机发送的数据,进行数据处理,向单片机发送控制命令,四位一体共阴数码管实时显示当前温度。

PC机与单片机采甪串行通信,可实现温度检测和采集并处理数据的人机友好界面。

本设计充分利用PC机VB6.0软件强大的数据处理功能和友好的人机界面,对温度进行实时曲线显示。

本设计由硬件和软件二部分组成。

通过对系统软件和硬件的合理规划,发挥单片机自身集成多系统功能单元的优势,在不减少功能的前提下有效降低了成本,同时实现低功耗运行,系统操作简便,结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。

关键词:AT89C51单片机,PC机,串行通信,数据采集以及处理2、引论随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。

温度是工业生产中主要的被控参数之一,有些工艺过程对其温度的控制效果直接影响着产品的质量。

许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。

没有合适的温度环境,许多电子设备就不能正常工作。

还有比如在观察用药剂前后病人体温随时间的变化情况,临床一般都采用水银或电子温度计,隔一段时间测量一次并手工记录结果。

这种传统方式给病人带来了很多不便,也加大了护理工作量。

更为欠缺的是测量时间间隔不够短,在体温变化率较高的情况下,容易造成处理不当或不足,达不到最理想的疾病控制与治疗效果。

传统的温度记录仪通常采用的是人工记录或普通记录仪用墨水在记录纸上绘制曲线,其体积庞大、精度低、墨水易堵塞、费时费力。

qt开发上位机_上位机开发之单片机通信实践(一)

qt开发上位机_上位机开发之单片机通信实践(一)

qt开发上位机_上位机开发之单⽚机通信实践(⼀)经常会有⼀些学员会问到上位机与单⽚机之间通信的问题,⽽我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单⽚机通信,通信原理都是⼀样的。

PLC的本质就是单⽚机,在单⽚机的基础上添加⼀些外围电路并形成产品化,即构成了PLC控制器。

今天在这⾥给⼤家分享⼀个上位机与单⽚机通信的实例,希望对⼤家开发上位机有所启发。

1. 单⽚机硬件介绍只要做上位机开发,就离不开通信协议。

⼀般来说,单⽚机可以与上位机之间以串⼝通信为主,当然也不排除现在有的单⽚机也集成了以太⽹⼝。

就串⼝通信⽽⾔,常⽤的⼏种通信⽅式,包括串⼝⾃定义协议、Modbus协议、CAN总线,接下来介绍的这个单⽚机是某个锂电池的核⼼板,它主要是⽀持Modbus协议和CAN总线的⽅式。

图表 1单⽚机硬件2. 通信测试(1)这⾥我们选择的是基于485总线的ModbusRTU通信协议,如果要实现上位机开发,需要单⽚机开发⼈员提供⼀份通信变量表,如果读取变量较多或者不连续,需要进⾏分组读取。

(2)通信变量表⼀般包含参数名称、Modbus地址、存储区、数据类型、换算公式等内容,能够将通信变量表看明⽩并完成通信测试,是能够完成上位机开发的前提。

(3)这⾥,我截取部分变量表跟⼤家做⼀个分析:图表 2 Modbus寄存器表上表中,以电芯总电压为例,Modbus地址为0x1003,对应⼗进制即为4099,寄存器地址即为44100,读取类型为ushort类型,换算公式为读取之后乘以0.01,⽐如读取值为5630,即为5.63V。

分析明⽩之后,我们就可以先⽤ModbusPoll软件来⼀波初步测试,如果需要Modbus软件资料的,可以关注⼀下喜科堂官⽅关注:dotNet ⼯控上位机,然后像聊天⼀样发送关键词:Modbus软件套装即可。

这⾥我们需要通过485转USB连接到电脑中,然后通过设备管理器,看到端⼝号为COM4。

上位机、下位机通信实例

上位机、下位机通信实例

上位机、下位机通信实例摘要:1.上位机与下位机通信的基本概念2.上位机与下位机通信的方式3.通信实例介绍4.通信实例的应用场景5.通信实例的优势与不足正文:一、上位机与下位机通信的基本概念上位机和下位机通信是指在计算机控制系统中,上位机(通常为控制中心或主计算机)与下位机(通常为现场控制器或执行器)之间的信息交换。

上位机主要负责数据处理、逻辑控制和决策等任务,而下位机则主要负责现场设备的运行控制。

两者之间的通信是实现自动化控制系统正常运行的关键。

二、上位机与下位机通信的方式上位机与下位机之间的通信方式主要有串行通信、并行通信和网络通信等。

其中,串行通信和并行通信是硬件层面的通信方式,而网络通信则是基于计算机网络的通信方式。

1.串行通信:串行通信是指上位机与下位机之间通过串行接口进行数据传输。

它具有线路简单、成本低的优点,但传输速率相对较低。

2.并行通信:并行通信是指上位机与下位机之间通过并行接口进行数据传输。

它具有传输速率快的优点,但需要较多的线路和硬件资源。

3.网络通信:网络通信是指上位机与下位机之间通过网络进行数据传输。

它可以实现远程控制和实时数据交互,但需要建立稳定的网络环境和较高的网络带宽。

三、通信实例介绍以下是一个典型的上位机与下位机通信实例:假设有一个自动化生产线系统,上位机负责生产任务的分配和调度,下位机负责具体的设备运行控制。

在这个系统中,上位机需要实时获取下位机的运行状态和数据,并根据生产任务进行调整。

同时,下位机也需要根据上位机的指令来执行相应的操作。

四、通信实例的应用场景上位机与下位机通信实例在许多领域都有应用,如工业自动化、楼宇自控、智能交通等。

在这些领域中,上位机与下位机通信实例可以实现设备的远程监控、实时数据采集和智能决策等功能,从而提高系统的运行效率和可靠性。

五、通信实例的优势与不足上位机与下位机通信实例具有以下优势:1.提高系统的自动化水平,降低人工干预成本。

2.实现远程监控和控制,方便管理人员进行决策。

上位机下位机串口通信课案

上位机下位机串口通信课案

大连海事大学课程设计报告课程名称:计算机微机原理课程设计 成 员:设计时间:2016年3月7日至3月18日成员1 成员2 成员3成绩2220133293范凯锋唐绍波考核记录及成绩评定题目双机数据采集系统设计完成的主要工作基本功能:实现数据采集,双机通信和基本形式的数据显示。

其中下位机用数码管显示(或液晶屏)显示。

具体实现要求:(1)上位机发送一个启动命令(自己定义命令的格式和内容)给下位机;(2)下位机接收到启动命令后开始采集1路模拟量数据(用电位器模拟实现)和1路开关量数据,并将模拟量转换成数字量在数码管(或液晶屏)上实时显示,然后把模拟量数据和开关量数据发送给上位机;(3)上位机接收到数据后在显示器上显示。

成员分工成员曹晓露进行资料的搜集,下位机的连线和程序的调试,成员范凯锋负责实验代码的编写以及相应流程图,成员唐绍波进行实验报告的撰写及相关画图。

综合评语(设计方案、实践环节、问题解答、设计报告)22201326422220130079 曹晓露_________________________________ 微机原理课程设计报告目录1. 设计任务与要求 (1)1.1课程设计题目 (1)1.2课程设计的背景 (1)1.3课程设计的目的 (1)1.4课程设计的意义 (1)1.5设计任务 (1)2. 设计方案 (2)2.1参数采集和传输设计 (2)2.2参数显示设计 (2)2.3模拟信号采样设计 (2)2.4硬件研制过程 (2)3. 详细设计 (3)3.1硬件系统框图与说明 (3)3.2硬件设计 (4)3.3软件主要模块流程图与说明 (7)4. 设计结果及分析 (8)5. 成员分工及工作情况 (9)5.1成员分工 (9)5.2工作情况 (9)5.3实验总结 (9)6. 参考文献 (9)7. 附录 (10)4、设计任务与要求1.1课程设计题目双机数据采集系统设计1.2课程设计的背景二^一世纪是信息化高速发展的世纪,产业的信息化离不开微型计算机的支持。

单片机串口通信程序(下位机)

单片机串口通信程序(下位机)

求单片机串口通信程序(下位机)就是PC机和单片机通信,PC机为上位机,单片机为下位机,用8个LED灯检测。

在PC机上通过串口调试精灵向单片机发送字符,单片机接收到后读串口数据,判断接收到的是哪个字符,如果是“R”则让LED灯循环右移,接收到“L”则让LED灯循环左移。

程序用C和汇编都行,分数不够我可以加我的邮箱jimixin# (把#改成@)问题补充:呵呵,不幸被你言中,程序我还能看懂,让我编我确实还不会。

已提高分数,希望再给个循环右移子程序,另外确定一下问题:1.我用的是AT89S51,头文件改成reg51.h就可以吧?2.AT89S51的片内时钟振荡频率是不是12MHZ?那波特率为9600b/s时,TH1和TL1的初值是不应该为FAH?麻烦你了,回答补充问题我会再追加分数提问者:匿名最佳答案程序我给你做到这,别说其它的你还不会啊。

波特率根据你的要求去设置.如果实在不明白的话,发消息给我吧1.reg51.h头文件可以,2.AT89S51内部无时钟,需外加时钟3.那波特率为9600b/s时,TH1和TL1的初值是不应该为FAH?它有具体的计算公式,波特率你想是多少就是多少4.假设你用P1口控制8个LED,低电平点亮,程序如下。

首先包含intrins.h头文件。

OK了,问题全解决了,分也该给我了吧。

呵呵。

#include<reg52.h>#define uchar unsigned charuchar recive;void main(){TMOD=0X20;SCON=0X50;TL1=0XF3;TH1=0XF3;PCON=0X80;TR1=1;EA=1;ES=1;P1=0x7f;//初始值,一个灯亮,其它都灭while(1){if(recive=='R')LED_right();if(recive=='L')LED_left();}void es0(void) interrupt 4(recive=SBUF;RI=0;)void LED_left(void){P1=_crol_(P1,1);//delay();调用你想要的延时这个不要说你不会啊,就是做个空循环就行}void LED_right(void){P1=_cror_(P1,1);//delay();}。

上位机与下位机通讯

上位机与下位机通讯
温度采集器应用很广,平时比较常见,但作为实验内容的较少,适合作为编程联系的例子。在设计中能够更加透彻的理解和较为全面的考虑各种情况。
通过这次的练习,可以加深对单片机应用了解,更能灵活的使用51系列单片机的资源解决实际问题。
3.2系统功能设计
3.2.1采集的数据,但采集的是模拟的电压。需要通过下位机上的AD转换模块进行处理得到数字信息。但是得到的数据并不是真正的温度值,还需要进一步的处理换算才能得到真正的温度值。
ds_t=_cror_(temp1,4); /*将变量temp1循环右移4位*/
lcd_busy();
w_d_add=num[ds_t]; /*写数据*/
ds_t=ds_mon & 0x0f; /*月保留低四位,将小时的十位和个位分离*/
lcd_busy();
w_d_add=num[ds_t]; /*写数据*/
3.3硬件设计及描述
3.3.1时钟与复位模块
由电容,电位器,按键组成复位电路部分,该电路接于单片机的RESET端可以通过按键达到手动复位的效果,也可以通过电位器和电容组成上电复位电路。通过复位电路使单片机回到初始状态。
图3.2复位电路图3.3晶振时钟电路
3.3.2按键选择模块
利用P1.0到P1.2与8279芯片构成键盘扫描电路,可以扫描十六个按键,但本次设计只用到十个按键。用来进行对实时时间的更改和校准。
ds_t=ds_d & 0x0f; /*天保留低四位,将小时的十位和个位分离*/
lcd_busy();
w_d_add=num[ds_t]; /*写数据*/
lcd_busy();
w_d_add=0xC8; /*日*/
lcd_busy();
w_d_add=0xD5;

上位机、下位机通信实例

上位机、下位机通信实例

上位机、下位机通信实例(原创实用版)目录1.上位机与下位机通信的基本概念2.上位机与下位机通信的实例介绍3.通信实例的优势与应用场景4.通信实例的发展趋势和未来展望正文一、上位机与下位机通信的基本概念上位机和下位机通信是指在计算机控制系统中,上位机(如 PC、服务器等)与下位机(如 PLC、PAC 等)之间的数据交换与通信。

上位机主要负责控制策略的制定、数据处理、信息显示和报警处理等功能,而下位机主要负责现场设备的实时控制、数据采集和执行上位机发出的指令。

两者之间的通信是实现计算机控制系统正常运行的关键环节。

二、上位机与下位机通信的实例介绍1.通过 RS-485 总线进行通信RS-485 总线是一种串行通信标准,可实现多点、远距离的数据传输。

在工业自动化领域,RS-485 总线常用于上位机与下位机之间的通信。

例如,上位机可以通过 RS-485 总线向 PLC 发送控制指令,PLC 接收到指令后执行相应的操作,并将现场数据通过 RS-485 总线反馈给上位机。

2.以太网通信以太网通信是一种局域网通信技术,具有传输速度快、通信距离远、抗干扰能力强等优点。

在工业自动化领域,以太网通信也广泛应用于上位机与下位机之间的通信。

例如,上位机可以通过以太网通信向 PAC 发送控制指令,PAC 接收到指令后执行相应的操作,并将现场数据通过以太网通信反馈给上位机。

三、通信实例的优势与应用场景上位机与下位机通信实例的优势主要体现在以下方面:1.实时性:通信实例可以实现实时数据传输,使得上位机能够及时了解现场设备的运行状态,并根据实际情况发出控制指令。

2.可靠性:通信实例具有较强的抗干扰能力,能够保证在恶劣的工业环境中实现稳定、可靠的数据传输。

3.灵活性:通信实例支持多种通信协议,可以根据实际需求选择合适的通信方式,满足不同应用场景的需求。

4.易于扩展:通信实例可以方便地实现与其他设备的集成与互联,为系统扩展和升级提供便利。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机串口通信的上位机和下位机实践串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。

大多数计算机包含两个基于RS232的串口。

串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。

同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。

尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

它很简单并且能够实现远距离通信。

比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

首先亮出C#的源程序吧。

主要界面:只是作为简单的运用,可以扩展的。

源代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO.Ports;using System.Timers;namespace 单片机功能控制{public partial class Form1 : Form{public Form1(){InitializeComponent();}SerialPort sp = new SerialPort();private void button1_Click(object sender, EventArgs e) {String str1 = comboBox1.Text;//串口号String str2 = comboBox2.Text;//波特率String str3 = comboBox3.Text;//校验位String str4 = comboBox5.Text;//停止位String str5 = comboBox4.Text;//数据位Int32 int2 = Convert.ToInt32(str2);//将字符串转为整型 Int32 int5 = Convert.ToInt32(str5);//将字符串转为整型 groupBox3.Enabled = true;//LED控制界面变可选try{if (button1.Text == "打开串口"){if (str1 == null){MessageBox.Show("请先选择串口!", "Error"); return;}sp.Close();sp = new SerialPort();sp.PortName = comboBox1.Text;//串口编号sp.BaudRate = int2;//波特率switch (str4)//停止位{case "1":sp.StopBits = StopBits.One;break;case "1.5":sp.StopBits = StopBits.OnePointFive; break;case "2":sp.StopBits = StopBits.Two;break;default:MessageBox.Show("Error:参数不正确", "Error"); break;}switch (str3){case "NONE":sp.Parity = Parity.None; break;case "ODD":sp.Parity = Parity.Odd; break;case "EVEN":sp.Parity = Parity.Even; break;default:MessageBox.Show("Error:参数不正确", "Error"); break;}sp.DataBits = int5;//数据位sp.Parity = Parity.Even;//设置串口属性sp.Open();//打开串口button1.Text = "关闭串口";textBox1.Text = Convert.ToString(sp.PortName) + "已开启!"; }else{sp.Close();button1.Text = "打开串口";groupBox3.Enabled = false;//LED控制界面变灰色textBox1.Text = Convert.ToString(sp.PortName) + "已关闭!"; }}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void Form1_Load(object sender, EventArgs e) {//初始化textBox1.Text = "欢迎使用简易的串口助手!";groupBox3.Enabled = false;//LED控制界面变灰色 groupBox6.Enabled = false;groupBox7.Enabled = false;groupBox8.Enabled = false;button3.Enabled = false;button6.Enabled = false;timer1.Start();try{foreach (string com in System.IO.Ports.SerialPort.GetPortNames()) //自动获取串行口名称boBox1.Items.Add(com);//默认设置comboBox1.SelectedIndex = 0;//选择第一个com口comboBox2.SelectedIndex = 4;//波特率4800comboBox3.SelectedIndex = 0;//校验位NONEcomboBox4.SelectedIndex = 0;//停止位为1comboBox5.SelectedIndex = 0;//数据位为8}catch{MessageBox.Show("找不到通讯端口!", "串口调试助手");}}private void timer1_Tick(object sender, EventArgs e){label6.Text = DateTime.Now.ToString();}private void button2_Click(object sender, EventArgs e) {try {if (button2.Text == "开启"){groupBox6.Enabled = true;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;button3.Enabled = true;textBox2.Text = String.Empty; button2.Text = "关闭";}else{groupBox6.Enabled = false;button3.Enabled = false;button2.Text = "开启";textBox2.Text = String.Empty; }}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void button3_Click(object sender, EventArgs e){groupBox6.Enabled = true;label7.Text = "已发送";if (textBox2.Text == "")MessageBox.Show("发送失败,请选择发送的数据!");elsesp.WriteLine(textBox2.Text);//往串口写数据}private void checkBox1_CheckedChanged(object sender, EventArgs e){try {if (checkBox1.Checked){checkBox1.Checked = true; checkBox2.Checked = false; checkBox3.Checked = false; checkBox4.Checked = false; checkBox5.Checked = false; checkBox6.Checked = false; checkBox7.Checked = false; checkBox8.Checked = false; label7.Text = "准备发送"; textBox2.Text = "1";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox2_CheckedChanged(object sender, EventArgs e) {try {if (checkBox2.Checked){checkBox1.Checked = false;checkBox2.Checked = true;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;label7.Text = "准备发送";textBox2.Text = "2";radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error"); return;}}private void checkBox3_CheckedChanged(object sender, EventArgs e) {try{if (checkBox3.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = true;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "3";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox4_CheckedChanged(object sender, EventArgs e) {try{if (checkBox4.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = true;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = false; label7.Text = "准备发送";textBox2.Text = "4";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox5_CheckedChanged(object sender, EventArgs e) {try{if (checkBox5.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = true;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = false; label7.Text = "准备发送";textBox2.Text = "5";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox6_CheckedChanged(object sender, EventArgs e) {try{if (checkBox6.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = true;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "6";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error"); return;}}private void checkBox7_CheckedChanged(object sender, EventArgs e) {try{if (checkBox7.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = true;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "7";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox8_CheckedChanged(object sender, EventArgs e) {try{if (checkBox8.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = true;radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = false; label7.Text = "准备发送";textBox2.Text = "8";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error"); return;}}private void button5_Click(object sender, EventArgs e) {try{if (button5.Text == "开启"){radioButton1.Checked = false;radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = false; checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;groupBox7.Enabled = true;button6.Enabled = true;textBox2.Text = String.Empty; button5.Text = "关闭";}else{groupBox7.Enabled = false;button6.Enabled = false;button5.Text = "开启";textBox2.Text = String.Empty;}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error"); return;}}private void button6_Click(object sender, EventArgs e) {label7.Text = "已发送";if (textBox2.Text == "")MessageBox.Show("发送失败。

相关文档
最新文档