多个程序共享同一串口数据的实现

有过串口编程经验的人都知道,串口是独占方式使用的,即有且只有一个应用实例能对一个串口进行打开、读写操作。但实际应用中,我们可能要在多个应用程序中对来自同一个串口的数据进行分析。比如我们有一个GPS设备,用串口的方式将数据传到电脑上了,我们想在多个应用程序中使用这个GPS数据。利用虚拟串口(VSPD如图1)这款软件,可以虚拟出成对的串口。例如,物理串口为COM1,利用VSPD将另一个虚拟出的串口,如COM2和物理串口COM1配对,效果如图2所示。



图1 虚拟串口(VSPD)



图2 将物理串口和虚拟出来的串口配成对

经过这样的操作之后,由物理串口COM1发过来的数据,理论上可以在COM2口接收到(待验证)。但VSPD不支持将多对配对的虚拟串口同时连在一起,从而无法达到一个物理串口对多个虚拟串口的效果。这时我们可以用到另外一款很有用的软件,serial_splitter,这里用的v3.5破解版本,下载后(点击打开链接),若在win7下使用,请以管理员身份运行SSplitter.exe,否则找不到物理串口,笔者也是摸索了很久才成功,在此提醒一下大家。其界面如图3。serial splitter的功能比VSPD强大的多,不仅可以像VSPD那样,虚拟出配对的串口,还可以虚拟出单独的串口,可以虚拟出一对多、多对一的串口。下面简要介绍一下这款软件。



图3 serial splitter界面图

这里我们想要获取物理串口(如COM1)上的数据给多个应用程序使用,可以利用一个物理串口对应多个虚拟串口来实现。具体操作步骤如下:首先在上图空白区中的Serial Splitter上右键->选择Add buddle,这是出来了一个新的配对项New buddle,我们可以将其重命名为mybuddle,之后点击mybuddle前的“+”号,然后右键input->选择Add port->选择Add real serial port->选择真实存在的串口(如COM1)。到这里,数据源就设置好了,接下来设置数据输出端口。同理设置output,此时端口添加时,我们选择Add virtual serial port,这里添加几个虚拟的串口,如COM4、COM5、COM6、COM7……若虚拟串口本身不存在,则此操作会帮我们创建出虚拟的串口。

完成后的效果图如图4所示,完成了上述操作后,我们就可以不同的应用程序中分别打开虚拟的串口COM5、COM6、COM7……,读出来的数据当然也是来自于COM1接收的数据,就不用担心COM1被独占的困扰了。



  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用方法 -------- 1. 点击ComfoolerySetup.exe安装Comfoolery 2. 配置Comfoolery,详见“菜单说明”一节 3. 通告串口服务器IP、端口号 4. 客户端telnet连接串口服务器 菜单说明 -------- * File,仅含退出选项,一般用不到 * Edit,含Com Settings和TCP Settings两个选项 ** Com Settings,配置要共享串口信息 *** Com Port #,待共享串口号 *** Baud Rate,波特率 *** Parity,一般选择“None” *** Data bits,一般选择“8” *** Stop bits,一般选择“1” *** Flow Control,一般选择“None” ** TCP Settings,配置共享服务器端口 *** Read-only port number,当客户端连接此端口号时,只能读串口输出的信息,不能对串口进行写操作 *** Read/write port number,当客户端连接此端口号时,不但能读串口输出的信息,还可对串口进行写操作 * Help,一般用不到 客户端连接说明 -------------- 使用telnet工具,按服务器的IP加共享的端口号即可连接。 注意使用时,需要为telnet工具配置“Force character at a time mode”,否则telnet工具敲回车会多回显一次本次输入,使用效果不佳。 * SecureCRT,右击标签,选择“Session Options”,点击左侧“Category”->“Connection”->"Telnet",在右侧勾选“Force character at a time mode”,保存退出。 * Linux命令行,"telnet 服务器IP 端口号",敲ctrl + ],执行mode character,就可以进入单字符模式("character at a time" mode)。 其他说明 -------- 打开多个Comfoolery实例可实现串口共享
Vxworks培训资料 Vxworks培训资料全文共89页,当前为第1页。 Vxworks简介 最成功的实时操作系统 1981,Windriver,嵌入式咨询公司 TCP/IP,NFS工具集 WIND内核 1995,tornado集成开发环境 收购SDS、DIAB、pSOS Vxworks培训资料全文共89页,当前为第2页。 Vxworks操作系统是一个嵌入式实时操作系统(RTOS)。 Vxworks与其它实时OS一样,基于以下两个重要机制: * 多任务环境及任务间通信 * 硬件中断处理 Vxworks多任务内核完成的功能是:实时调度,任务间通信及互斥。 其它功能则作为系统库围绕在内核周围,它们可根据需要进行剪裁。 Vxworks与非实时系统的不同之处在于: Vxworks的优先抢占机制基于调度, Vxworks对外部事件的反应和处理快, Vxworks容量小并且可配置(微内核结构) VxWorks (1) Vxworks培训资料全文共89页,当前为第3页。 Vxworks提供了一套丰富的任务间通信机制,包括: 内存共享(Shared memory):简单的数据共享方法 信号量(Semaphore):用于基本的互斥及同步 消息队列(Message queues)和管道(pipe): 用于同一CPU上任务间消息的传递 套接口(Socket)和远程程序调用(RPC): 用于网络上任务间的通信 信号(Signal):用于异常处理 此外,Vxworks提供了三种共享内存的对象(shared-memory objects) 来实现运行在不同CPU上的任务间的高速同步和通信。 共享信号量(shared semaphores):有二进制,记数型两种 共享消息队列(shared message queues) 共享内存分区(shared-memory partitions):有系统类型和用户类型 VxWorks (2) Vxworks培训资料全文共89页,当前为第4页。 Tornado (1) Tornado提供了Vxworks系统开发的集成开发环境,其中Tornado 源代码编辑器包括下列特性: 标准文本控制能力 C和C++ 语法元素用不同颜色 调制集成:编辑窗口跟踪代码的执行 编译集成:项目管理将编译警告和编译错误 直接和编辑窗口中的相应代码对应起来。 Vxworks培训资料全文共89页,当前为第5页。 Tornado (2) Tornado集成开发环境由以下几个部分组成: Vxworks培训资料全文共89页,当前为第6页。 目标CPU:Vxworks 在其上运行 的一个单板计算机 Tornado PC主机:有一根串行线与目标机相连(初始化时主机作为终端用) Vxworks核二进制文件驻留在其盘上,核的下载及运行Tornado 工具 通过以太网口进行 Ethernet AGENT SERVER Vxworks培训资料全文共89页,当前为第7页。 Vxworks/Tornado开发方式 目标CPU: Vxworks 在其上运行 的一个单板计算机; Tornado PC主机:有一根串行线与目标机相连(初始化时主机作为终 端用),Vxworks核二进制文件驻留在其盘上,核 的下载及运行Tornado 工具通过以太网口进行。 Ethernet AGENT SERVER Vxworks培训资料全文共89页,当前为第8页。 Tornado开发环境 Vxworks培训资料全文共89页,当前为第9页。 Tonado开发环境(续) Vxworks培训资料全文共89页,当前为第10页。 Tornado开发环境(续) Vxworks培训资料全文共89页,当前为第11页。 Vxworks操作系统将一切与硬件有关的功能模块都放在BSP库中。该BSP库是硬件与软件的接口,处理硬件的初始化、中断处理与产生、硬件时钟与定时管理、局部和总线内存空间的映射、内存大小定义,等等。能够自行启动目标机、初始化目标机、能够与host通信以下载Vxworks核、把控制权交给Vxworks核来调用用户应用程序等功能。 板支持包(BSP) Vxworks培训资料全文共89页,当前为第12页。 Vxworks培训资料全文共89页,当前为第13页。 Tornado&VxWorks框架 Vxworks培训资料全文共89页,当前为第14页。 Vxworks 应用广泛的嵌入式实时操作系统 Vxworks培训资料全文共89页,当前为第15页。 VxWorks的整体构架 Hardware Independent Software Applications TCP/IP I/O System VxWorks libraries Wind microKernel File System Hardware
目 录 1 选题 1 1.1选题背景 1 1.2设计任务 1 2 整体通信设计 2 2.1 总体方框图 2 2.2 通信过程分析 3 2.3 通信方式的选择 3 3 硬件电路的设计 5 3.1 AT89C52单片机引脚及其说明 5 3.2 MAX232芯片引脚及其说明 6 3.3 DB9及其说明 7 3.4 数码显示、驱动电路及说明 9 4 PC端软件设计 10 4.1 用户界面设计 10 4.2 程序设计 10 5 原理总图 13 6 元器件清单 14 7 调试 15 7.1 调试过程 15 7.2 调试结果 15 8 小结和设计体会 17 9 单片机程序 18 参考文献 21 1 选题 1.1选题背景 在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等, 常常遇到计算机与外界的信息交换,即通讯。通信的基本方式可分为并行通信与串行通 信两种。 目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片 机往往只负责数据的采集和通信,而上位机通常以基于图形界面的Windows系统为操作平 台。 现阶段这种应用的核心便是数据通信,它包括单片机和上位机之间、客户端和服务器 之间以及客户端和客户端之间的通信,而在单片机和上位机之间的数据通信则是整个系 统的基础。单片机和PC的通信是通过单片机的串口和PC机之间的硬件连接实现。鉴于PC 机具有强大的监控和管理功能,单片机则具有快速以及容易控制的特点,在数据量不大 、传输要求不高的情况下,一般都采用给PC机配置的RS- 232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。 现今我国工业迅速发展的情况下,对工业中的计算机控制提出了较高的要求。比如在 常见的现场数据采集中,对各个采集点需要采集不同的数据,比如温度、湿度、压力、 照度,这就需要单片机对计算机发出的不同的指令做出不同的反应,并且返回相应的采 集到的数据。这就需要单片机和PC机进行双向数据通信。这也是本设计可以应用到的地 方之一。 1.2设计任务 在计算机控制系统中,不可避免的要采用多机进行通信。随着单片机在各个领域的广 泛应用,利用51实验板等单片机系统与PC机RS232串口相连,实现双向数据通信。 利用可视化程序设计编制串口调试软件,然后向串口发送"1"、"2"......"8"、"9"、 "0"等字符,实验板收到数据后通过数码管显示出来,同时会向PC机反馈显示成功的确认 信号,即在PC机串口调试软件的接收缓冲区内将显示"Display OK!"等字样。 2 整体通信设计 2.1 总体方框图 图2-1 总体方框图 (单片机) 图2-2 总体方框图 (PC端) 2.2 通信过程分析 单片机上电之后显示显示缓存区的数据,等待串行中断。串行中断过来的时候,先 判断是接受中断还是发送中断,如果是发送中断,那么把TI清零之后中断返回;如果是 接收中断,那么就进入处理子程序,在处理子程序里面,单片机把接收到的ASCII码形式 的数据转换为十六进制的数字,存放到显示缓存区,调用显示子程序在数码管上显示出 接收到的数据,再调用发送子程序给PC端软件回送一个确认显示的信号。 2.3 通信方式的选择 一、数据通信的传输方式:常用于数据通信的传输方式有单工、半双工、全双工和多 工方式。 A. 单工方式:数据仅按一个固定的方向传送。因为这种传输方式的用途有限,常用于串 行口的打印数据传输与简单系统间的数据采集。 B. 双工方式:数据可以实现双向传送,但不能同时进行,实际的应用采用某种协议实现 收发开关转换。 C. 全双工方式:允许双方同时进行数据双向传送,但一般全双工电路的线路和设备比较 复杂。 D. 多工方式:以上三种传输方式都是同一线路传输一种频率信号,为了充分的利用线路 资源,可通过使用多路复用器或多路集线器,采用频分、时分、或码分复用技术, 即可实现同一线路上资源共享功能,我们称之为多工传输方式。 二、串行通信的两种通信形式: A. 异步通信 在这种通信方式中,接收器和发射器有各自的时钟,他们的工作是非同步的,异 步通信用一帧来表示一个字符,其内容如下:一个起始位,紧接着是若干个数据位, B.同步通信 同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步传输中 每传输一帧字符都必须加上起始位和停止位,占用了传输时间的这一缺点。同步通信 常用于传输速率要求较高的场合。 三、 串行数据通信的传输速率: 串行数据传输率有两个概念,既每秒传送的位数bps(Bit per second)和每秒符号数-波特率(Band rate)。 四、本设计中串行通信的实现 (1)通信协议:PC机首先发送一个数据(以ASCII码形式表示的数字),单片机接收到 之后返回一个约定的数据(本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值