C#-串口设备对接

基本概况串口介绍串口 :是一种可以将接受来自cpu的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给cpu的器件。一般完成这种功能的电路,我们称为串行接口电路。串口通信(serial communications) :串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。波特率: 这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240bd,比特率为10位*240个/秒=2400bps。数据位: 这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。标准的ascii码是0~127(7位),扩展的ascii码是0~255(8位)。如果数据使用简单的文本(标准 ascii码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。停止位: 用于表示单个包的最后几位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢奇偶校验位: 在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。串口通信的接口标准: 标准有很多,有 rs-232c、rs-232、rs-422a、rs-485 等。常用的就是 rs-232 和 rs-485。串口通信使用的大多都是 db9 接口,如下图编辑
1 载波检测(dcd) 2 接受数据(rxd) 3 发出数据(txd) 4 数据终端准备好(dtr) 5 信号地线(sg) 6 数据准备好(dsr) 7 请求发送(rts) 8 清除发送(cts) 9 振铃指示(ri)
c#中的串口操作类****system.io.port.serialport 是 .net framework提供的操作串行端口的类,里面提供了一些方法、属性和和事件供开发者调用操作串口。** 常用字段**名称说明
portname 获取或设置通信端口
baudrate 获取或设置串行波特率
databits 获取或设置每个字节的标准数据位长度
parity 获取或设置奇偶校验检查协议
stopbits 获取或设置每个字节的标准停止位数
示例
// 建立串口对象private static serialport serialport;public void init(){ serialport = new serialport(); //串行波特率 serialport.baudrate = 115200; //每个字节的标准数据位长度 serialport.databits = 8; // 设置每个字节的标准停止位数 serialport.stopbits = stopbits.one; // 读、写 超时时间 单位毫秒 serialport.readtimeout = 500; serialport.writetimeout = 500; // 串口名称 serialport.portname = com1;}
常用方法名称说明
close 关闭端口连接,将 isopen 属性设置为false,并释放内部 stream 对象
getportnames 获取当前计算机的串行端口名称数组
open 打开一个新的串行端口连接
read 从serialport输入缓冲区中读取
readexisting 读取 serialport 对象的流和输入缓冲区中所有立即可用的字节
write 将数据写入串行端口输出缓冲区
示例
public void test1(){ // 判断串口是否打开 if (serialport==null || serialport.isopen) { return; } // 打开串口 serialport.open(); // 读取串口中的内容 serialport.readexisting() //如果串口处于打开状态,则关闭 if (serialport.isopen) { // 关闭串口 serialport.close(); } }常用事件名称说明
datareceived 表示将处理serialport对象的数据接收事件的方法
示例
public void test2(){ //设备监听回调 serialport.datareceived += new serialdatareceivedeventhandler(datareceivedhandler);}// 回调方法public void datareceivedhandler(object sender, serialdatareceivedeventargs e){ try { //解析内容 serialport sp = (serialport)msg; string content = sp.readexisting(); console.writeline(wx gzh: 程序猿知秋,+content); } catch (exception ex) { console.writeline(ex); }}

机房集中监控智能采集终端的产品结构及产品特点
Altium与微芯科技携手开发全新板级设计内容
比亚迪继动力电池之后开放汽车芯片板块
【超前发布】瑞芯微RK3568视频教程
机器学习中Kernel的秘密
C#-串口设备对接
基于电流复用技术和本振信号偶次谐的波高增益高线性度混频器设计
堡盟压力传感器的技术规格数据分析
安防行业竞争激烈,人工智能企业该如何切入安防行业?
设计将Java虚拟机移植到数字电视机顶盒
吉利正在研发全新一代混合动力系统
内置超低导通阻抗的5v3A同步整流ic U7712
如何解决我国制约产业发展的卡脖子难题
我国力争明年3月向国际提交传感器标准提案
传苹果秋季iPhone X停产 再推6.1英寸新机 售价800美元左右
立柱机器人码垛机的应用案例
Hesperos创建用于药物测试人体芯片模型
眼镜行业的实际生产能力和消费者的利益
Dialog半导体公司成AST Science优选供应商
机房监控分类_机房监控用途范围
s