基于C#的串口通信上位机和下位机源程序.docx

上传人:b****8 文档编号:9847790 上传时间:2023-02-07 格式:DOCX 页数:27 大小:18.64KB
下载 相关 举报
基于C#的串口通信上位机和下位机源程序.docx_第1页
第1页 / 共27页
基于C#的串口通信上位机和下位机源程序.docx_第2页
第2页 / 共27页
基于C#的串口通信上位机和下位机源程序.docx_第3页
第3页 / 共27页
基于C#的串口通信上位机和下位机源程序.docx_第4页
第4页 / 共27页
基于C#的串口通信上位机和下位机源程序.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

基于C#的串口通信上位机和下位机源程序.docx

《基于C#的串口通信上位机和下位机源程序.docx》由会员分享,可在线阅读,更多相关《基于C#的串口通信上位机和下位机源程序.docx(27页珍藏版)》请在冰豆网上搜索。

基于C#的串口通信上位机和下位机源程序.docx

基于C#的串口通信上位机和下位机源程序

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

串口是计算机上一种非常通用设备通信的协议〔不要与通用串行总线UniversalSerialBus或者USB混淆〕。

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

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

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

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

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

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

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

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

主要界面:

只是作为简单的运用,可以扩展的。

源代码:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Te*t;

usingSystem.Windows.Forms;

usingSystem.IO.Ports;

usingSystem.Timers;

namespace单片机功能控制

{

publicpartialclassForm1:

Form

{

publicForm1()

{

Initializeponent();

}

SerialPortsp=newSerialPort();

privatevoidbutton1_Click(objectsender,EventArgse)

{

Stringstr1=boBo*1.Te*t;//串口号

Stringstr2=boBo*2.Te*t;//波特率

Stringstr3=boBo*3.Te*t;//校验位

Stringstr4=boBo*5.Te*t;//停顿位

Stringstr5=boBo*4.Te*t;//数据位

Int32int2=Convert.ToInt32(str2);//将字符串转为整型

Int32int5=Convert.ToInt32(str5);//将字符串转为整型

groupBo*3.Enabled=true;//LED控制界面变可选

try

{

if(button1.Te*t=="翻开串口")

{

if(str1==null)

{

MessageBo*.Show("请先选择串口!

","Error");

return;

}

sp.Close();

sp=newSerialPort();

sp.PortName=boBo*1.Te*t;//串口编号

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:

MessageBo*.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:

MessageBo*.Show("Error:

参数不正确","Error");

break;

}

sp.DataBits=int5;//数据位

sp.Parity=Parity.Even;//设置串口属性

sp.Open();//翻开串口

button1.Te*t="关闭串口";

te*tBo*1.Te*t=Convert.ToString(sp.PortName)+"已开启!

";

}

else

{

sp.Close();

button1.Te*t="翻开串口";

groupBo*3.Enabled=false;//LED控制界面变灰色

te*tBo*1.Te*t=Convert.ToString(sp.PortName)+"已关闭!

";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidForm1_Load(objectsender,EventArgse)

{

//初始化

te*tBo*1.Te*t="欢迎使用简易的串口助手!

";

groupBo*3.Enabled=false;//LED控制界面变灰色

groupBo*6.Enabled=false;

groupBo*7.Enabled=false;

groupBo*8.Enabled=false;

button3.Enabled=false;

button6.Enabled=false;

timer1.Start();

try

{

foreach(stringinSystem.IO.Ports.SerialPort.GetPortNames())//自动获取串行口名称

this.boBo*1.Items.Add();

//默认设置

boBo*1.SelectedInde*=0;//选择第一个口

boBo*2.SelectedInde*=4;//波特率4800

boBo*3.SelectedInde*=0;//校验位NONE

boBo*4.SelectedInde*=0;//停顿位为1

boBo*5.SelectedInde*=0;//数据位为8

}

catch

{

MessageBo*.Show("找不到通讯端口!

","串口调试助手");

}

}

privatevoidtimer1_Tick(objectsender,EventArgse)

{

label6.Te*t=DateTime.Now.ToString();

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

try{

if(button2.Te*t=="开启")

{

groupBo*6.Enabled=true;

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

button3.Enabled=true;

te*tBo*2.Te*t=String.Empty;

button2.Te*t="关闭";

}

else

{

groupBo*6.Enabled=false;

button3.Enabled=false;

button2.Te*t="开启";

te*tBo*2.Te*t=String.Empty;

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidbutton3_Click(objectsender,EventArgse)

{

groupBo*6.Enabled=true;

label7.Te*t="已发送";

if(te*tBo*2.Te*t==")

MessageBo*.Show("发送失败,请选择发送的数据!

");

else

sp.WriteLine(te*tBo*2.Te*t);//往串口写数据

}

privatevoidcheckBo*1_CheckedChanged(objectsender,EventArgse)

{

try{

if(checkBo*1.Checked)

{

checkBo*1.Checked=true;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="1";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidcheckBo*2_CheckedChanged(objectsender,EventArgse)

{

try{

if(checkBo*2.Checked)

{

checkBo*1.Checked=false;

checkBo*2.Checked=true;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="2";

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidcheckBo*3_CheckedChanged(objectsender,EventArgse)

{

try

{

if(checkBo*3.Checked)

{

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=true;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="3";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidcheckBo*4_CheckedChanged(objectsender,EventArgse)

{

try

{

if(checkBo*4.Checked)

{

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=true;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="4";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidcheckBo*5_CheckedChanged(objectsender,EventArgse)

{

try

{

if(checkBo*5.Checked)

{

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=true;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="5";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidcheckBo*6_CheckedChanged(objectsender,EventArgse)

{

try

{

if(checkBo*6.Checked)

{

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=true;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="6";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidcheckBo*7_CheckedChanged(objectsender,EventArgse)

{

try

{

if(checkBo*7.Checked)

{

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=true;

checkBo*8.Checked=false;

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="7";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidcheckBo*8_CheckedChanged(objectsender,EventArgse)

{

try

{

if(checkBo*8.Checked)

{

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=true;

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

label7.Te*t="准备发送";

te*tBo*2.Te*t="8";

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidbutton5_Click(objectsender,EventArgse)

{

try

{

if(button5.Te*t=="开启")

{

radioButton1.Checked=false;

radioButton2.Checked=false;

radioButton3.Checked=false;

radioButton4.Checked=false;

checkBo*1.Checked=false;

checkBo*2.Checked=false;

checkBo*3.Checked=false;

checkBo*4.Checked=false;

checkBo*5.Checked=false;

checkBo*6.Checked=false;

checkBo*7.Checked=false;

checkBo*8.Checked=false;

groupBo*7.Enabled=true;

button6.Enabled=true;

te*tBo*2.Te*t=String.Empty;

button5.Te*t="关闭";

}

else

{

groupBo*7.Enabled=false;

button6.Enabled=false;

button5.Te*t="开启";

te*tBo*2.Te*t=String.Empty;

}

}

catch(E*ceptioner)

{

MessageBo*.Show("Error:

"+er.Message,"Error");

return;

}

}

privatevoidbutton6_Click(objectsender,EventArgse)

{

label7.Te*t="已发送";

if(te*tBo*2.Te*t==")

MessageBo*.Show("发送失败。

请选择发送的数据!

");

else

sp.WriteLine(te*tBo*2.Te*t);//往串口写数据

}

privatevoidradioButton1_CheckedChanged(objectsender,EventArgse)

{

try

{

if(radioButton1.Checked)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1