串口数据通讯(精选9篇)
串口数据通讯 篇1
1 引言
Matlab是Math Works公司开发的一款科学计算软件, 不仅具有强大的科学计算功能, 还可以创建图形用户界面GUI (Graphical User Interface) , 实现用户和计算机之间交流的工具。
MATLAB将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法, 随着版本的提高, 这种能力还会不断加强。而且, 具有强大的绘图功能, 可以轻松的获得更高质量的曲线图。王战军[1]实现了串口数据的通讯, 并对数据进行了分析处理和图形化显示。
本文首先实现计算机与下位机的串口通讯, 采集下位机的距离和电压值, 储存在EXECL数据表中, 然后调用axes控件, 以距离为X轴, 电压为Y轴, 实现曲线显示。
2 串口数据的接收和存储
本文的应用程序是运用MATLAB的类 (SERIAL) 和M语言开发, 辅以MATLAB的GUIDE工具箱。整个传输的过程首先是初始化, 然后发送连接命令;连接成功后, 由PC机下发上传数据命令。如果没有收到下位机上传的数据, PC机下发继续上传数据命令;收到下位机上传的数据, PC机接收数据包, 并显示“正在传输”。接收完一个数据包后, 继续接收数据校验。校验数据没有问题, 存储数据, 并继续接收数据包, 直到结束。具体的应用软件流程图如图1。
2.1 串口通讯
Matlab提供了对串口进行打开、关闭、以及串口参数设置等操作的一系列函数。利用这些函数可以选择串口号、设置串口通信参数 (波特率、数据位、停止位、校验位等) 、进行中断控制、流控制[2]。
(1) 创建串口对象scom, 打开是“com1”端口。
(2) 打开串口对象scom。
fopen (scom) ;
(3) 设置串口对象scom通信参数
串口通讯参数包括波特率、奇偶校验、数据位、停止位等参数。串口通讯参数设置程序如下:
scom.baudrate=19200;%设置波特率, 缺省19200bit/s
scom.parity=’none’;%无奇偶校验
scom.stopbits=1;%停止位
scom.timeout=0.5;%设置读操作完成时间为1s, 缺省10s
scom.inputbuffersize=256;%输入缓冲区为32b, 缺省值为512b 32*8
scom.Bytes Available Fcn Mode=’byte’;%数据模式, 这里设置为byte
(4) 从串口对象scom读数据。
5) 关闭串口对象scom。
关闭串口scom, 并且释放串口对象占用的存储空间, 具体的程序如下:
fclose (scom) ;%关闭串口scom
delete (scom) ;%释放串口对象占用的内存空间
2.2 数据存储
Matlab软件可以实现对txt文件和Excel文件的输入和输出, 为了能方便、直观的观测数据, 本文把接收到的数据存储在Excel文件中。Matlab提供了对Excel文件操作的一系列函数。本文用于数据存储的函数是xlswrite。
具体的格式:
将矩阵M中的数据写入文件名为filename的Excel文件中, 且由range制定存储的区域, 由sheet指定了所要存储的sheet[3,4]。
本文通过上文方法接收串口的数据, 并存储在a1.xsl的文件中, 其中, 长度存储在sheet1的E2:E21中, 电压存储造sheet1的F2:F21中。具体的代码如下:
xlswrite (‘a1’, a, 1, ’E2:E21’) ;%存储长度
xlswrite (‘a1’, b, 1, ’F2:F21’) ;%存储电压
运行代码, 存储数据在Excel文件, 见表1。
3 曲线显示
利用Matlab GUI强大的绘图功能, 结合Excel软件, 读取Excel文件的数据, 绘制高质量的曲线图, 显示数据变化曲线。Matlab gui中的控件axes使用户的GUI不仅可以显示图片, 设置很多关于外观和行为的参数, 并且, axes还可以当做一块画布, 把我们需要的曲线绘制出来。
本文通过一个点击按钮来绘制数据曲线, 具体的代码在按钮的控件的Callback调函数下。
axes (handles.axes1) ;
xlabel (‘长度 (M) ’)
ylabel (‘电压 (V) ’)
运行代码, 可以得到数据曲线, 如图2.
4 结论
应用MATLAB强大的绘图功能与计算相结合, 很好地接收串口传过来的数据, 结合EXECL并对数据进行存储, 利用AXES控件显示数据曲线, 能够直观有效的观测距离和电压的数据变化曲线, 并且该界面友好, 结构简单, 性能可靠, 易于操作。
摘要:为实现下位机数据的接收和上位机数据曲线显示, 本文应用matlab GUI, 设计串口通讯程序, 并将接收的数据存储在Execl数据表中, 通过调用matlab的Axes控件, 实现了数据的曲线显示。
关键词:matlab GUI,Execl,串口通讯,Axes
参考文献
[1]王战军, 沈明.基于Matlab GUI的串口通信编程实现[J].现代电子技术, 2010, 320 (9) :38-44.
[2]南洋, 周静等.基于MATLAB的GUI的界面设计[J].石油仪器, 2008, 22 (6) :76-78.
[3]赵云鹏.MATLAB串口通信在数据采集中的应用[J].微计算机信息, 2006, 22 (1-1) :111-112.
[4]王国栋, 刘明熠, 杨际青.基于Matlab的磁滞回线实验串口程序设计[J].物理实验, 2004, 24 (3) :25-27.
串口数据通讯 篇2
网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它定义了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。一台设备上的第n层与另一台设备上的第n层进行通信的规则就是第n层协议。在网络的各层中存在着许多协议,接收方和发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息。网络协议使网络上各种设备能够相互交换信息。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。在局域网中用得的比较多的是IPX/SPX.。用户如果访问Internet,则必须在网络协议中添加TCP/IP协议。
TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议)协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的`标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。 对普通用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信。
IPX/SPX是基于施乐的XEROX’S Network System(XNS)协议,而SPX是基于施乐的XEROX’S SPP(Sequenced Packet Protocol:顺序包协议)协议,它们都是由novell公司开发出来应用于局域网的一种高速协议。它和TCP/IP的一个显著不同就是它不使用ip地址,而是使用网卡的物理地址即(MAC)地址。在实际使用中,它基本不需要什么设置,装上就可以使用了。由于其在网络普及初期发挥了巨大的作用,所以得到了很多厂商的支持,包括microsoft等,到现在很多软件和硬件也均支持这种协议。
NetBEUI即NetBios Enhanced User Interface ,或NetBios增强用户接口。它是NetBIOS协议的增强版本,曾被许多操作系统采用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI协议在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议。总之NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。所以建议除了TCP/IP协议之外,局域网的计算机最好也安上NetBEUI协议。另外还有一点要注意,如果一台只装了TCP/IP协议的WINDOWS98机器要想加入到WINNT域,也必须安装NetBEUI协议。
★ 离婚房产分割协议详解
★ 网络协议第二章链路层
★ 网络交换机?什么是网络交换机
★ 什么是网络拖延症
★ 档案详解
★ 网络是一把双刃剑作文
★ 异地协议离婚的程序是哪些
★ 详解建党节有哪些历史流程,建党节是纪念什么?
★ 网络求职 简历醒目是关键
串口数据通讯 篇3
【关键词】FPGA;串口通讯;RS-232-C通讯协议
【中图分类号】$972.7+6 【文献标识码】A 【文章编号】1672-5158(2012)09-0151-01
1、串口通讯
串口通信(Serial Communication),是指外设和计算机问,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。随着计算机系统的应用和微机网络的发展,通信功能越来越显得重要.这里所说的通信是指计算机与外界的信息交换。因此,通信既包括计算机与外部设备之间,也包括计算机和计算N2_问的信息交换。由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。对于那些与计算机相距不远的人一机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式.所以串行接口是微机应用系统常用的接口。由于串口通讯的只能一位一位的特殊性,因此在我们实际操作过程难免会遇到并行数据数据的传输问题,如果设计不好,很容易造成传输数据的不准确。本文提出一种基于FPGA的并行数据传输的串口通讯控制器的设计,很好的解决了这一问题,能够顺利、准确的完成数据通讯任务。
2、RS-232-0通讯协议
RS-232-C標准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(recommended standard)代表推荐标准,232是标识号,c代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有有EIA RSl422A、EIA RS-423A、EIA RS-485。这里只介绍EIARS-232C(简称232,RS232)。例如,目前在IBMPC机上的COMl、COM2接口,就是RS-232-C接口。
最为简单且常用的RS-232C连接方法就是3线连接法,即地、接收数据和发送数据3脚相连。这是因为收、发数据是时分的,二者不会同时传输。RS-232-C的串行总线在空闲的时候保持为逻辑“1”状态,即串行连接线的电平为-3--15V。当需要传输一个字符时,会发送一个逻辑为“o”的起始位,表示开始发送书库:之后就逐个发送数据位、奇偶校验位和停止位(逻辑1),每一次传输1个字符(可以设成5-8个比特)。由于任意两字字符对应瞬间的时间间隔是可变的,因此也成为异步格式。在RS-232-C协议中,可以设置数据的传输速率。除此之外,字符的位宽、奇偶校验位、停止位都可以被设置。字符可以为设置成5-8比特,奇偶校验位可以被除去;停止位为可以设置为1位、2位甚至1.5位。目前,大部分的处理器都集成了支持RS-232-C的通用异步收发器,辅助处理器和串行设备之间的通讯。这也为我们后续对于串口通讯控制器提供了有利条件。
3、并行数据的串口通讯控制器的设计
一般的串口通讯控制器的顶层模块是有三个子模块实现的,包括波特率发生器、接收模块以及发送模块。为了满足并行数据传输的需要,我们在原有控制器的基础上增加了一个模块:发送控制模块。这个模块的作用就是将数据进行处理、排队、等待数据传输,最终完成数据传输任务。改进串口控制器其结构如图所示:
发送模块的发送任务是由状态机完成的,其主要分为一下几部分:空闲状态、起始状态、等待状态、数据移位状态、发送截lL状态。当复位信号有效或者发送任务已经完成的时候,发送模块就处于空闲状态,等待发送指令(tx cmd)的到来,此时tx ready为高电平,表示随时可以接受外部的发送指令。当tx cmd有效时,发送模块进入起始状态,同时拉低tx ready,表明发送模块正在处于工作状态,并拉低比特线txd,给出起始位,然后跳转到等待状态。在等待状态,保持所有信号值不变,判断8个有效数据比特是否发送完毕,如果发送完毕跳转到发送停止状态,否则跳转至数据位移状态。在数据位移状态,发送模块将下一个要发送的数据移动到发送端口上,然后直接跳转至等待状态。最后进入发送截止状态,完成后自动进入空闲状态,并且将tx teady拉高,数据发送完成。
接收模块的接收任务也是由状态机完成的,其主要分为以下几部分:空闲状态、数据采样状态、检验停止位状态。空闲状态,用于检测接受数据链上的起始信号。系统复位以后,接受模块就处于这一状态,一直检测rxd数据是否从1变为O,一旦检测到起始位,立刻进入数据采样状态,采集有效数据。在此状态下,rx ready信号的值为1.数据采样状态,在此状态下,接受模块连续采样数据,直到接受完8个数据比特后,直接进入检测停止位。在此状态下,rx_ready信号的值为o。检测停止位,为了使接受模块的使用范围更广,本程序在这一状态等待一段时间后,直接跳转至空闲状态。
发送控制模块的任务也是由状态机完成的,分为以下几个部分:空闲状态、数据排队状态、等待状态、停止状态。空闲状态,用于检测接受模块是否接受到相应的传输数据命令。若接到传输命令,则进入数据排队状态。数据排队状态就是将所需要传输的并行数据每8位一组,传递到发送模块,然后进入等待状态。等待状态就是等待送入发送模块的数据发送完成,完成后,再进入数据排队状态,继续发送数据,直到数据发送完毕。停止状态就是数据发送完毕,这时控制模块直接进入空闲状态,等待下次数据传输。
波特率发生器就是一个时钟产生装置,根据不同的波特率,设置产生不同的时钟。由于设计比较简单,这里不复赘述。
4、设计验证
我们对上述思路设计进行了验证。我们向串口发送相应的指令(F),串口发送回我们相应的数据(数据等间隔,且间隔中间全是零)。结果截图如下:
串口通讯在水泥企业的应用 篇4
1 串口通讯在智能抄表上的应用
企业电能表抄表系统实现的方式可以通过采集瞬时功率做累计, 也可以采集脉冲输出, 通过串口通讯方式, 可做到计算机 (服务器) 远程采集显示与电能表计量数据一致。
1) 根据现场电能计量需要, 安装支持串口通讯的数字式智能电表。
2) 现场电能表整体规划, 根据区域划分成5个站点, 每个站点配备一台NPORT5410串口转换器, 有4个采集串口, 每个串口可以接一组电表。例如一组电表有10块, 在一个配电室, 电表到串口转换器使用RS485通讯方式, 可以将10块电表通讯线并联后, 只需要一根电缆接到串口转换器就可以实现本组电表的通讯。
3) 逐一检查电表设置, 地址、通讯参数必须与服务器设置一致。
4) 设置NPORT5410串口转换器, 包括IP地址、虚拟串口号等。
5) 配置服务器, 安装采集软件并安装电能表驱动程序, 设置现场电表参数, 包括地址、ID号、电表名称、通讯协议、波特率和串口号等。
6) 服务器和NPORT5410串口转换器通过网线接入同一个网络, 就可以正常使用了。
2 串口通讯在生产配料上的应用
配料秤由DCS控制时配料精度不高, 为进一步提高计量数据准确度和配料质量, 将配料系统改为串口通讯方式, 效果明显。
1) 由于配料仪表具有模拟输出和串口通讯功能, 在很少投资的情况下, 改变数据采集方式, 由DCS采集4~20mA信号, 改为配料仪表和计算机串口通讯, 现场 (水泥) 配料控制柜增加一台NPORT5210串口服务器, 可以分两个串口通讯, 7台配料秤仪表RS485信号线并联后接到串口服务器, 串口服务器通过网络与配料计算机相连。计算机安装配料软件、仪表驱动程序并完成对应的参数设置后就可以正常使用。其中2号生产线配料中控室与现场配料仪表距离较近, 信号通过RS485/RS232转换器与计算机对接。
2) 配料计算机数据与仪表完全一致, 没有误差, 中控室操作员更加准确地掌握现场数据, 配料精度和质量大大提高。配料计算机画面参数显示更齐全, 包括瞬时流量、累积量、重量信号、速度信号、运行状态和通讯状态灯参数, 实现了现场配料秤运行全方位的监控, 配合摄像镜头对现场监控, 配料水平大幅提高。
3) 现场采集数据更全面、更方便, 无需投资增加硬件, 通过软件设置和修改程序就可以根据需要采集各种数据和发送指令, 所有操作都是通过指令方式完成, 没有DCS系统中开关量和模拟量硬件的区分。
3 串口通讯在计算机数据采集上的应用
我公司投产较早, 现场仪器仪表配置相对比较落后, 有些过程参数采用模拟仪表盘显示的方式, 中控员操作监视不方便, 操作水平落后。如果改造成DCS系统需要大量资金投入, 而且改造难度很大。通过采用串口通讯的方式成功实现计算机对现场数据的采集, 集中监控和操作。
1) 现场仪表盘配置一块智能采集模块, 如DUT6000, 可以同时采集模拟量和开关量, 根据采集参数的数量合理选择模块通道点数。热电阻、热电偶和其他4~20mA信号等均可接入。
2) 设置DUT6000通讯参数, 包括地址、通道和波特率等参数, 使用RS485方式通过RS485/RS232转换器与计算机连接。
3) 计算机安装工控软件和设备驱动, 完成相应的软件设置。
4) 过程参数计算机采集显示, 具有报表、统计及趋势分析等功能, 便于中控员和管理人员对数据的分析判断。
4 常见故障
4.1 现场测量设备故障
仪表RS485通讯接口信号短路, 造成主线短路。以配料秤控制系统为例, 现场接线方式一般是将每块仪表RS485通讯并联, 然后引出一路主线去转换装置或计算机, 当一块或多块仪表接口线路短路, 会导致RS485所有线路短路, 通讯故障。如果仪表接口线路断路, 只是该仪表通讯故障, 不会影响其他仪表正常通讯。后一种情况比较直观、简单, 很容易处理。前一种情况相对比较复杂, 不易快速排查故障, 只能对多块仪表逐一检查, 才能找出发生短路问题的仪表。因此不宜多数量使用, 这种情况需要在每个终端设备RS485线路加装隔离装置, 每台设备出现短路故障, 自动断掉该信号, 以保证其他设备正常工作。
4.2 通讯线路故障
现场仪表和设备工作正常, RS485通讯线路故障。这种问题可能发生的原因有线路损坏和线路干扰等, 其中线路损坏容易检测;干扰问题比较复杂, 可能是高压电、感应电和磁场等外界干扰源影响, 需要在线路布设时注意避免, 如采用抗干扰性强的双绞线, 线路敷设避开动力线等措施。
4.3 现场仪表和设备通讯接口线路阻值不匹配
计算机串口RS485通讯标准阻值为120Ω, 其中包括电缆阻值, 所以应根据电阻要求, 合理匹配电阻, 达到正常通讯阻值要求, 否则会发生通信不畅故障。
5 使用效果和体会
1) 提高控制精度
在现有DCS配置的基础上, 对关键工艺设备参数进行数字化改造, 通过采用配有串口通讯接口的检测测量设备, 实现计算机对现场设备的数据采集及控制, 可提高控制精度。
如生料和水泥配料系统由DCS模拟量转换控制改造为串口通讯控制后, 一是现场元器件大大减少, 原来通过电气控制回路来控制设备开停, 模拟信号通过转换来给定或反馈, 精度差;而改用串口通讯控制后, 可以通过串口通讯方式直接控制设备开停, 减少DCS的控制环节, 提高控制精度和配料质量。
2) 提高计量数据准确度
改造前, 台时产量、煤耗和电耗等均采用DCS系统的数据, 由于模拟信号转换, 造成计算机统计的数据和现场实际数据总是存在一定误差。改造后, 数据准确度大大提高, 与现场计量设备数据一致。
3) 设备监视和保护更精准
串口数据通讯 篇5
在计算机通信中, 会经常遇到两台不具备以太网通信条件的计算机对同一数据库数据同时进行操作的情况。在这种情况下, 需要考虑能不能用其它更简便的方法把两台计算机连接起来, 以进行实时通信。本文针对这个问题进行了研究, 并在Microsoft Visual FoxPro 6.0环境下利用MSComm控件进行实验, 实现了上述功能。而且这种方法具有更低廉的价格, 更广泛的应用场合等优点。
2 通过计算机串口对数据库数据存取的实现原理
通过计算机串口对数据库数据存取的系统框图, 如图1所示。
串行通信接口 (RS232) 是计算机标准配置的通信接口, 利用串口进行数据通信、数据采集等是计算机的重要应用领域之一。所以, 在不具备以太网通信条件而无法用以太网线进行通信时, 可以将两个计算机的串口用双绞线直接连接起来, 实现计算机间的数据交换。利用双绞线进行通信成本低, 它的传输距离是30 m左右, 能够满足一般的办公要求。计算机串口各引脚的功能, 如表1所示。
为了保证数据传输的可靠性, 且也作为通信中的一种基本策略, 本方法中两台计算机的数据交换使用了硬件握手协议。串口线中各导线的连线, 如图2所示。
3 通过计算机串口对数据库数据存取需要的软件
3.1 Visual FoxPro软件
Visual FoxPro (VFP) 是为数据库设计和应用程序开发而设计的功能强大的面向对象的程序开发环境, 使用VFP可以减少编程人员的工作量, 简化界面设计过程, 从而有效地提高应用程序的运行效率和可靠性。更重要的是它支持串口通信。本文介绍的方法就是在Visual FoxPro 6.0平台上实现的。
3.2 MSComm控件
MSComm (Microsoft Communications Control) 是Microsoft公司提供的简化Windows操作系统下串行通信编程的ActiveX控件, 它为应用程序提供了通过串行接口收发数据的简便方法, 提供了一系列标准通信命令的使用接口。利用它可以建立与串口的连接, 并可以通过串口连接到其他通信设备, 发出命令, 交换数据以及监视和响应串行连接中发生的事件和错误。它可以在VB, VC, VFP等支持串口通信的可视化开发软件中直接使用, 省去了程序员花时间去了解较为复杂的API函数的麻烦。
3.2.1 处理通信的方式
MSComm控件处理通信的方式有两种:事件驱动方式和查询方式。
事件驱动方式是处理串行端口交互作用的一种非常有效的方法, 它类似于一般程序设计中的中断。当串口产生事件或发生错误时 (如接收到数据或发生某种变化) , MSComm控件会触发OnComm事件, 用户程序可捕获该事件并且进行相应处理。这种方法的优点是能自动判断通信的发生并触发中断响应, 而当通信未发生时不占用 CPU资源。由于这种优点, 事件驱动方式成为一种比较常用的方法。本方法采用的就是该驱动方式。
查询方式则是在用户程序中周期性查询MSComm控件的某些属性 (如InBufferCount, CommEvent) , 然后根据属性的变化进行不同的处理。在用户程序空闲较多时可用此方式。
3.2.2 常用属性
对MSComm控件的使用, 涉及到对它的属性的修改和设置, 见表2。限于篇幅, 本文只对使用到的, 也是常用的属性进行说明。
4 通过计算机串口对数据库数据存取的实验
4.1 连线
按照图1所示的电路, 用交叉好的串口线对两台计算机进行连接。
4.2 程序代码
该程序分客户端和服务器端两个部分。本程序是在VFP环境中实现的, 下面为实现方法的主要代码, &&后面为程序注释。
4.2.1 服务器端和客户端的公用代码
服务器端和客户端的Nnit事件代码为 (Ole1为添加的MSComm控件名) :
4.2.2 服务器端主要代码
在服务器端要先建立一个数据库:数据.dbf, 其中包含学号、姓名、成绩等三类数据。在服务器端的Init事件中要加入打开此文件的代码:use 数据.dbf
服务器端MSComm控件的OnComm事件代码为
4.2.3 客户端主要代码
客户端发送数据命令的程序代码为:
4.3 实验结果
用串口线正确地对两台电脑进行连接, 在VFP6.0中把以上代码加入, 创建好程序。用多个数据进行存取实验, 都成功地获得预期结果。
5 结论
本方法用的是串行端口, 而串行端口从个人计算机一开始就是它的一部分。因此个人计算机几乎都至少有一个串口。在办公室中如果不具备以太网通信条件, 又需要两台计算机进行实时通信的情况下, 可以考虑采用本文介绍的方法。
本方法的缺点是只能连接两台计算机, 克服的方法是使用RS485接口, 它可以连接更多的计算机, 且有更长的连接长度和更快的传输速度。
总之, 本方法具有简单、实用、安全可靠、开发速度快等优点, 值得推广。
摘要:提出了一种通过计算机串口实现一台计算机 (客户端) 对另外一台计算机 (服务端) 的数据库数据进行存取并显示的方法。并在Microsoft Visual FoxPro 6.0环境下利用MSComm控件进行实验, 实现了上述功能。实验结果证明, 此方法简单、实用、安全可靠、开发速度快。适用于不具备以太网通信条件, 但需要在两台计算机之间对数据库数据进行存取的场合。
关键词:计算机通信,串口,MSComm控件,数据库
参考文献
[1]王承君.自定义串口数据通信协议的分析与设计[J].计算机工程.2004, 30 (24) :192-194.
[2]Jan Axelson.串行端口大全[M].精英科技译.中国电力出版社, 2001, (5) :117.
[3]付华杰, 张遂南, 黄巾, 等.基于Delphi的串口通信程序设计方法[J].计算机技术与发展, 2007, 17 (10) :178-180.
[4]刘敬学, 费奇.一种实现VFP与Word动态数据交换的简便方法[J].计算机工程, 2005, 31 (11) :198-199.
[5]王建新, 严骏, 曾拥华.MSComm和多线程在数据采集系统中的应用[J].计算机应用与软件, 2006, 23 (4) :134-136.
[6]谭灏, 鄂卓茂.Visual Basie MSComm控件下的微机串行通信[J].计算机工程, 1999, 25 (7) :98-99.
[7]张凯, 刘伟军, 岳震, 等.利用VC++6.0实现温度采集模块的串行通信[J].机械设计与制造, 2005 (7) :149-152.
基于单片机的数据串口通信研究 篇6
1.1 关于数据串口通信
数据串口作为一种新的通信方式可以将通信技术与计算机技术的两者优点相结合, 所说的串口通信就是以数据的信号线、控制线以及底线等线路来与外部的设备和计算机相连, 然后在通过按位的方式将数据进行传输的通讯方式。同时, 在计算机的领域之中, 数据串口其实也是一种通用的通信设备的协议, 在仪器仪表的设备之中它也是一种通用的通信协议。简单来说, 数据的串口通信其实就是在串口上将字节进行发送和接受的时候按位进行, 数据线的数量少, 远距离通信中的成本可以大大的节省。
1.2 数据串口通信的主要参数
在进行串口的数据通信的过程中, 有五个主要的参数, 他们是:波特率、数据位、起始位、停止位和奇偶校验。当在两个端口之间进行数据通信的时候, 必须要与相应的参数相互匹配, 才能保证数据传输的正常顺利进行。
2 数据串口通信的方式
通常来说, 数据串口通信的方式主要有同步通信和异步通信两种。
2.1 同步通信方式
同步通信的方式是以一帧数据的起始位到终止位来作为一帧数据传输的开始与结束标志。同步通信方式的一个数据块所有输送字符连接在一起的, 当输送数据前面增加特殊的同步字符时, 它的起始信号是同步字符, 并且在数据块的后面增加相应的校验字符。同步通信方式中, 字符之间是没有间隔的, 因此, 同步通信的优点就是具备较高的通信效率, 通信过程中也会在几十到几千波特之间, 但是也存在一定的弊端, 就是由于同步通信方式在进行数据传输的双方要在时钟之上保持发送端与接收端的同步, 所以, 传输的过程就要求具备构造复杂的硬件设备。
2.2 异步通信方式
异步的通信方式就是以独立的字节而进行数据的传输, 并且每一个自己的前面都存在起始的信号, 后面的字节也有一个或多个终止的信号。在通信的过程中, 一帧数据是从起始信号到终止信号结束, 当数据进行传输时, 字节就会向后移动, 字节的起始位置也会从标志位到空白的一次迁移, 而在传输结尾的时候就使用一个或者多个终止信号, 通过这样的方式可以让传输线回到标准的状态。然后, 当这一个过程结束的时候, 数据传输就会像下一字节去发送。异步通信的优点是数据接送双方进行通信的时候, 双方的时间存在的误差可以起到缓冲的作用, 并且是允许较小的频率漂移的。异步通信的缺点就是当进行数据传输的时候, 会导致传输的效率降低, 因为传送的时候每个自己都会有一些标志信息作为附加, 这样就会大大的降低数据传输的速度。
3 基于单片机的数据串口通信研究
3.1 通信过程分析
在通常的情况之下, 首先要就进行发送行为, 也就是单片机在数据的寄存器中进行数据的写入, 然后在对数据进行传送的过程, 与此同时, 寄存器中的读取数据的过程在开始进行了, 整个单片机与串行接口在通信的过程中, 单片机会发出命令帧格式来对可编程的逻辑进行控制器的命令发出, 在命令结束的时候, 可编程逻辑控制器就会对单片机的命令及时的做出反应, 数据在通过串口通信协议发送信息的时候一般都是要转化为二进制的, 进而对数据的寄存器通过单片机来传送信息。
3.2 单片机显示设计
单片机现实设计的过程主要有两种方式, 即静态显示驱动和动态显示驱动。动态显示驱动是通过数码管来动态显示的, 在这个过程中, 并联起所有的选线路, 通过八位的I/O装置进行控制, 单片机的其他I/O口作为数码官位选线, 将显示的数字进行相应的解码译码, 通过对其的控制, 相应的数码管就会显示, 与之不匹配的就不会显示。静态驱动的显示方式通常是采用直流驱动的, 因此在实际过程中会有许多不便, 使用率不高。
3.3 矩阵式键盘接口
由于键盘中的案例需要较多的数量, 必须要通过合理的排列来减少I/O口的占有率, 一般情况下, 是采用矩阵式的键盘接口来确保每一条的水平线与垂直线可以在交叉处不直接的连通, 通过按键来加以连接作为合理的连接方式, 这样端口就可以以4*4的排列方式, 在这种排列方式之下, 会节省时间, 提高一倍的利用率。可这种方式在线路多的情况之下会有缺点, 就是在矩阵式的分布方式中, 当增加一条线便可以形成二十键的键盘, 当通过直接端口线, 使用矩阵方式可以起到好的效果。矩阵式的结构的效果很好但较为复杂, 识别度难度也大, 因此在确定矩阵键盘时按键的方式也是采用的行扫描法, 这种常用的按键识别方法就是在键盘是否下落做判断, 将全部行线到低电平, 对列线状态进行检测。当检测的过程中一旦发现电瓶较低, 则表示键盘的状态为按下, 当发现所有的列线为高电平, 则表示按键是按下的状态。当确认了是否按键之后, 就可以开始对具体的闭合按键确认了, 将行线置为低电平, 在确定某根行线位置是低电平后, 在对各列线的电平状态进行仔细检查。当发现这一列都为低电平时, 则证明按键的列线与低电平的行线交叉处是处于闭合状态的。
4 结语
正是由于单片机具有较高的集成度、便捷的嵌套功能以及较为低廉的价格, 使得其在如工业、商业等各个领域之中应用较为广泛, 通过单片机与PC串口进行数据传输, 可以有利于自动化生产的发展, 并且随着科学技术的不断研发, 单片机的功能在日趋完善, 更多的优势体现出来, 也为未来的更加智能化的方向做准备, 相信未来基于单片机的数据串口通信一定会更加的高效智能, 应用范围也会更加的广泛, 客户的满意度也会越来越高, 也会更大的促进我国经济的发展!
参考文献
[1]阮翔.基于单片机的数据串口通信研究[J].信息通信, 2015 (5) .
[2]李刘丹.单片机的数据串口通信研究[J].信息通信, 2015 (10) .
串口数据通讯 篇7
在工业控制与自动化监控系统中, 终端设备的数据采集传输是必不可少的。而串口由于通信方便, 编程灵活, 在工业控制中应用十分普遍。该文根据实际, 需要结合RS-232C串口协议标准, 设计并实现了一款能够同时接入多种不同设备的多串口数据采集软件, 使用的开发工具为Borland公司的Borland c++builder 6.0。
2 RS-232-C的基本参数设置和客户端的实现方法
2.1串口基本参数设置
RS-232-C接口主要分为DB9接口和DB25接口两种。其中, 普遍使用的主要是DB9接口, 而DB25接口除了一些特定的设备以外 (比如打印机) 基本上不再使用。
DB9接口在异步通信中的各种信号线功能:
1号引脚:载波检测DCE,
2号引脚:接收数据Rx D,
3号引脚:发送数据Tx D,
4号引脚:数据终端准备就绪DTR,
5号引脚:信号地SG,
6号引脚:数据准备好DSR,
7号引脚:请求发送RTS,
8号引脚:允许发送CTS,
9号引脚:振铃提示RI。
在异步串口通信中, 端口能在一根线上发送数据同时在另一根线上接收数据。主要用到3根信号线:信号地SG, 发送线Tx D, 接收线Rx D。而其它的信号线主要用于硬件握手, 都不是必须的。串口通信需要设置的通信参数为:波特率、数据位、停止位和奇偶校验。在两个进行通信的端口中, 所有的参数都必须匹配, 否则通信将不能正常进行。
波特率:表示串口通信速度的参数, 它表示每秒钟传送的bit的个数。最常用的标准波特率是300、600、1200、2400、4800、9600、19200、38400、57600和115200等, 该文中使用的一般RTU终端的波特率为9600, 卫星接收器终端的波特率为19200, 电台接收终端的波特率为1200。具体的数值需要根据实际情况而定。
数据位:衡量通信中实际数据位的参数。在串口通信中实际的数据位数值主要由所选择的通信协议来决定。一般的值为5、6、7和8, 该文中所有串口的数据位都为8。
停止位:表示单个数据包的最后一位。常用值为1, 1.5和2位。该文所有串口的停止位值都为1。
校验位:串口通信中一种常用的简洁数据检错方式。常用的校验方式有:偶校验 (even) 、奇校验 (odd) 、无校验 (noparity) 、space校验位总为0和mark校验位总为1。该文所有串口的校验位均为无校验 (noparity) 。
2.2数据采集客户端的实现方法
2.2.1串口通信程序的开发法
在Windows系统下开发串口通信程序的方法一般有以下几种:
1) 使用串口控件。1) 利用微软提供的串口通信控件MSComm, 可以非常简单地实现串行通信。使用MSComm实现串口编程十分简单, 但是存在实时性不高、高速通信时准确率较差和处理速度较慢等缺点;另外, 由于其本身存在一定的内存泄露, 在长期运行的系统中有时会造成系统崩溃[1]。2) 使用SPCOMM控件, 主要在Borland公司的Borland c++builder 6.0、Delphi7.0的快速开发环境中使用。
2) 利用Windows API函数进行串口程序设计, 具有很强的灵活性, 可以满足对实时性要求较高的需求, 但是要求软件开发人员对Windows程序的开发流程和串口开发对应的Windows API接口函数非常了解。
3) 利用C语言对UART内部寄存器的读出或写入操作, 实现相应的异步串口编程。这样实现的程序效率比较高, 但是要求软件开发人员对硬件电路的结构原理非常了解, 编程的难度比较高。
4) 利用第三方开发的串口开发包来实现串口通信程序开发, 开发方便简洁。但是有些开发包是需要付费购买的, 如Msmulticomms.dll, Msmulticomms.lib, Multicomms.h等;Remon Spekreijse编写了一个CSerial Port串口类, 则是一个可以免费使用的多线程的串口类。
2.2.2串行通信协议及开发步骤
串口的通讯协议主要分为两种:同步协议和异步协议。同步协议中, 不论单线程还是多线程方式中, API函数都会阻塞监听线程;而异步协议中, API函数会立即返回, 操作在后台进行, 避免线程的阻塞。
在开发串口程序的过程中不论采用同步方式还是异步方式, 基本的开发流程都是一样的, 都需要如图1所示的四个步骤来完成, 但是在实际的应用中一般采用的都是异步方式, 该文采用的也是异步方式。
3多串口客户端的实现
3.1多串口数据采集客户端开发流程
根据我们实际项目的需求, 我们的数据采集客户端软件需要同时接入多套RTU, 雨量计、温度传感器, 电磁流速仪等设备, 而且每套设备的通讯协议又各不相同, 单纯的使用MSComm控件或者SPCOMM控件都不能够满足使用要求。结合实际情况, 在实现的时候同时参考了SPCOMM和CSerial Port串口类的实现方法, 我们自定义一个能够满足我们实际需求的多线程多串口的串口类。
根据上文中对串口程序基本开发流程的论述, 以及我们实际项目的需求, 要满足这些要求, 那么我们的数据采集客户端软件必须具有多线程、多串口通信的能力, 由此可以得出我们的数据采集客户端软件的基本通信流程图如图2所示。在本文开发的客户端程序中串口可以扩展至10个以上, 能够同时接入硬件设备10台以上。
3.2多串口数据采集客户端的实现
根据通信流程图可知, 在启动客户端程序读取串口配置参数, 配置完串口后, 需要创建两个线程:一个读线程 (主线程) 和一个写线程。其中, 主线程负责处理每一个串口接收到的数据和各子线程的调度管理;读线程负责读取所有与设备连接的串口的数据;在本文所设计的数据采集客户端软件中, 写线程的任务比较轻松, 只是定时向召测设备发送召测指令即可, 因此写线程在开始创建初期就会被挂起, 当需要发送召测指令时才激活, 发送完毕召测指令后又被挂起, 以减少系统开销, 提高程序的执行效率[2]。
1) 定义串口类对象及相关函数和变量。
以下为客户端实现串口通信的关键代码:
2) 添加终端采集设备及对串口参数设置
本文设计的数据采集的客户端中一套设备对应一个串口, 设置完毕后所有的参数将会保存到参数数据库中对应的表里面, 下次启动程序时不用再重新设置参数就可以正常工作。其工作界面如图3所示。
如图3中所示, 在数据采集客户端中每一种设备对应一个驱动名称, 每套设备都可以设置自己独立的串口通信参数。添加新设备时, 新增注册一个串口并设置对应的参数即可;当有旧设备拆除后只需要选中其对应的串口删除即可。
4结束语
本文在参考已有控件和开源串口类的基础上, 结合实际项目要求开发一个新的串口类, 并以此作为基础设计开发了一套多线程多串口的数据采集客户端软件。目前该套软件已经良好的运行在多个自动化监控项目中。
摘要:在自动化监控系统中, 使用串口采集终端设备的数据是必不可少的。该文结合实际项目需求开发了一套支持多线程、多串口的数据采集客户端软件。
关键词:自动化监控系统,多线程,多串口
参考文献
[1]王苓, 苏维均.基于多线程技术的多串口通信[J].微计算机信息, 2006 (3S) :253-255.
串口数据通讯 篇8
1 GPS常用数据格式
GPS常用数据格式包括"$GPGGA"、"$GPGLL"、"$GPGSA"、"$GPGSV"、"$GPRMC"和"$GPVTG"。它们主要由帧头、帧尾和帧内数据组成, 数据帧结构不同, 帧头也不相同, 各帧均以回车符和换行符作为帧尾标识。通常情况, 我们所关心的定位数据如经纬度、速度、时间等均可以从"$GPRMC"帧中获取得到。如果和卫星通信正常, 可以接收到的数据格式"$GPRMC"帧结构如下:$GPRMC, <1>, <2>, <3>, <4>, <5>, <6>, <7>, <8>, <9>, <10>, <11>, <12>*hh
2 GPS数据提取方法
GPS数据提取方法分为两个步骤:第一步, GPS数据的捕获;第二步, GPS数据的解析。前者采用串口通信的方式把GPS接口与主机相连接, 利用VC++的MSComm控件实现对串口编程, 捕获GPS接收机所发送的数据;后者根据捕获的GPS数据帧格式中的帧头确定要给哪个数据帧进行数据的解析, 然后根据数据帧结构中的内容提取所需要的信息。
VC++6.0提供的MSComm控件可以通过串行端口捕获GPS信号接受机所发送过来的数据, 为应用程序提供串行通信的功能。MSComm控件串口通信编程的基本流程如图1所示:
现以"$GPRMC"数据帧解析为例, 首先针对串口通信下捕获的GPS数据, 判定帧头是"$GPRMC", 其次根据所需要的信息 (例如经纬度、时间、速度等) 确定需要提取该帧头后的数据帧中哪些字段的内容, 最后对所提取出来的内容进行恰当的变换, 服务于后续的具体应用。
3 GPS数据具体应用
本文是把提取出来的GPS数据应用于对航海中的船舶进行定位与导航, 将定位信息实时地传送到陆地上的监控服务中心, 并且在电子航海图上标注与显示。这样, 管理人员能够及时地掌握船舶行进的具体位置和了解航行的具体路线, 方便其对船舶的监控与管理。简单的客户端应用程序界面如图2所示:
4 结论
文章重点研究GPS数据中的"$GPRMC"数据帧格式, 可以利用VC++6.0的MSComm控件对串口通信中发送的GPS数据进行读取与解析, 能够实现对物体的准确定位与安全导航等功能。
参考文献
[1]李天文.GPS原理及应用[M].北京:科学出版社, 2010.
[2]刘大杰, 等.全球定位系统 (GPS) 的原理与数据处理[M].上海:同济大学出版社, 1996.
[3]顾必良, 王黎明, 韩焱.基于VC++的GPS数据采集与处理[J].微计算机信息, 2008 (13) .
[4]李现勇.Visual C++串口通信技术与工程实践[M].北京:人民邮电出版社, 2004.
基于多串口通讯技术的单片机应用 篇9
关键词:单片机,多串口,通讯技术,应用
1 单片机串口扩展设计
1. 1 单片机串口扩展的硬件总体设计。单片机串口扩展的硬件总体设计单片机串口扩展的硬件总体设计单片机串口扩展的硬件总体设计单片机与PC机或外设的串行通信一般采用RS232 /RS422 /RS485 总线标准接口。为保证通信可靠, 在选择接口时必须注意通信的速率、通信距离、抗干扰能力、电平匹配和通信方式。本文为了解决在单片机串行通信时遇到的串口问题, 以MCS51 系列单片机8751 为例, 进行串口扩展, 包括通过通信接口芯片8251 再扩展一个独立串口, 通过16 × 1 的多路切换器CD4067 实现一点对多点分时串口通信, 以及通过电平转换器MAX232, MAX488, MAX485 实现单片机与不同类型接口源供电, 驱动能力强。MAX232 芯片内置两个TTL到RS232 和两个RS232 到TTL驱动电路, 即具有两个发送器和两个接收器, 只需外置4 个011μF电容以供内部电路产生RS232 电压。MAX232 的发送器的发送输入为T1IN/T2IN, 发送输出为T1OUT/T2OUT; 接收器的接收输入为R1IN / R2IN, 接收输出为R1OUT / R2OUT。RS232 接口也普遍使用9 芯插头座, 在许多场合下仅将发送端TXD数据和接收端RXD交叉连接, 加上信号地GND共使用三根线, 只给出了一路TTL电平接口到RS232 电平接口的串行通信电路设计。
1. 2单片机与不同类型串口的通信扩展。电路的设计单片机与不同类型串口的通信扩展电路的设计单片机与不同类型串口的通信扩展电路的设计单片机与不同类型串口的通信扩展电路的设计单片机CPU8751 的串口是TTL电平, 要实现8751 与不同类型串口进行通信, 需要用电平转换器完成不同类型串口的转换, 才能成功进行通信。下面对单片机8751 与RS232/RS422/RS485 的串行通信进行接口扩展。
2 单片机多串口通讯的实现技术
2. 1 采用多串口单片机。目前只有少数单片机具有两个以上的串行通讯接口, 有些单片机与MCS - 51 系列单片机兼容, 新增加的串口与原有的串口在使用上基本相同。采用多串口单片机实现多串口通讯无需额外的软件硬件支持, 因而是最为理想的方案, 只是这些单片机不太容易买到, 价格也比较高。扩展串行通讯接口在基本系统上扩展串行通讯接口是另外一种可行的方案。目前对于MCS- 51 系列单片机只有intel8250 和intel8251 两种接口芯片可供选择。前者为DIP40 封装, 后者为DIP28 封装。两者在使用上有着很大的区别, 不能互换使用。扩展接口方法的缺点是增加了系统的复杂性, 扩展芯片的体积也嫌太大。
2. 2 采用多路模拟开关。该方法是将串口通过多路模拟开关分别与各路通讯线路连接, 适用于多路通讯分时进行, 没有交叉的情形。这种方法工作比较可靠, 技术上也比较容易实现, 只需利用软件控制多路模拟开关的切换即可。
2. 3 多单片机协同工作。由于单片机的价格低廉, 采用多个廉价的单串口单片机实现多路通讯可能比其它的方案成本更低, 技术上也比较容易实现。这种方案比较适合协议转换一类的工作, 这样每个单片机只需要负责一种协议数据的处理, 便于软件编程。
多单片机协同工作必然要涉及到各个单片机之间的数据交换, 这需要一些特殊的通讯技术支持。
2. 4 利用HSI和HSO功能。在现代的单片机应用中, 其具备的主要功能就是高速输入以及高速输出。在实际的应用过程中, 通常是将这些功能串行通讯。在数据接收的过程中通常会应用到高速输出功能, 应用高速输出功能首先是根据单片机的通讯波特频率确定定时时间, 然后在对检测接收数据的起始位用高速输出检测。如果检测到起始位时, 就对其进行中断, 在中断过后对读入的数据进行拼装, 在完成此项工作过后必须储存所有接收的数据。
在利用高速输出进行数据处理时, 可以通过向寄存器写入相关的命令, 然后就可以直接进行数据处理, 并且根据波特率对时间间隔进行处理。发送多位数据则对应多条命令, 也可以利用高速输出中断实现。
2. 5 软件模拟。对于不具备高速输入和高速输出功能, 又不能进行扩展的单片机, 软件模拟是一种增加串口的可行方案。软件模拟是利用软件模拟串行通讯的时序, 因此需要占用较多的软件资源。具体实现时可以利用定时器辅助进行, 下面将给出实现该方案的技术细节。
3 串行通讯的软件模拟实现
利用软件模拟发送的基本思想是, 首先根据通讯速率确定发送每一位的间隔时间, 然后根据数据格式和内容进行逐位操作。间隔时间的控制可以用软件延时, 也可以使用定时器。例如, 对于11. 0592MHz的系统时钟和9600 波特率, 对于MCS - 51 系列单片机, 可以计算出8 位定时器的定时时间常数初值。
若使用MCS - 51 系列单片机定时器0 的工作方式2 作为定时控制, 9600 波特率, 使用Pl. 0 作为发送线模拟串行通讯方式1。
软件模拟接收的基本思想是, 利用外部中断检测起始位, 一旦检测到起始位即进入中断服务程序, 在中断服务程序中延时半个数据位时间后再次检测端口状态, 以防止干扰的影响。检测无误后关闭外部中断, 同时打开定时器中断。在定时器中断服务程序中接收数据位并进行拼装, 接收完毕后即可关闭定时器中断。待主程序处理完接收数据后再打开外部中断以便开始下一个数据的接收。
若使用定时器0 的工作方式2 作为定时控制9600 波特率, 使用P3. 3 作为接收线模拟串行通讯方式1。
4 结束语