通用串口通讯程序设计

通用串口通讯程序设计
通用串口通讯程序设计

通用串口通讯程序设计

作者:和光同尘版本:V1.0

做硬件开发近20载,花了近十年做基础开发,对硬件开发略知一二,接触的做国防/工业大项目的人才我就是和他们沟通中获取了很多思想;人生已过而立之年,不惑解疑,总想写点什么。从一线研发(做了4年),开发(3年),硬件开发主管(12年),算起来人生从不到弱冠之年(中专毕业)开始接触MCS51、AVR等8位处理器到ARM v7核、CoretxM 核的32位处理器,CPLD/FPGA、PLC…………啰嗦了!!

最近因为工作原因需要把一些自己感悟的记录下来,希望传递给入门的有心沉下心做基础健壮扎实的初学者。

正文

做嵌入式硬件开发一般都会用到通讯数据交互,这就涉及通讯协议/规约的设计。本文从基础的串口(RS232、RS485等)为模型进行讲解。

说道串口通讯,就是编写串口程序,简单的就是1个字节的发送,1个字节的接收,但这不能满足绝大多数实际工作业务需求,实际需要一串字节数据的交互,A发送,B接收……Z 接收;Z机……B机收到根据情况需要回复(ACK)A机,这个过程就叫交互双向通讯(本文不讨论多主机、1主机相对复杂通讯机制。)。这种通讯就需要提前设计好通讯的规约(大家约定好暗号——每个字节代表什么意思)。

接下来编写通信程序(发送/接收),如何写出一个健壮高效串口程序?是否健壮高效其实很大一部分取决于通讯接收程序的架构。

通讯程序编写依据是——通讯规约,通讯帧的设计。

●I类通用型:

||帧头段|===|数据段|===|校验码|===|帧尾段||

●II类时隙通讯:

||开始时隙T(T1T2T3T4T5T6)|=|功能码|=|数据段|=|校验码|=|结束时隙T(T1T2T3)|注意:时隙只是纯粹的前后两帧数据的间隔时间,这期间坚决不能有数据产生。

1.1I类通用型

◆帧头段

帧头段用于鉴别一串字节流中1帧数据起始位置,这个帧头段必须具有足够的特殊标识(易分辨)。

什么样的特殊标识可作为帧头?

根据个人经验:

①具有监测通讯波特率功能特点:0B01010101(55H)、0B10101010(AAH)或0B00000000(00H)、0B11111111(FFH);

②利用ASCII码如MODBUS ASCII规约以冒号‘:’(3AH)作为帧头。也可以采用ASCII ‘U’(55H)、‘@’(40H)等等

只要保证帧头字节数据内容,在所有通讯数据字节流中,除帧头有意为之而出现,那就是帧头。建议最好有两个字节及以上,这样数据出现与帧头一致的概率更加小,才做到独一无二的特殊性。

第3页共13页

第4页共13页

第5页共13页

1.2接收程序编写考虑因素

◆数据“功能码”指针

◆数据包指针

◆FIFO缓存读/写指针的互斥锁释放顺序

◆数据帧检查/校验

◆串口空闲

◆缓存数据帧存放时间/生命周期,超时识别

◆通讯数据吞吐量,(帧间隔时间,保证单片机有充分时间处理其他事情。)

帧头

只要保证帧头字节数据内容,在所有通讯数据字节流中,除帧头有意为之而出现,那就是帧头。建议最好有两个字节及以上,这样数据出现与帧头一致的概率更加小,才做到独一无二的特殊性。

怎么设计帧头?怎么保障唯一性性(尽量接近唯一,发生重复概率越小,唯一性越高,也就让接收数据识别性越高)。

数据域内的数据是很难满足(概率事件)不包含和帧头一样的数据不出现。

那么尽量避免除了帧头外其他部分也有这样的两个字节(简单通讯1BYTE帧头也可以)的帧头出现,那会出现什么问题?

两个字节帧头模式出现概率很低;

一个字节帧头模式出现概率很高。除非有对帧头特殊处理过程(补码替换(或取反模式),这又涉及到识别哪个或哪几个字节是用补码(或取反)替换的?这里不做特殊处理扩展。接着说普通简单做法——

第一步:找帧头

一般通讯数据帧都是一帧一帧发送,只要接收到前面的数据帧传输正确,即使下一帧的数据中有和帧头一样的数据(含帧头)也没有问题。

设置接收数据从开始就寻找接收到的第1个字节为帧头(if(data==SOF)判断(非单一时隙式通讯模式)。当获取到帧头后,设值准备接收进度计数器(寄存器内部值)第2个字节——功能码(或数据域长度);若不是帧头,接收进度计数器(寄存器内部值)不改变,继续执行接收进度寄存器为“寻找帧头”。

特例1:

串口空闲中断:帧头、帧尾都可以不用。建议,帧头保留,帧尾可以不需要。当单片机没有串口空闲中断时考虑,也可能有其他考虑,所以帧头得保留。

功能码

功能码主要用于说明该数据帧的功能,也可作为函数指针的索引,一个索引值代表了一个具体功能,据此可找到对应的功能函数。

比如:

设计一个函数指针数组,通过功能码进行索引,进而跳转到对应的功能函数执行程序。

(状态机也就这个原理。状态机多了PUSH\POP栈流程。)

设计功能码,必须考虑兼容性和扩展性,对数据帧的功能进行划分,坚决杜绝想到一个算一个,功能码也不能随意/随便/随心的安排,否则在以后增加数据帧的时候会很麻烦。

功能码长度:1个字节(取值范围:0‐255)

一般256种功能分类够用;不够就扩展到两个字节。

编码规则(建议):

高四位二进制作为父类编码,低四位二进制父类中子类。这样就可以将系统数据通信帧分为16个大类,每个大类下有16个可用的具体类,当你增加功能码的时候,就可以根据你的设计来确定属于哪个大类了,然后再插入进去。这样在管理、维护这些通信数据时你会发现很方便。

这个编码规范在ARM内核的中断系统和设计uCOS II任务优先级的时候都有使用到,在设计项目的通信协议的时候就是运用了这些思想。

数据域长度

数据域长度信息是非常关键的数据。(当然,也有特殊类型通讯协议/规约不需要.)数据域长度字段的值限定/定义数据域的字节个数信息。详见“表(1)、表(2)、表(3)”帧格式数据域长度与数据域关系划分。

案例之一:

接收程序流程刚好将帧头、功能码/判断完毕,然后中断程序莫名原因(非法指令)引起没有及时读取/释放串口BUF中数据,就会在获取数据时得到错误的数据,这个错误的长度数据可能导致创建的栈溢出,引发周边数据被篡改(注意所有字节变量定义区域选择,根据单片机RAM资源,合理分配变量所处位置,尽量局部变量定义在DATA、IDATA区域,程序执行效率也高些;数据栈定义在XDATA区域),数据栈溢出处理不好将是灾难性事件。在接收数据域的数据之前切记一定要判断数据域长度信息(空闲中断除外)是否合法,不合法的及时抛弃掉这帧数据,复位接收标识状态,准备新一帧的数据检查接入栈工作。

确保及时接收数据:

①采用DMA模式(单片机若有);

②设定串口通讯为最高有效优先级中断;

③接收程序在读取BUF数据时进可能先读取到临时/中转寄存器中,再做数据识别。

数据域

整个帧需要的最有用的数据。

接收/发送函数能处理各种类型的数据,建议参数类型定义成void*DataPtr是不错的选择。 校验码

一帧数据在传输过程可能会被干扰,使得接收端获取的数据是错误的。为保证一帧数据的准确性和完整性,就引入了校验功能,好的校验可以逆向还原一帧数据中的错误数据。

(密钥不在这里讨论!)

校验有很多方式,累加和校验、CRC校验等。

(奇偶校验只针对1个字节校验,一般不做2字节以上数据帧校验)。

累加和校验算法简单,单片机的运算资源占用量小,累加最后只取最低字节就行,不是高字节(至于原因后续再单独聊)。保存累加和的变量使用1个字节,简单好用。

CRC校验,算法比较复杂。CAC是对帧数据中每个字节的每二进制位(BIT)进行校验,具有很高纠错率,只要数据帧中有一个数据的1个二进制位发生变化,都能检查出错误。

这种校验方式占用单片机的运算资源量较大,目前有些单片机嵌入了硬件CRC模块(如stm32单片机)。

校验是通讯规约约定检验字节起点和结束位置。

建议:从帧头开始到数据域最后一个字节。也可以只检验数据域,这只是区别在单片机运算量问题。建议从帧头开始校验,能保证整个帧数据的准确性。

帧尾

前面说了,帧尾在空闲中断中可以不用,RXNE中断接收时其实也可以不用,当然也可以加上,好处就是当你用串口助手查看数据流时,可以观察出一帧数据是否发送完整了。

1.3串口数据传输流程

通讯规约发送一帧数据可以7字节或N字节。以10字节3A010102520B E41A0D00举例。 发送端

将要发送一帧数据:3A010102520B E41A0D,再发1字节任意数据。

接收端

。其它字节都抛弃。

应该接收到的正确完整一帧数据:3A010102520B E41A0D

串口数据一帧数据传输流程:

第9页共13页

附录:ASCII码对照表

C#串口通讯编程

C#中串口通信编程收藏 本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET 2.0提供了串口通信的功能,其命名 空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。 我们将使用标准的RS 232 C 在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手 或流控制器,而是使用无modem连接。 命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类。 创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: //create a Serial Port object SerialPort sp = new SerialPort (); 默认情况下,DataBits 值是8,StopBits 是1,通信端口是COM1。这些都可以在下面的属性中重新设置 : BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒 还有不少其它公共属性,自己查阅MSDN。 串口的硬件知识

在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦 开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样 的波特率和数据位数。 无猫模式 没有Modem模式的电缆只是简单地交叉传送和接收线。同样DTR & DSR, 和RTS & CTS 也需要交叉。 RS232针图 这里,我们三条线。互连2和3(一段的2pin连接3pin),连接两端的5pin。 [示例程序] 主程序 如果想使用默认属性,按“Save Status”按钮,如果想改变属性按“Property”。它会弹出下图:

1C#中串口通信编程教程

C#中串口通信编程教程 本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。我们将使用标准的RS232C在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手或流控制器,而是使用无modem连接。 命名空间 System.IO.Ports命名空间中最重用的是SerialPort类。 创建SerialPort对象 通过创建SerialPort对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: //create a Serial Port object SerialPort sp=new SerialPort(); 默认情况下,DataBits值是8,StopBits是1,通信端口是COM1。这些都可以在下面的属性中重新设置 : BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒 还有不少其它公共属性,自己查阅MSDN。 串口的硬件知识 在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样的波特率和数据位数。

串行通信接口标准详解

几种串行通信接口标准详解 在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。1969年,美国电子工业协会(EIA)公布了RS-232C作为串行通信接口的电气标准,该标准定义了数据终端设备(DTE)和数据通信设备(DCE)间按位串行传输的接口信息,合理安排了接口的电气信号和机械要求,在世界范围内得到了广泛的应用。但它采用单端驱动非差分接收电路,因而存在着传输距离不太远(最大传输距离15m)和传送速率不太高(最大位速率为20Kb/s)的问题。远距离串行通信必须使用Modem,增加了成本。在分布式控制系统和工业局部网络中,传输距离常介于近距离(<20m=和远距离(>2km)之间的情况,这时RS-232C(25脚连接器)不能采用,用Modem又不经济,因而需要制定新的串行通信接口标准。 1977年EIA制定了RS-449。它除了保留与RS-232C兼容的特点外,还在提高传输速率,增加传输距离及改进电气特性等方面作了很大努力,并增加了10个控制信号。与RS-449同时推出的还有RS-422和RS-423,它们是RS-449的标准子集。另外,还有RS-485,它是RS-422的变形。RS-422、RS-423是全双工的,而RS-485是半双工的。 RS-422标准规定采用平衡驱动差分接收电路,提高了数据传输速率(最大位速率为10Mb/s),增加了传输距离(最大传输距离1200m)。 RS-423标准规定采用单端驱动差分接收电路,其电气性能与RS-232C几乎相同,并设计成可连接RS-232C和RS-422。它一端可与RS-422连接,另一端则可与RS-232C连接,提供了一种从旧技术到新技术过渡的手段。同时又提高位速率(最大为300Kb/s)和传输距离(最大为600m)。 因RS-485为半双工的,当用于多站互连时可节省信号线,便于高速、远距离传送。许多智能仪器设备均配有RS-485总线接口,将它们联网也十分方便。 串行通信由于接线少、成本低,在数据采集和控制系统中得到了广泛的应用,产品也多种多样 一.RS-232-C详解 串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 在讨论RS-232C接口标准的内容之前,先说明两点: 首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C 标准与计算机不兼容的地方就不难理解了。 其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都

通用串口通讯程序设计

通用串口通讯程序设计 作者:和光同尘版本:V1.0 序 做硬件开发近20载,花了近十年做基础开发,对硬件开发略知一二,接触的做国防/工业大项目的人才我就是和他们沟通中获取了很多思想;人生已过而立之年,不惑解疑,总想写点什么。从一线研发(做了4年),开发(3年),硬件开发主管(12年),算起来人生从不到弱冠之年(中专毕业)开始接触MCS51、AVR等8位处理器到ARM v7核、CoretxM 核的32位处理器,CPLD/FPGA、PLC…………啰嗦了!! 最近因为工作原因需要把一些自己感悟的记录下来,希望传递给入门的有心沉下心做基础健壮扎实的初学者。

正文 做嵌入式硬件开发一般都会用到通讯数据交互,这就涉及通讯协议/规约的设计。本文从基础的串口(RS232、RS485等)为模型进行讲解。 说道串口通讯,就是编写串口程序,简单的就是1个字节的发送,1个字节的接收,但这不能满足绝大多数实际工作业务需求,实际需要一串字节数据的交互,A发送,B接收……Z 接收;Z机……B机收到根据情况需要回复(ACK)A机,这个过程就叫交互双向通讯(本文不讨论多主机、1主机相对复杂通讯机制。)。这种通讯就需要提前设计好通讯的规约(大家约定好暗号——每个字节代表什么意思)。 接下来编写通信程序(发送/接收),如何写出一个健壮高效串口程序?是否健壮高效其实很大一部分取决于通讯接收程序的架构。 通讯程序编写依据是——通讯规约,通讯帧的设计。 ●I类通用型: ||帧头段|===|数据段|===|校验码|===|帧尾段|| ●II类时隙通讯: ||开始时隙T(T1T2T3T4T5T6)|=|功能码|=|数据段|=|校验码|=|结束时隙T(T1T2T3)|注意:时隙只是纯粹的前后两帧数据的间隔时间,这期间坚决不能有数据产生。 1.1I类通用型 ◆帧头段 帧头段用于鉴别一串字节流中1帧数据起始位置,这个帧头段必须具有足够的特殊标识(易分辨)。 什么样的特殊标识可作为帧头? 根据个人经验: ①具有监测通讯波特率功能特点:0B01010101(55H)、0B10101010(AAH)或0B00000000(00H)、0B11111111(FFH); ②利用ASCII码如MODBUS ASCII规约以冒号‘:’(3AH)作为帧头。也可以采用ASCII ‘U’(55H)、‘@’(40H)等等 只要保证帧头字节数据内容,在所有通讯数据字节流中,除帧头有意为之而出现,那就是帧头。建议最好有两个字节及以上,这样数据出现与帧头一致的概率更加小,才做到独一无二的特殊性。

串行端口程序设计

串行端口程序设计 一、实验目的 了解在linux环境下串行程序设计的基本方法。 掌握终端的主要属性及设置方法,熟悉终端I /O函数的使用。 学习使用多线程来完成串口的收发处理。 二、实验内容 读懂程序源代码,学习终端I /O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。 三、预备知识 有C语言基础。 掌握在Linux下常用编辑器的使用。 掌握Makefile 的编写和使用。 掌握Linux下的程序编译与交叉编译过程 四、实验设备及工具 硬件:UP-CUP S2410 经典平台、PC机Pentium 500以上, 硬盘10G以上。 软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境 五、实验原理 异步串行I /O方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。

为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。 图2.3.1串行通信字符格式 图2.3.1给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: ●奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 ●帧格式错:一个字符从起始位到停止位的总位数不对。 ●溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。 每一种错误都会给出相应的出错信息,提示用户处理。一般串口调试都使用空的MODEM 连接电缆,其连接方式如下:

华南理工网络教育计算机接口技术随堂练习答案(DOC)

计算机接口技术随堂练习答案 第一章微机接口技术概述 1.1. 8086微处理器可寻址访问的最大I/O空间是()。 A.1KB B.64KB C.640KB D.1MB 参考答案:B 2. 2.CPU的控制总线提供()。 A.数据信号流 B.所有存储器和I/O设备的时序信号及控制信号 C.来自I/O设备和存储器的响应信号 D.前面B和C两项 参考答案:D 3. 3. CPU的数据总线提供()。 A.数据信号流 B.所有存储器和I/O设备的时序信号及控制信号 C.来自I/O设备和存储器的响应信号 D.地址信号流 参考答案:A 4. 4. CPU的地址总线提供()。 A.数据信号流 B.所有存储器和I/O设备的时序信号及控制信号 C.来自I/O设备和存储器的响应信号 D.地址信号流 参考答案:D 5. 5. CPU在执行OUT DX,AL指令时,CPU往控制总线上送出的有效信号是()。 A. B C D. 参考答案:A 6. 6. CPU在执行OUT DX,AL指令时,CPU往地址总线上送出的有效信号是()。 A.DX寄存器所存放的地址B AL寄存器所存放的数据 C D. 参考答案:A 7.7. CPU在执行OUT DX,AL指令时,CPU往数据总线上送出的有效信号是()。 A.DX寄存器所存放的地址B AL寄存器所存放的数据 C D. 参考答案:B M/,DT/必须是(

11.11. 8086CPU在作总线操作时,遇到READY=L后可插入()。 A.1个等待周期 B 等待周期个数由具体情况所定 C 2个等待周期 D. 3个等待周期 参考答案:B 12.12. 8086系统中,SP()。 A.只能指向奇地址单元 B 只能指向偶地址单元 C最好指向偶地址单元 D. 最好指向奇地址单元 参考答案:B 13.13. 8086 系统配置在最大方式比最小方式增加的一片专用芯片是()。 A.总线驱动器74LS245 B 总线锁存器74LS373 C 总线控制器8288 D. 中断控制器8259 参考答案:C 14.14. 8086/8088CPU读总线周期中,T1~T4期间一直保持有效的信号是()。 A.M/ B C D. ALE 参考答案:A 15.15. 外总线(E-BUS)又称()。 A.微机总线 B 通信总线 C 系统总线 D. 板级总线 参考答案:B 16.16.8086/8088CPU最大方式下,读写存储器控制信号是()。 A.、B和M/ C 、 D. , 参考答案:D 17.17. 8086/8088CPU读写奇存储体1个字节时,,A0是()。 A.1,0 B 0,1 C 0,0 D. 1,1 参考答案:B 18.18. 8086的读周期时序在()时钟周期时,数据总线上有一段高阻态(浮空状态)。 A.T1 B:T2 C:T3 D:T4 参考答案:B 19.19. 8086输出周期中必须提供高电平“1”的控制信号是()。 A.DT/B C M/ D.

Java串口通信编程指南

Java串口通信编程指南

1. 概述 在java中,利用Java Communication包可以操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,不过在XP下还能使用。另外,也可以用开源的Rxtx实现串口通信,这里仅以Java Communication包,在Windows 平台实现串口通信进行说明。 2. 前期准备 2.1. 下载Java Communication包 ?下载地址如下:https://www.360docs.net/doc/1114222276.html,/Jolt/javacomm20-win32.zip。 ?如果是非Windows平台,请到Sun网站选择其他版本下载。地址如下: https://www.360docs.net/doc/1114222276.html,/download/products.xml?id=43208d3d 2.2. 配置 ?解压缩javacomm20-win32.zip ?把win32com.dll拷贝到{JAVA_HOME}\jre\bin ?把comm.jar拷贝到{JAVA_HOME}\jre\lib\ext ?把https://www.360docs.net/doc/1114222276.html,m.properties拷贝到{JAVA_HOME}\jre\lib ?set CLASSPATH={JAVA_HOME}\jre \lib\ext \comm.jar;%classpath%

3. 实现过程 主要步骤包括: ?获得串口标识 ?打开串口 ?设置串行端口通讯参数 ?获取输入(出)流 ?进行读写操作 3.1. 获得串口标识 指定串口的端口号,生成串口的标识类的实例。 https://www.360docs.net/doc/1114222276.html,mPortIdentifier是通讯端口管理器,控制访问到通讯端口的中心类。一个应用程序首先使用CommPortIdentifier中的方法,通过相关的驱动去获取那些通讯端口是可用的并且选择一个端口便于开始。它包括如下功能: a. 通过驱动决定通讯端口是可用的。 b. 打开通讯端口为了I/O操作。 c. 决定端口的拥有者。 d. 解析端口拥有者的争夺。 e. 管理事件显示在端口拥有者的中的状态改变。 示例代码如下: 代码: 3.2. 打开串口 示例代码如下: 代码:

串行异步通信程序设计

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年秋季学期 《通信系统综合训练》课程设计 题目:串行异步通信程序设计 专业班级:通信工程(1)班 姓名:李银环 学号:11250134 指导教师:王惠琴 成绩:

摘要 在Windows环境下实现通信的方法主要有利用MSComm控件和直接用Windows API编程,软件采用Microsoft Visual C++ 6.0,利用MSComm控件编程相对来说更简单一些,而直接使用Windows API编程更灵活一些。 本次课程设计分析了串行异步通信的基本原理,在VC++6.0的环境下利用MSComm控件实现了两个PC机的COM口间的数据发送和接收。本文通过对COM1口进行初始化编程,以及对建立的工程中的每个对话框和按钮分别进行编程和设置,成功的实现了利用PC机的两个COM口进行异步通信,并能根据设置调整异步传行通信参数。 关键词:VC++6.0;MSComm控件;串行异步通信

目录 前言 (1) 第1章串行异步通信基本原理 (2) 1.1 串行通信协议 (2) 1.2 串口通信的基本概念 (3) 1.3 RS-232简介 (4) 第2章 VC++软件简介 (5) 2.1 VC++6.0简介 (5) 2.2 Microsoft Communications Control 控件 (6) 第3章串行异步通信系统分析 (7) 第4章串行异步通信系统设计 (8) 4.1建立工程 (8) 4.2 在程序中添加MSComm控件 (9) 4.3 初始化串口:设置MSComm控件的属性 (11) 4.4 发送数据 (12) 第5章串行异步通信程序调试 (18) 5.1 计算机串口设置 (18) 5.2 程序运行结果 (18) 参考文献 (20) 附录 (21) 致谢 (29)

计算机接口技术..

计算机接口技术 既然是在数据传输率相同的情况下,那么,又说同步字符传输速度要高于 异步字符传输其原因是()。 ? B. 附加位信息总量少 关于EPROM下面的说法中,正确的是()。 ? D. EPROM 是可改写的,但它不能作为随机读写存储 在异步串行输入/输出接口中,实现并行数据与串行数据的转换的主要功能部件是()。? A. 发送和接收移位寄存器 若同时锁存8254的0通道和1通道的状态和计数值,则其对应的回读命令字为()。? A. 1100 0110 8259中断屏蔽寄存储器的作用是( )。 ? B. 禁止外设向CPU发中断请求 8259中断屏蔽寄存储器的作用是( )。 ? B. 禁止外设向CPU发中断请求 ?在Intel 8255A中可以进行按位置位/复位的端口是()。 ? C. 端口C 在正常EOI方式下, 中断结束命令是清除( )中的某一位。 ? B. ISR 8237DMA控制器不能控制的传送是()。 ? B. 外设与外设之间传送 当多片8259A级联使用时,对于从8259A,级联信号CAS2~CAS0是()。 ? A. 输入信号 在微型机中,主存是由()组成。 ? D. RAM和ROM AD574采用的转换原理是()。

? A. 逐次逼近式 在正常EOI方式下, 中断结束命令是清除( )中的某一位。 ? B. ISR 针式点阵打印机的主要缺点是()。 ? C. 噪音大 当多片8259A级联使用时,对于从8259A,级联信号CAS2~CAS0是()。 ? A. 输入信号 8086对下列中断优先级响应最高的请求是()。 ? C. 内部软件中断 设异步串行通信的波特率为2400波特,若传送1KB的数据,每帧信息占10个数据位,则传送所需的时间为()秒。 ? B. 4.3 对于开关型设备的控制,适合采用的I/O传送方式是( )。 ? A. 无条件 当用 8259A中断控制器时,其中断服务程序执行EOI命令的作用是()。 ? B. 清除该中断服务寄存器中的对应位,以允许同级或低级的中断能被响应波特率是串行通信中的一项重要参数,以下说明中正确的是() ? B. 波特率是指单位时间内传送的二进制数的位数 异步串行通信的收/发双方无需用同一时钟源,只需用同一频率的收发时钟,就能保证可靠的通信。() 答案对 DMA方式的I/O操作与程序查询方式和中断控制式相比,用硬件控制代替了那里的软件控制,且无需经CPU传数,因此数据传送速度明显提高。() 答案对 静态随机存储器的内容可以永久性保存。()

RS-485串行接口标准

RS-485串行接口标准 1、平衡传输 RS-485数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。“使能”端是用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。 接收器也作与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV至6V之间。 2、RS-485电气规定 由于RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。 RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12k剑 鳵S-422是4k健; 旧峡梢运礡S-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中应用。 RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s RS-485需要2个终接电阻,其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输总线的两端。 在MCU之间中长距离通信的诸多方案中、RS-485因硬件设计简单、控制方便、成本低廉等优点广泛应用于工厂自动化、工业控制、小区监控、水利自动报测等领域、但RS-485总线在抗干扰、自适应、通信效率等方面仍存在缺陷、一些细节的处理不当常会导致通信失败甚至系统瘫痪等故障、因此提高RS-485总线的运行可靠性至关重要、 1 RS-485接口电路的硬件设计

通信接口有哪些_几种常见的通信接口

通信接口有哪些_几种常见的通信接口 通信接口(communicaTIon interface )是指中央处理器和标准通信子系统之间的接口。如:RS232接口。RS232接口就是串口,电脑机箱后方的9芯插座,旁边一般有|O|O| 样标识。 主要分类一般机箱有两个,新机箱有可能只有一个。笔记本电脑有可能没有。 有很多工业仪器将它作为标准通信端口。通信的内容与格式一般附在仪器的用户说明书中。 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。 随着电子技术的发展和市场的需求,各种各类的仪表越来越多地应用于各个不同领域的自动化控制设备和监测系统中,这要求系统之间以及各系统自身的各个组成部分之间必须保持良好的通信来完成采集数据的传输,先进的通信协议技术能可靠地保证这一点。 通信协议是通信双方的约定,对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守,实现不同设备、不同系统间的相互沟通。将通信协议合理地应用于新产品的开发中,不仅能使产品的设计更加灵活、使用更为便捷,还能扩大产品的使用范围、增强产品市场竞争力。 几种常见的通信接口1、标准串口(RS232)

C#中串口通信编程

本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET 2.0提供了串口通信的功能,其命名 空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。 我们将使用标准的RS 232 C 在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手或流控制器,而是使用无modem连接。 命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类。 创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: //create a Serial Port object SerialPort sp = new SerialPort (); 默认情况下,DataBits 值是8,StopBits 是1,通信端口是COM1。这些都可以在下面的属性中重新设置: BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒 还有不少其它公共属性,自己查阅MSDN。

串口的硬件知识 在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦 开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样 的波特率和数据位数。 无猫模式 没有Modem模式的电缆只是简单地交叉传送和接收线。同样DTR & DSR, 和 RTS & CTS也需要交叉。RS232针图 这里,我们三条线。互连2和3(一段的2pin连接3pin),连接两端的5pin。 [示例程序] 主程序

MFC串口通信编程详解解析

MFC串口通信编程介绍 主要介绍了用CreateFile(函数和WriteFile(函数读写串口的实例,以及设置串口属性的实例. 在工业控制中,工控机(一般都基于Windows平台经常需要与智能仪表通过串口 进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点.每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答. 在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活.其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活.下面只介绍API串口通信部分. 串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式.同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中, 虽然不会阻塞主线程,但是仍然会阻塞监听线程;而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞. 无论哪种操作方式,一般都通过四个步骤来完成: (1打开串口 (2配置串口 (3读写串口 (4关闭串口

一打开串口 Win32系统把文件的概念进行了扩展.无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的.该函数的原型为: HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile; ?lpFileName:将要打开的串口逻辑名,如“COM1”; ?dwDesiredAccess:指定串口访问的类型,可以是读取、写入或二者并列; ?dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0; ?lpSecurityAttributes:引用安全性属性结构,缺省值为NULL; ?dwCreationDistribution:创建标志,对串口操作该参数必须置为 OPEN_EXISTING; ?dwFlagsAndAttributes:属性描述,用于指定该串口是否进行异步操作,该值为FILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同步I/O操 作;

接口技术练习题

第五章 串行通信和可编程串行接口芯片 一·单项选择题 1. 与并行通信相比,串行通信适用于( ① )情况。 ① 远距离传送 ② 快速传送 ③近距离传送 ④ 传送信号要求高 2. 当芯片8251的=0 R W =O ,D /C =l 时,则( ① ) ①允许8251接受CPU 的命令字 ②8251向CPU 送状态字 ③CPU 往8251送数据 ④8251向CPU 送数据 3. 设串行异步通信时,数据传送的速率是400字符/秒,每个字符为12位二进制数据, 则传送的波特率是( ③ ) ① 12000 ②2400 ③ 4800 ④9600 4.串行接口芯片8251A ( ③ )。 ① 只能作异步传送 ②只能作同步传送 ③既能作异步传送又能能作同步传送 ④ 可作并行传送 5.串行接口中,并行数据和串行数据的转换是用( ② )来实现的。 ① 数据寄存器 ② 移位寄存器 ③ 锁存器 ④ A/D 转换器 6.串行异步通信的实现必须做到(③ )。 ①通信双方有同步时钟传送,以实现同步 ②一块数据传送结束时,用循环冗余校验码进行校验 ③以字符为传送信息的单位,按约定配上起始位、停止位和校验位 ④块与块之间用同步字符01111110隔开 7.在异步串行通信中若要传送扩展ASCII 码,则异步串行码字符格式第8位数据(④ )。 ① 不传送 ② 恒为0 ③恒为1 ④ 为有用数据 8.RS-232C 标准电气特性规定逻辑“0”电平为( ④ )。 ① 0~0.4V ② 0~0.8V ③ -3~ -15V ④ +3~+15V 9.在下列总线中,( ② )是一种串行总线接口。 ① PC/XT ② USB ③ PCI ④ ISA 10.在异步串行通信中,波特率是指( ① )。 ① 每秒钟传送的二进制位数 ②每秒钟传送的字节数 ③每秒钟传送的字符数 ④ 每秒钟传送的数据帧数 11. RS-232C 是一个( ③ )标准。 ① 片总线 ② 内总线 ③ 串行通信 ④电流环 12.8251A 异步工作,其数据格式中有8位数据位,1位偶校验位,2位停止位。要求每秒 传送1600个字符,需选用传送速率为( ③ )。 ①9600波特 ② 17600波特 ③ 19200波特 ④ 12800波特 13. 上题中若波特率系数等于16,则发送时钟或接收时钟频率是( ② )。 ①9.6 KHz ②307.2 KHz ③192 KHz ④153.6KHz 14. CPU 送给8251A 的并行数据,由( ① )串行发送给外设的. ①TXD 端 ②RXD 端 ③RXC 端 ④TXC 端 15. 下列不属于UART 通信错误标志的是(④)。 ①奇偶错误 ②帧错误 ③溢出错误 ④ 循环错误 16.同步串行通信与异步串行通信比较,以下说法错误的是( ④ ) ①异步通信按字符成帧,同步通信以数据块成帧

几种串口标准

RS-232,RS-485接口标准概述 在数据通信,计算机网络以及分布式工业控制系统当中,经常需要使用串行通信来实现数据交换。目前,有RS-232,RS-485,RS-422几种接口标准用于串行通信。RS-232是最早的串行接口标准,在短距离(<15M),较低波特率串行通信当中得到了广泛应用。其后针对RS-232接口标准的通信距离短,波特率比较低的状况,在RS-232接口标准的基础上又提出了RS-422接口标准,RS-485接口标准来克服这些缺陷。下面详细介绍RS-232,RS-422,RS-485接口标准。 RS-232串口标准是种在低速率串行通讯种增加通讯距离的单端标准。RS-232采取不平衡传输方式,即单端通讯。其收发端的数据信号都是相对于地信号的。所以其共模抑制能力差,再加上双绞线的分布电容,其传输距离最大约为15M,最高速率为20KB PS,且其只能支持点对点通信。 针对RS-232串口标准的局限性,人们又提出了RS-422,RS-485接口标准。RS-48 5/422采用平衡发送和差分接收方式实现通信:发送端将串行口的TTL电平信号转换成差分信号A,B两路输出,经过线缆传输之后在接收端将差分信号还原成TTL电平信号。由于传输线通常使用双绞线,又是差分传输,所以又极强的抗共模干扰的能力,总线收发器灵敏度很高,可以检测到低至200mV电压。故传输信号在千米之外都是可以恢复。RS-485/422最大的通信距离约为1219M,最大传输速率为10Mb/S,传输速率与传输距离成反比,在100Kb/S的传输速率下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。RS-485采用半双工工作方式,支持多点数据通信。RS-485总线网络拓扑一般采用终端匹配的总线型结构。即采用一条总线将各个节点串接起来,不支持环形或星型网络。如果需要使用星型结构,就必须使用485中继器或者485集线器才可以。RS-485/422总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。 A、提高485的稳定性 在各种现场中,485总线应用的非常的广泛,但是485总线比较容易出现故障,现在将485总线容易出现故障的情况并且可以排除这些故障的方法罗列如下: 1.由于485信号使用的是一对非平衡差分信号,意味485网络中的每一个设备都必须通过一个信号回路连接到地,以减少数据线上的噪音,所以数据线最好由双绞线组成,并且在外面加上屏蔽层作为地线,将485网络中485设备连接起来,并且在一个点可靠 接地。 2.在工业现场当中,现场情况非常复杂,各个节点之间存在很高的共模电压,485接口使用的是差分传输方式,有抗共模干扰能力,但是当共模电压大于+12V或者小于-9V时,超过485接收器的极限接收电压。接收器就无法工作,甚至可能会烧毁芯片和一起设备。可以在485总线中使用485光隔离中继器,将485信号及电源完全隔离,从 而消除共模电压的影响。 3.485总线随着传输距离的延长,会产生回波反射信号,如果485总线的传输距离 如果超过100米,建议施工时在485通讯的开始端和结束端120欧姆的终端电阻。

VC++串口通信编程

在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX 控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。本文我们只介绍API串口通信部分。 串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。 无论那种操作方式,一般都通过四个步骤来完成: (1)打开串口 (2)配置串口 (3)读写串口 (4)关闭串口 (1)打开串口 Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的原型为: HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); ?lpFileName:将要打开的串口逻辑名,如“COM1”; ?dwDesiredAccess:指定串口访问的类型,可以是读取、写入或二者并列; ?dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0; ?lpSecurityAttributes:引用安全性属性结构,缺省值为NULL; ?dwCreationDistribution:创建标志,对串口操作该参数必须置为OPEN_EXISTING; ?dwFlagsAndAttributes:属性描述,用于指定该串口是否进行异步操作,该值为FILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同 步I/O操作; ?hTemplateFile:对串口而言该参数必须置为NULL;

串行通信程序设计

课程设计任务书 学生姓名: xxx 专业班级: xxx 指导教师: xxx 工作单位: xxx 题目: 串行通信程序设计 初始条件: 用汇编语言编写程序,实现两台计算机之间的通信。 要求完成的主要任务: ①制作RS-232C通信线,并用它连接两台计算机; ②在计算机上用不同的颜色设置接收、发送区域; ③能设置发送、接收的数据长度,并能显示接收的数据; ④能选择通信校验方式(奇校验、偶校验或无校验); ⑤可以将接收的数据作为文件保存起来; ⑥撰写设计说明书及调试心得。 时间安排: 第一阶段: 查阅相关资料 第二阶段: 课程设计 第三阶段: 撰写课程设计报告 第四阶段: 课程设计答辩 指导教师签名:年月日系主任(或责任教师)签名:年月日

串行通信程序设计 1方案论证 首先,要能进行串行通信,串口是基础。使用RS-232 DB-9串口,实现基本通信时,只需将其5号线(地线)相连,2、3号线(接收、发送数据线)分别交叉相连即可。 根据要求,此程序可分为界面显示、参数设置、发送数据、接收数据和保存文件五部分。以下将从这五个方面进行方案论证。 1.1 界面显示 一般情况下显示器的屏幕为25行、82列,不妨把整个屏幕看成25*80个存储单元。屏幕坐上角存储单元的坐标为(0,0),即行号为0,列号为0。因此可通过设置不同的行号和列号定位屏幕上的存储单元。 用不同颜色设置发送和接收区域,即用不同颜色的空格填充发送和接收区域。这就需要调用BIOS系统中断,先置光标位置,再写当前字符和属性。这两项功能都可调用BIOS显示输出10H号中断服务程序实现,详见表1-1 10H号中断服务程序部分功能。 表1-1 10H号中断服务程序部分功能 IBM PC的标准显示器适配器,有单色和彩色之分,其中后者能以文本和图形两种工作方式,既可以显示黑白图形又可以显示有16种颜色的彩色图形。彩色文本方式下,设置不同的属性字节即可实现不同前景和不同背景的组合。例如,0111表示灰白,1110表示黄,设置灰白底黄字的属性为01111110,十六进制表示为7EH。 显示发送和接收两个区域的方案大体分两种,一是两个带状区域,一是两个并排的矩形。从美观的角度来讲,后者更胜一筹。显示标题、提示、设置等信息时,只需先将光标定到合

相关文档
最新文档