C开发串口通信实例及串口基础
一、串口通信简介
串行接口(串口)是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。
1。波特率:这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送960个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为960Bd,比特率为10位960个秒9600bps。
2。数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包时,实际的数据往往不会是8位的,标准的值是6、7和8位。标准的ASCII码是0127(7位),扩展的ASCII码是0255(8位)。
3。停止位:用于表示单个包的最后几位。典型的值为1,1。5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
4。校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。二、C串口编程类
从。NETFramework2。0开始,C提供了SerialPort类用于实现串口控制。命名空间:System。IO。Ports。其中详细成员介绍参看MSDN文档。下面介绍其常用的字段、方法和事件。1。常用字段:
名称
说明
PortName
获取或设置通信端口
BaudRate
获取或设置串行波特率
DataBits
获取或设置每个字节的标准数据位长度
Parity
获取或设置奇偶校验检查协议
StopBits
获取或设置每个字节的标准停止位数2。常用方法:
名称
说明
Close
关闭端口连接,将IsOpen属性设置为false,并释放内部Stream对象
GetPortNames
获取当前计算机的串行端口名称数组
Open
打开一个新的串行端口连接
Read
从SerialPort输入缓冲区中读取
Write
将数据写入串行端口输出缓冲区3。常用事件:
名称
说明
DataReceived
表示将处理SerialPort对象的数据接收事件的方法三、C开发串口实例
前台页面:
后台代码:
usingSystem;usingSystem。IO。Ports;usingSystem。Text;usingSystem。Windows。Forms;namespaceSerialPort{publicpartialclassSerialPort:Form{StringserialPortName;publicSerialPort(){InitializeComponent();}privatevoidForm1Load(objectsender,EventArgse){string〔〕portsSystem。IO。Ports。SerialPort。GetPortNames();获取电脑上可用串口号comboBox1。Items。AddRange(ports);给comboBox1添加数据comboBox1。SelectedIndexcomboBox1。Items。Count0?0:1;如果里面有数据,显示第0个comboBox2。Text115200;默认波特率:115200comboBox3。Text1;默认停止位:1comboBox4。Text8;默认数据位:8comboBox5。Text无;默认奇偶校验位:无}privatevoidbutton1Click(objectsender,EventArgse){if(button1。Text打开串口){如果按钮显示的是打开try{防止意外错误serialPort1。PortNamecomboBox1。Text;获取comboBox1要打开的串口号serialPortNamecomboBox1。Text;serialPort1。BaudRateint。Parse(comboBox2。Text);获取comboBox2选择的波特率serialPort1。DataBitsint。Parse(comboBox4。Text);设置数据位设置停止位if(comboBox3。Text1){serialPort1。StopBitsStopBits。One;}elseif(comboBox3。Text1。5){serialPort1。StopBitsStopBits。OnePointFive;}elseif(comboBox3。Text2){serialPort1。StopBitsStopBits。Two;}设置奇偶校验if(comboBox5。Text无){serialPort1。ParityParity。None;}elseif(comboBox5。Text奇校验){serialPort1。ParityParity。Odd;}elseif(comboBox5。Text偶校验){serialPort1。ParityParity。Even;}serialPort1。Open();打开串口button1。Text关闭串口;按钮显示关闭串口}catch(Exceptionerr){MessageBox。Show(打开失败err。ToString(),提示!);对话框显示打开失败}}else{要关闭串口try{防止意外错误serialPort1。Close();关闭串口}catch(Exception){}button1。Text打开串口;按钮显示打开}}protectedoverridevoidWndProc(refMessagem){if(m。Msg0x0219){设备改变if(m。WParam。ToInt32()0x8004){usb串口拔出string〔〕portsSystem。IO。Ports。SerialPort。GetPortNames();重新获取串口comboBox1。Items。Clear();清除comboBox里面的数据comboBox1。Items。AddRange(ports);给comboBox1添加数据if(button1。Text关闭串口){用户打开过串口if(!serialPort1。IsOpen){用户打开的串口被关闭:说明热插拔是用户打开的串口button1。Text打开串口;serialPort1。Dispose();释放掉原先的串口资源comboBox1。SelectedIndexcomboBox1。Items。Count0?0:1;显示获取的第一个串口号}else{comboBox1。TextserialPortName;显示用户打开的那个串口号}}else{用户没有打开过串口comboBox1。SelectedIndexcomboBox1。Items。Count0?0:1;显示获取的第一个串口号}}elseif(m。WParam。ToInt32()0x8000){usb串口连接上string〔〕portsSystem。IO。Ports。SerialPort。GetPortNames();重新获取串口comboBox1。Items。Clear();comboBox1。Items。AddRange(ports);if(button1。Text关闭串口){用户打开过一个串口comboBox1。TextserialPortName;显示用户打开的那个串口号}else{comboBox1。SelectedIndexcomboBox1。Items。Count0?0:1;显示获取的第一个串口号}}}base。WndProc(refm);}privatevoidserialPort1DataReceived(objectsender,SerialDataReceivedEventArgse){intlenserialPort1。BytesToRead;获取可以读取的字节数byte〔〕buffnewbyte〔len〕;创建缓存数据数组serialPort1。Read(buff,0,len);把数据读取到buff数组Invoke((newAction((){C3。0以后代替委托的新方法textBox1。AppendText(Encoding。Default。GetString(buff));对话框追加显示数据})));}privatevoidbutton2Click(objectsender,EventArgse){textBox1。Clear();清除接收对话框显示的数据}privatevoidbutton3Click(objectsender,EventArgse){StringStrtextBox2。Text。ToString();获取发送文本框里面的数据try{if(Str。Length0){serialPort1。Write(Str);串口发送数据}}catch(Exception){}}privatevoidbutton4Click(objectsender,EventArgse){textBox2。Clear();清除发送文本框里面的内容}}}
10种常见食物,吃完之后能让人心情变好1、香蕉香蕉含有生物碱,可以振奋精神和提高信心。而且香蕉是色胺酸和维生素B6的超级来源,这些都可以帮助大脑制造血清素,减少产生抑郁的情形。2、牛奶纽约的西奈山……
在蓝鸟和领动和菲斯塔和思域四款车之间怎么选择?能选这三样的基本是年轻人了,蓝鸟基本可以排出,外观争议非常大,如果选择蓝鸟个人觉得轩逸更好。思域是很好的选择,动力品质和文化沉淀都很可靠,唯一扰人的就是东本的工艺。……
云顶之弈毒瘤级无限奶盾冷门套路!完克永恩刺客法师巨魔大家好,我是兔子今天给大家分享一个外服磅单新上榜国服有位粉丝又进行了优化的套路恶心OP程度堪比当年拼多多小法这粉丝在王者局把把烂分2星就能吃分3星……
金海湖150万平方米露营地开放了原标题:金海湖150万平方米露营地开放了近日,在平谷区金海湖镇荒野7号营地,第二届金海湖营地文化消费季正式启动。本报记者甘南摄周六,平谷区环金海湖的十余块露营地再次……
最伤车的5大陋习,如何巧妙躲过?相信有车的朋友都喜欢和十分爱惜自己的车,看看有哪些行为最伤车频繁点火每次启动发动机打火时间不要超过三秒,第一次启动失败后也不要频繁反复的打火刚打着火就大脚给油……
这的确是几十年来实力最强的女篮了中国女蓝进步了很多!国人的骄傲!但两个高中锋还有待提高能力!2022年国际篮联女篮世界杯继续在澳大利亚悉尼进行,小组赛收官之战,中国女篮8155大胜欧洲劲旅比利时队,以4……
染发烫发知识染发:发原色深浅不一致对目标色的影响当发原色色度不一致时,就代表发质的受损程度不同。如发质呈多孔性,代表毛鳞片非常松散,因此头发内在的色素颗粒非常容易流失,受损发质内在体……
狗尾巴草是个宝,用它来煮水喝,或能帮助解决这4个问题狗尾巴草具有很强的生存能力和适应环境的能力,耐干旱,贫瘠,酸性或碱性土壤都可以生长,狗尾巴草种子适合在温度为1530的环境内发芽,往往借助风,灌溉浇水等方式进行传播,经越冬休眠……
三星将搭载两亿像素的新机三星GalaxyS23Ultra三星手机在近期也是有很多的新机爆料,近日就有关于三星GalaxyS23Ultra的消息爆料,这也会是一款商务机,所以定位和定价都是比较高的。在GalaxyNote产品线被……
汽车下乡政策各大企业纷纷响应随着国家发改委、工信部等十部门印发的《进一步优化供给推动消费平稳增长促进形成强大国内市场的实施方案(2019年)》(以下简称《方案》)开始执行,其中有六项政策都是与汽车消费相关……
央视女神董卿豪门梦破碎,靠山倒塌后该何去何从?央视的主持人各个都是经过精挑细选的,能被人记住的更是凤毛麟角。董卿凭借优雅的气质和出口成章的才华,被人们称为央视女神。她连续几年主持春晚,又在知名综艺里展现满腹才华,是许多人心……
宝俊5l0是国几排放标准?感谢邀请:宝骏510是国五排放标准。国五排放标准就是,国家第五阶段汽车污染物排放标准,国五排放标准与欧盟同步,相当于欧盟第五阶段排放标准。如何查证自己车的排放……