下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

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

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

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

杨芳林
2017-09-30 0人阅读 举报 0 0 暂无简介

简介:本文档为《基于C#的串口通信上位机和下位机源程序doc》,可适用于高等教育领域

基于C#的串口通信上位机和下位机源程序基于单片机串口通信的上位机和下位机实践串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线UniversalSerialBus或者USB混淆)。大多数计算机包含两个基于RS的串口。串口同时也是仪器仪表设备通用的通信协议很多GPIB兼容的设备也带有RS口。同时串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE定义并行通行状态时规定设备线总常不得超过米并且任意两个设备间的长度不得超过米而对于串口而言长度可达米。首先亮出C#的源程序吧。主要界面:只是作为简单的运用可以扩展的。源代码:usingSystemusingSystemCollectionsGenericusingSystemComponentModelusingSystemDatausingSystemDrawingusingSystemTextusingSystemWindowsFormsusingSystemIOPortsusingSystemTimersnamespace单片机功能控制{publicpartialclassForm:Form{publicForm(){InitializeComponent()}SerialPortsp=newSerialPort()privatevoidbuttonClick(objectsender,EventArgse){Stringstr=comboBoxText串口号Stringstr=comboBoxText波特率Stringstr=comboBoxText校验位Stringstr=comboBoxText停止位Stringstr=comboBoxText数据位Intint=ConvertToInt(str)将字符串转为整型Intint=ConvertToInt(str)将字符串转为整型groupBoxEnabled=trueLED控制界面变可选try{if(buttonText=="打开串口"){if(str==){MessageBoxShow("请先选择串口~","Error")return}spClose()sp=newSerialPort()spPortName=comboBoxText串口编号spBaudRate=int波特率switch(str)停止位{case"":spStopBits=StopBitsOnebreakcase"":spStopBits=StopBitsOnePointFivebreakcase"":spStopBits=StopBitsTwobreakdefault:MessageBoxShow("Error:参数不正确","Error")break}switch(str){case"NONE":spParity=ParityNonebreakcase"ODD":spParity=ParityOddbreakcase"EVEN":spParity=ParityEvenbreakdefault:MessageBoxShow("Error:参数不正确","Error")break}spDataBits=int数据位spParity=ParityEven设置串口属性spOpen()打开串口buttonText="关闭串口"textBoxText=ConvertToString(spPortName)"已开启~"}else{spClose()buttonText="打开串口"groupBoxEnabled=falseLED控制界面变灰色textBoxText=ConvertToString(spPortName)"已关闭~"}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidFormLoad(objectsender,EventArgse){初始化textBoxText="欢迎使用简易的串口助手~"groupBoxEnabled=falseLED控制界面变灰色groupBoxEnabled=falsegroupBoxEnabled=falsegroupBoxEnabled=falsebuttonEnabled=falsebuttonEnabled=falsetimerStart()try{foreach(stringcominSystemIOPortsSerialPortGetPortNames())自动获取串行口名称thiscomboBoxItemsAdd(com)默认设置comboBoxSelectedIndex=选择第一个com口comboBoxSelectedIndex=波特率comboBoxSelectedIndex=校验位NONEcomboBoxSelectedIndex=停止位为comboBoxSelectedIndex=数据位为}catch{MessageBoxShow("找不到通讯端口~","串口调试助手")}}privatevoidtimerTick(objectsender,EventArgse){labelText=DateTimeNowToString()}privatevoidbuttonClick(objectsender,EventArgse){try{if(buttonText=="开启"){groupBoxEnabled=trueradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsebuttonEnabled=truetextBoxText=StringEmptybuttonText="关闭"}else{groupBoxEnabled=falsebuttonEnabled=falsebuttonText="开启"textBoxText=StringEmpty}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidbuttonClick(objectsender,EventArgse){groupBoxEnabled=truelabelText="已发送"if(textBoxText=="")MessageBoxShow("发送失败请选择发送的数据~")elsespWriteLine(textBoxText)往串口写数据}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=truecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falselabelText="准备发送"textBoxText=""}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=falsecheckBoxChecked=truecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falselabelText="准备发送"textBoxText=""radioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=false}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=truecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falselabelText="准备发送"textBoxText=""}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=truecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falselabelText="准备发送"textBoxText=""}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=truecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falselabelText="准备发送"textBoxText=""}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=truecheckBoxChecked=falsecheckBoxChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falselabelText="准备发送"textBoxText=""}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=truecheckBoxChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falselabelText="准备发送"textBoxText=""}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidcheckBoxCheckedChanged(objectsender,EventArgse){try{if(checkBoxChecked){checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=trueradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falselabelText="准备发送"textBoxText=""}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidbuttonClick(objectsender,EventArgse){try{if(buttonText=="开启"){radioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falseradioButtonChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsegroupBoxEnabled=truebuttonEnabled=truetextBoxText=StringEmptybuttonText="关闭"}else{groupBoxEnabled=falsebuttonEnabled=falsebuttonText="开启"textBoxText=StringEmpty}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidbuttonClick(objectsender,EventArgse){labelText="已发送"if(textBoxText=="")MessageBoxShow("发送失败。请选择发送的数据~")elsespWriteLine(textBoxText)往串口写数据}privatevoidradioButtonCheckedChanged(objectsender,EventArgse){try{if(radioButtonChecked){labelText="准备发送"textBoxText=""checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=false}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidradioButtonCheckedChanged(objectsender,EventArgse){try{if(radioButtonChecked){labelText="准备发送"textBoxText="a"checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=false}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidradioButtonCheckedChanged(objectsender,EventArgse){try{if(radioButtonChecked){labelText="准备发送"textBoxText="b"checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=false}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}privatevoidradioButtonCheckedChanged(objectsender,EventArgse){try{if(radioButtonChecked){labelText="准备发送"textBoxText="c"checkBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=falsecheckBoxChecked=false}}catch(Exceptioner){MessageBoxShow("Error:"erMessage,"Error")return}}}}下位机程序:#include<REGH>#include<stdioh>#include<intrinsh>#defineucharunsignedchar宏定义#defineuintunsignedint宏定义ucharb用来接收数据存储ucharj=uinti=用来判断相应的子程序ucharLED=xfe作为流水灯的开始ucharLED=Xfe作为跑马灯的开始ucharLED=xfE作为二进制加法灯的开始ucharLED=XFF作为花样灯的开始ucharcodetable={xff,全灭xfe,xfd,xfb,xf,xef,xdf,xbf,xf,依次逐个点亮xfe,xfc,xf,xf,xe,xc,x,x,依次逐个叠加x,xc,xe,xf,xf,xfc,xfe,xff,依次逐个递减xe,xbd,xdb,xe,xe,xdb,xbd,xe,两边靠拢后分开xe,xc,x,x,x,x,xc,xe,两边叠加后递减x}全亮voiddelay(void)延时函数的声明voidliushuideng(void)流水灯的声明voidpaomadeng(void)跑马灯的声明voidhuayangdeng(void)花样灯的声明voiderjinzhideng(void)二进制加法灯的声明voidxianshi(uintj)显示程序voidinit(void)初始化函数voidmain(void){init()初始化while(){xianshi(i)显示}}voidinit(void)初始化函数的定义{SCON=xREN=允许串行接受状态串口工作模式TMOD|=x定时器工作方式PCON|=xTH=xFDbaud**reloadvalue、数据位、停止位。效验位无()TH=xFbaud**波特率、数据位、停止位。效验位无(M)TL=xFTR=开启定时器PS=把串口中断的优先级设为最高ES=开串口中断EA=开总中断IE=x}voiddelay(void)延时函数的定义{uchariucharms=while(ms){for(i=i<i)}}voidliushuideng(void)流水灯{P=LEDdelay()LED=LED<<循环右移位点亮下一个LED"<<"为左移位if(P==X){LED=xfe}xfe=}voidpaomadeng(void)跑马灯{P=LEDLED=crol(LED,)循环右移位点亮下一个LED此函数位库函数delay()}voidhuayangdeng(void)花样灯{P=tablejdelay()if(j==)j=}voiderjinzhideng(void)二进制加法灯{P=LEDdelay()LED}voidxianshi(uintj)调用相对应的程序{if(j==)P=xfe点亮第一个LEDif(j==)P=xfd点亮第二个LEDif(j==)P=xfb点亮第三个LEDif(j==)P=xf点亮第四个LEDif(j==)P=xef点亮第五个LEDif(j==)P=xdf点亮第六个LEDif(j==)P=xbf点亮第七个LEDif(j==)P=xf点亮第八个LEDif(j==)liushuideng()流水灯if(j==)paomadeng()跑马灯if(j==)huayangdeng()花样灯if(j==)erjinzhideng()二进制加法灯}voidcomisr(void)interrupt串口中断入口函数{ES=再中断进行处理程序的时候关闭串口中断b=SBUF将接收的数据存于变量中switch(b)分支语句进行判断{case'':i=break点亮第一个LED的赋值case'':i=break点亮第二个LED的赋值case'':i=break点亮第三个LED的赋值case'':i=break点亮第四个LED的赋值case'':i=break点亮第五个LED的赋值case'':i=break点亮第六个LED的赋值case'':i=break点亮第七个LED的赋值case'':i=break点亮第八个LED的赋值case'':i=break流水灯的赋值case'a':i=break跑马灯的赋值case'b':i=break花样灯的赋值case'c':i=break二进制加法灯的赋值default:break}RI=清除中断标志位ES=处理完中断程序再开启串口中断}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/29

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

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利