基于windows api的串口通信方式、软件设计、终端通信协议

合集下载

双机串行通信的设计与实现

双机串行通信的设计与实现

双机串行通信的设计与实现设计流程如下:1.确定通信协议:在设计双机串行通信时,首先要确定通信协议,包括数据格式、数据传输速率、错误检测和纠错等方面。

常见的协议有RS-232、RS-485、USB等。

2.硬件设计:双机串行通信需要使用串行通信接口进行数据传输。

设计中需要考虑硬件的选型,如选择合适的串行通信芯片、电平转换电路、线缆等。

根据通信协议的要求,确定串行通信接口的电平、波特率等参数。

3. 软件设计:在设计双机串行通信的软件时,需要实现数据的发送和接收功能。

常见的操作系统如Windows、Linux等提供了串口通信的API函数,可以方便地实现通信功能。

软件设计包括以下几个方面:a)串口初始化:设置串口的波特率、数据位数、停止位数、校验位等参数。

b)数据发送:将需要发送的数据经过封装后发送给串口。

c)数据接收:通过串口接收数据,并解析数据格式。

d)错误检测与纠错:对接收到的数据进行错误检测,如使用奇偶校验、CRC等方式进行数据完整性检验,针对错误数据进行纠正或丢弃。

e)数据处理:根据具体应用场景对接收到的数据进行处理,如进行数据解析、存储、显示等。

4.通信测试与调试:设计完成后,需要进行通信测试与调试,确保双机串行通信的正确性和稳定性。

通过发送和接收数据进行测试,检查通信协议的实现是否正确,数据的传输是否准确。

实现双机串行通信的关键在于硬件设计与软件设计的合理结合。

合理选择适合的硬件设备,同时根据通信协议的要求进行软件开发,能够保证通信的可靠性和稳定性。

总而言之,双机串行通信的设计与实现需要确定通信协议、硬件设计与软件开发,通过测试和调试保证通信的正确性与稳定性。

它是计算机通信的重要组成部分,应用广泛。

Win32API 异步串口通讯

Win32API 异步串口通讯

使用Win32API实现Windows下异步串口通讯目录:1.异步非阻塞串口通讯的优点2.异步非阻塞串口通讯的基本原理3.异步非阻塞串口通讯的基础知识4.异步非阻塞串口通讯的实现步骤一,异步非阻塞串口通讯的优点读写串行口时,既可以同步执行,也可以重叠(异步)执行。

在同步执行时,函数直到操作完成后才返回。

这意味着在同步执行时线程会被阻塞,从而导致效率下降。

在重叠执行时,即使操作还未完成,调用的函数也会立即返回。

费时的I/O操作在后台进行,这样线程就可以干别的事情。

例如,线程可以在不同的句柄上同时执行I/O操作,甚至可以在同一句柄上同时进行读写操作。

"重叠"一词的含义就在于此。

二,异步非阻塞串口通讯的基本原理首先,确定要打开的串口名、波特率、奇偶校验方式、数据位、停止位,传递给CreateFile()函数打开特定串口;其次,为了保护系统对串口的初始设置,调用GetCommTimeouts()得到串口的原始超时设置;然后,初始化DCB对象,调用SetCommState() 设置DCB,调用SetCommTimeouts()设置串口超时控制;再次,调用SetupComm()设置串口接收发送数据的缓冲区大小,串口的设置就基本完成,之后就可以启动读写线程了。

三,异步非阻塞串口通讯的基础知识下面来介绍并举例说明一下编写异步非阻塞串口通讯的程序中将会使用到的几个关键函数CreateFile()功能:打开串口设备函数原型HANDLE CreateFile(LPCTSTR lpFileName, // 串口名称字符串;如:"COM1" 或"COM2"DWORD dwDesiredAccess, // 设置读写属性(访问模式);一般为GENERIC_READ|GENERIC_WRITE, DWORD dwShareMode, // 共享模式;"必须"为0, 即不能共享LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性;一般为NULLDWORD dwCreationDistribution, // 创建方式,串口设置必须设置此值;在这里"必须"为OPEN_EXISTING DWORD dwFlagsAndAttributes, // 文件属性和标志;在这里我们设置成FILE_FLAG_OVERLAPPED ,实现异步I/OHANDLE hTemplateFile // 临时文件的句柄,通常为NULL);说明:如果调用成功,那么该函数返回文件的句柄,如果调用失败,则函数返回INVALID_HANDLE_VALUE。

WIN32 API串口通信

WIN32 API串口通信

WIN32 API串口通信掌握串行通信API函数的用法是掌握串行通信编程技术的关键。

在Win32中,系统将串行口与文件统一了起来,对它们的打开、读写、关闭等操作都使用相同的API函数,但是它们之间又有差别,这些差别主要体现在API函数中部分参数的设置上。

有关通信的API主要包括打开串口、关闭串口、配置串口、设置缓冲区、设置超时、事件驱动、读串口、写串口等。

串口的打开和关闭1:串口的打开。

由于在Windows环境中,串口作为一种文件来使用,打开串口用打开文件同样的API函数CreateFile()。

函数原型为:HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); 其中几个参数的含义分别为:lpFileName指定文件名或设备名,串口通讯时,它必须是“COMx”,其中的“x”为串口编号,如第一个串口则为“COM1”;dwDesiredAccess为串口读写属性;dwShareMode指定该端口的共享属性,串行口不能作为共享设备,故参数值必须为0;lpSecurityAttributes为安全属性,对于串口应该为0 ;dwCreationDisposition指文件的创建模式,对于串口必须为OPEN—EXISTING;dwFlagsAndAttributes描述了创建文件的其它属性,对于串行口,有效的设置只能是FILE-FLAG-OVERLAPPED 或者0,分别表示异步或同步读写;参数hTemplateFile必须为NULL。

返回值:若成功,返回创建的句柄;否则返回INVALID—HANDLE—VALUE。

经典串口调试助手源程序及串口通信设置

经典串口调试助手源程序及串口通信设置

经典串口调试助手源程序及串口通信设置标题:串口调试助手之经典源程序及通信设置导言:串口调试助手是一种用于串口通信的调试工具,广泛应用于工业控制、测试等领域。

本文将介绍一种基于Windows平台的经典串口调试助手源程序及相关的串口通信设置,旨在帮助读者更好地了解该工具的使用和配置方法。

一、经典串口调试助手源程序1.开发平台:本程序采用C++ Builder 6.0开发。

2.功能概述:(1)串口设置包括设置串口波特率、数据位、校验位、停止位、流控、超时等参数。

(2)发送数据支持以字符串或Hex方式发送数据。

(3)接收数据实时显示串口接收到的数据,并支持数据格式设置。

(4)自动发送数据支持单次或循环发送,可设置发送时间间隔和发送次数。

(5)保存数据支持将接收到的数据保存为文本或二进制文件。

3.源程序结构本程序主要由以下几个模块组成:(1)Main Form:主窗体,包含图形界面显示和基本操作控件。

(2)Serial:串口类,负责串口相关操作,例如打开、关闭、设置参数、发送、接收等。

(3)SaveToFile:文件保存类,负责数据保存到文件中。

(4)Config:配置类,负责程序设置和读取。

(5)Hex:十六进制转换类,用于将字符串转换为Hex格式。

二、串口通信设置1.串口连接串口连接有两种方式:一种是通过RS232串口连接,需要将串口线插入串口,然后将串口线连接到目标设备;另一种是通过USB转串口连接,需要将USB转串口转接器插入计算机USB接口,然后将串口线连接到USB转串口转接器。

2.串口参数设置在使用串口调试助手前,必须先设置串口参数。

打开主窗体后,点击“串口设置”按钮,在弹出的窗口中设置串口的参数,包括波特率、数据位、校验位、停止位、流控和超时等参数。

其中,波特率是指通信时的数据传输速率,常用的有9600、19200、38400、57600、115200等。

数据位是指每次传输的数据位数,常用的有8位、7位、6位等。

串口通讯协议

串口通讯协议

串口通讯协议串口通讯协议是一种用于在计算机和外部设备之间进行数据传输的通信协议。

它是通过串行通信接口(串口)将数据以逐位的方式传输。

串口通讯协议通常用于连接计算机和各种外设,如打印机、调制解调器、传感器等。

1. 什么是串口通讯协议?串口通讯协议是一种规定了数据传输格式和通信规则的协议。

它定义了数据帧的结构、数据的编码和解码方式、数据的传输速率等。

串口通讯协议通常由硬件和软件两部分组成。

硬件部分包括串口接口的物理连接、电气特性以及数据线的连接方式。

串口通常包括发送线(TX)、接收线(RX)和地线(GND)。

这些线路通过串口线连接计算机和外设。

软件部分涉及到数据的传输和解析。

在串口通讯中,数据被分为连续的字节,并通过串行方式逐个传输。

发送方将字节一位一位地发送到接收方,接收方则按照事先约定好的规则解析和处理数据。

2. 常见的串口通讯协议2.1 RS-232RS-232是一种常见的串口通讯协议,它定义了串口的物理接口和电气特性。

RS-232通常使用DB9或DB25连接器,并且规定了数据线的连接方式、电平范围等。

2.2 UARTUART(Universal Asynchronous Receiver/Transmitter)是一种通用的异步收发器。

它是实现串口通讯的重要组件,负责将数据从并行格式转换为串行格式,并在发送和接收之间进行时序控制。

UART可以通过调整参数来适应不同的通信需求,如波特率、数据位、停止位和校验位等。

2.3 SPISPI(Serial Peripheral Interface)是一种同步串行通信协议,常用于连接微控制器和外部设备。

SPI使用4条线进行通信,包括时钟线、数据线、主从选择线和片选线。

SPI具有高速传输和多设备连接的优势。

2.4 I2CI2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接集成电路芯片之间的通信。

I2C使用两条线进行通信,一条是时钟线(SCL),另一条是数据线(SDA)。

基于Windows多线程环境下的串口通信

基于Windows多线程环境下的串口通信

第46卷 第3期 武汉大学学报(自然科学版) V ol.46 N o.3 2000年6月 J.W uhan U niv.(N at.Sci.Ed.) June,2000,373~375文章编号:0253-9888(2000)03-0373-03基于Windows多线程环境下的串口通信陈淑珍,石 波(武汉大学电子信息学学院,武汉430072) 摘 要:根据串口通信的基本原理,结合W indow s环境下的多任务并发机制,采用Window s的多线程技术来实现串口动态实时通信.有效地解决了在串口通信中的实时响应问题,降低了数据的丢失率,提高了系统的可靠性.同时提出了在Window s环境下实现串口通信的一般方法和步骤.实践证明,这种结合多线程技术的串口通信方法具有很强的实用性.关 键 词:多线程;串行通信;实时查询中图分类号:T P311.11 文献标识码:A 在实际的工程应用中,应用程序经常需要具备与外围设备进行通信的能力.在与串口,调制解调器,或是通过电话线进行通信的应用程序中,异步串行通信是一种重要的通信手段.在单任务的操作系统中,应用程序不能处理通信过程中的突发和并发事件,这种缺陷会引起数据丢失和不可靠性.而Window s基于线程的多任务并发机制使得应用程序能同时执行不同的任务,达到了降低数据丢失率,提高系统可靠性的目的.1 串口通信的原理和机制不论何种通信,背后都需要一个通信协议的支持.串口通信大多采用了美国电子工业协会(EIA)于1969年制定的RS-232标准[1].RS-232标准规定了数据终端设备和数据通信设备之间的连接和通信规则.该协议运用RTS(Request to Send)和(Clear to Send)信号来实现串口和外围设备的硬件“握手”,从而建立通信双方的连接和应答.在通信的连接和应答完成以后,双方就可以在误差允许范围内进行串行通信.由于Window s是一个基于消息驱动的操作系统,它的很多消息是从硬件反馈过来的.Window s 不允许程序开发人员直接和硬件打交道,在串口通信方面提供了一组API系统函数来管理串口,这对减低编程工作量,提高系统的稳定性和安全性都是很有好处的.在Win9x操作系统中,对串行通讯设备的操作如同文件的操作一样:串行通讯设备的打开、读写和关闭等操作均与文件操作相同,这和以前Win3x中的通信方式不同.由于w in9x系统中取消了串行通讯中的特定消息WM_COMM NOTIFY(外围通讯设备一有相应事件发生,该消息就会被传送),使得应用程序工作于“事件驱动”方式时,应创建专用的线程来监视有关的串行通讯设备.●打开和关闭串口.通信会话以调用CreateFile函数开始,为读、写操作打开串口.为实现串口的排他性访问,共享标志应设置成false,创建标志应为o pen_exiting,模板句柄应为null,同时返回串口句柄.通信会话通过调用CloseHandle函数来关闭串口占用的内存句柄,释放相应的串口资源.●初始化和配置串口.一旦串口处于打开状态,Window s就可以给串口分配接受和发送缓冲区.缓冲区的大小既可以缺省,也可以指定(调用SetupComm函数).配置串口需要设置串口通讯中特定事件的掩码(调用SetCom mM ask),只要串口中出现特定的消收稿日期:2000-02-22 基金项目:九五国家重点科技攻关项目(204980340)作者简介:陈淑珍(1946-),女,教授,现从事计算机网络与多媒体研究.息,相应的事件掩码就会返回.配置串口还需要设置串口通讯参数(调用SetCom mState(dcb)),例如波特率,数据位,校验位等,其中dcb是特有的参数数据控制模块.dcb可以预先通过GetCo mmState得到缺省值.●读、写串口.在读写串口之前,一定要进行超时设置(调用SetCo mmT imeOuts),因为在读、写过程中可能发生许多不可预见的事件.通过设置超时,能在通讯过程中避免意外发生,保障通讯的安全性.对串行的读写操作(调用ReadFile和WriteFile)就如同对文件的操作一样,在读写串口前需要清理串口通信中的错误信息,并返回当前串口设备的状态.Window s为串口通讯提供了异步I/O的通讯模式.当串口是通过重叠机制打开时,串口就具备了异步I/O的功能,使得应用程序可以后台读、写串口,在前台处理其他任务.这对节省CPU 的运行时间,提高系统的工作效率很有好处.●事件驱动响应.由于Window s是一个基于消息驱动的操作系统.它的许多事件来源于硬件设备,Window s设备驱动程序只是将这些事件进行处理,转换成相应的消息放到Windo w s消息队列中去.由于W in9x取消了串口通讯中的专有消息响应WM_COM M NOTIFY,使得用户进程需要自觉查询串口状态,并对相应事件作出响应[2].Win32API 提供了两个函数来完成这一功能:SetCom mM ask(hcomm,dwM ask),设置串口通讯中特定事件的掩码.不同的掩码对应不同的事件消息.WaitCom mEvent(hComm,&dw Event, &overlapped),在用SetComm Mask指定特定事件以后,就可以调用该函数来等待事件发生.一旦串口有事件发生,参数dw Event会返回相应事件的掩码,用户进程就可以作出相应的处理.同时WaitCom mEvent可以在同步或异步模式下运行.在异步模式下,WaitCommEv en在后台监视串口的状态,直到有事件发生返回(推荐采用).在实际的应用中,这一过程是用专有的监视线程来完成的.监视线程在捕获到特定串口事件以后,应通知主线程作出相应的处理.2 Windows的多线程技术多进程、多线程是Window s等占先式操作系统的一个重要特征.由于有了这种技术支持,使得提高系统的效率,完成多任务并发处理成为可能.进程是应用程序的执行实例,每个进程都具有自己私有的虚拟地址空间、代码、数据和其他系统资源.线程是进程中的一个独立的执行路径[3],一个进程可以拥有多个线程,它们共享同一进程的虚拟地址空间和进程资源.由于共享进程的虚拟地址空间,使得线程间的切换和通信非常便捷、迅速,适合应用程序并发处理的要求.在串口通信过程中,接收的通信请求往往是突发性的.而Windo ws在接收到串口通信请求后,只是和通信缓冲区进行交互,并不给应用程序反馈相应事件消息.应用程序必须自觉查询串口通信状态并作出相应的处理,基于Window s多任务环境下的线程技术,对于解决上述问题是一个很好的途径.操作系统会将CPU时间划分成许多时间片段,并按一定的优先级将时间片段分配给各个线程.各线程在各自的时间片段内共享CPU,从而实现了微观上轮次执行,宏观上并发运行的多任务机制.用户可以根据实际需要创建多个线程来完成系统功能.在支持多线程机制的操作系统中,多线程结构一般分为两个层次来实现,一是工作者线程,一是用户界面线程.工作者线程只具备相应的线程数据结构,对外表现为函数调用;而用户界面线程是线程执行的实体,是系统内核调用的单位,拥有独立的消息循环,两者有着明显的区别.多线程应用系统的设计包含创建线程、线程同步、终止线程3部分,其中关键是要处理好线程之间的同步问题,以避免线程之间出现资源竞争而引起几个线程甚至整个系统的死锁.通常线程中会有访问共享数据区的需求,由于线程运行的时间是不确定的,变量就会出现随机性.Window s提供了几种同步对象,来实现多线程间的同步[4].1)M utex互斥对象:在同一时间允许至多一个线程访问共享数据区.可以在多线程或多个进程间同步.2)Semapho re信号灯:允许一定数量的线程访问共享数据区,适合多个线程共享数据的同步.3)Event事件:事件对象是靠自身是否处于有信号状态以表明共享数据是否可访问,从而达到多线程间同步的目的.3 事件驱动的多线程串口通信在开发多媒体监控系统的实际应用中,由于既要实时监控外部串口的状态,又要及时读写串口的数据,还不能使进程一直等待,所以要产生一个查询374武汉大学学报(自然科学版)第46卷子线程来实时监控串口,另外产生一个处理子线程来读\写串口,而主线程进行正常的Window s 消息处理.主线程在初始化时,要完成串口的打开和初始设置工作,同时创建一个实时监控子线程和一个读写处理子线程.监控子线程一旦发现串口有信号,就会发送一个自定义消息给外部处理子线程,处理线程根据该消息即可判断在串行通讯过程中发生的事件,进而实时处理该信号.两个子线程之间以事件同步对象来实现同步,形成监视串口与读写串口的协调一致.下面介绍本文在开发多媒体监控系统时采用的实际串行通讯方法:●初始化串口和创建监视、读写子线程hcomm =CreateFile(“COM 1”,…);打开串口,返回串口资源句柄.SetupComm (hcom m ,4096,4096);分配串口缓冲区.DWORD dw EvtM ask=EV _RXCHA R;SetCo mmM ask (hcomm ,dw EvtM ask );设置串口通讯事件掩码.DCB dcb;//设备控制模块…;SetCo mmState (hcomm ,&dcb );设置串口通讯参数.m _pMT rd=AfxBeg inT hread(M pro c,…);m _pRT rd=Afx Beg inT hr ead(Mproc,…);创建并启动串口监视线程和读写处理线程●事件响应并在监视和读写子线程间切换在串口监视线程中设置串口通讯事件掩码及重叠机制,允许程序在后台等待串口通讯事件.W indo ws 提供了一个很重要的API 函数W aitComm Event,通过它可以检测到特定的串行通讯事件.当串口监视线程检测到指定通讯事件后,要实现与读写子线程的同步,并同时通过线程间消息传送机制通知读写子线程对串口作相应的操作.4 结束语在现代的操作系统中,支持多线程,提供多任务的并发机制是其一个很重要的特征.本文针对实际应用中对串口通信实时性的要求,提出了运用W indo ws 的多线程技术来实现异步串行通信的方法和步骤,有效的解决了在串口通信中出现的数据丢失和不稳定问题,提高了系统的效率和可靠性,实践证明这是一种有效的途径.参考文献:[1] Charlesa M .W indow s 95T elecom P rogr amming .Beijing :T sing hua U niver sity Pr ess,1998(Ch).[2] Go fton P W.M adter Ser ial Communication .Beijing :Electr ical Industr y P ress ,1995(Ch ).[3] Dav id J K .V isual C ++ 6.0T echnology I nside .Beijing :Hope elect rical P ress.1999(Ch).[4] M U ling -sheng.V isual C ++ 5.0U se A nd Develop .Beijing :T sing hua U niver sity Pr ess ,1998(Ch ).The Serial Communication Based on MultithreadingTechnique of WindowsCHEN Shu -zhen ,SHI Bo(Co llege o f Electr onic I nfo rma tio n,Wuhan U niver sity ,W uha n 430072,China )Abstract :Present a kind of method w hich is used to comm unicate betw een serial serial port and peripheral equipment dy namicly and real-time using m ultithreading technique based on the basic principle of comm unication and multitasking mechanism in the circumstance o f Window s.This method reso lves the questio n of Real -time answ ering in the serial com munication validly ,reduces lo sing rate of data and improves reliability of system .T his article pr esents a general metho d used in the serial com munication w hich is practical.Key words :multithreading;serial com munication;r eal-time query375第3期 陈淑珍等:基于W indo ws 多线程环境下的串口通信。

windows串口

windows串口

windows串口在工业控制中,工控机(一般都基于W indows平台)经常需要与智能仪表通过串口进行通信。

串口通信方便易行,应用广泛。

一般情况下,工控机和各智能仪表通过RS485总线进行通信。

RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。

每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。

在W in32下,可以使用两种编程方式实现串口通信,其一是使用Activ eX控件,这种方法程序简单,但欠灵活。

其二是调用W indows 的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。

本文我们只介绍API串口通信部分。

串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。

同步操作时,AP I函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。

无论那种操作方式,一般都通过四个步骤来完成:(1)打开串口(2)配置串口(3)读写串口(4)关闭串口(1)打开串口W in32系统把文件的概念进行了扩展。

无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateF ile 来打开或创建的。

该函数的原型为:HANDLE CreateF ile( LPCTSTR lpF ileName,DW ORD dwDesired Access,DW ORD dwShareMode,LPSECURITY_ATTR IBUTES lpSecur ity Attributes,DW ORD dwCreationDistr ibution,DW ORD dwFlags AndAttributes,HANDLE hTemp lateF ile);lpF ileName:将要打开的串口逻辑名,如“COM1”;dwDesir edAccess:指定串口访问的类型,可以是读取、写入或二者并列;dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0;lpSecur ity Attributes:引用安全性属性结构,缺省值为NULL;dwCreationDistribut ion:创建标志,对串口操作该参数必须置为OPEN_EXIST ING;dwF lagsAndAttr ibutes:属性描述,用于指定该串口是否进行异步操作,该值为F ILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同步I/O操作;hTemplateF ile:对串口而言该参数必须置为NULL;同步I/O方式打开串口的示例代码:HANDLE hCom; //全局变量,串口句柄hCom=CreateFile("COM1",//COM1口GENERIC_READ|GENER IC_W RITE, //允许读和写0, //独占方式NULL,OPEN_EXIST ING, //打开而不是创建0, //同步方式NULL);if(hCom==(HANDLE)-1){Afx Mess ageBox("打开COM失败!");return FALSE;}return TRUE;重叠I/O打开串口的示例代码:HANDLE hCom; //全局变量,串口句柄hCom =CreateFile("COM1", //COM1口GENERIC_READ|GENER IC_W RITE, //允许读和写0, //独占方式NULL,OPEN_EXIST ING, //打开而不是创建F ILE_ATTR IBUTE_NORMAL|F ILE_FLAG_OVERLAPPED, //重叠方式NULL);if(hCom ==INVAL ID_HANDLE_VALUE){Afx Mess ageBox("打开COM失败!");return FALSE;}return TRUE;(2)、配置串口在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。

串口通讯方法的三种实现

串口通讯方法的三种实现

串口基本信息用一台电脑实验串口自发自收,实验前要将串口(以9针为例)的发送引脚(2脚)和接受引脚(3脚)短接。

三线连接:适用于计算机之间尤其是PC机和单片机之间的数据通信。

其连接信号对为(TxD,RxD)、(RxD,TxD)、(SG,SG)。

即发送数据TxD端和接受数据RxD端交叉连接,信号地SG对应连接。

七线交叉连接:适用于同型号的计算机之间的连接,如PC机间的数据通信。

其连接信号对为:(TxD,RxD)、(RxD,TxD)、(SG,SG)、(RTS,CTS)、(CTS,RTS)、(DSR.DTR)、(DTR,DSR)。

其中,TxD、RxD、SG与前面信号的含义相同,RTS为请求发送,CTS为准许发送,DSR为数据装置准备好,DTR为数据终端准备好。

在本地连接的微机系统中,RTS、CTS、DTR、DSR用作硬件联络控制信号。

目前使用的串口连接线有DB9和DB25两种连接器,用户可以国家使用的具体机器选择相应的连接器。

一个串口通讯类在/network/serialport.shtml。

PC机的RS-232接口的电平标准是-12V标示“1”,和+12V表示“0”,有些单片机的信号电平时TTL 型,即大于2.4v表示“1”,小于0.5v表示“0”,因此采用RS-232总线进行异步通信是,发送端和接受端要有一个电平转换接口。

串口通讯方法的三种实现串口是计算机上一种非常通用的设备通信协议。

大多数计算机包含两个基于RS232的串口。

串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS一232口。

同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。

串口通信方便易行,应用广泛。

在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于windows api的串口通信方式、软件设计、终端通信协

摘要:手机、gps等终端的通信已经深入人民的日常生活中,大部分通信的手段为无线传输、蓝牙、usb,终端通信的串口通信是
探究终端核心和通信网络协议等的重要手段,本文主要介绍终端通信的基于windows api的串口通信方式、软件设计、终端通信协议等有关内容。

关键词串口;模块;通信;软件;设计;结构;协议;
中图分类号:s611 文献标识码:a 文章编号:
引言
串口是常用的计算机与外部串行设备之间的数据传输通道。


了提高串口通信的速度和资源利用率,软件采用windows api函数并基于多线程技术和异步串口通信的设计理念,实现了终端(手机终端、gps)与上位机之间的数据交换,并且将采集到的数据保存
到数据库中,便于分析和处理。

软件结构及概述
软件涉及的核心内容包含三部分:串口通信模块,终端设备操
控模块,通信数据分析模块。

串口通信模块由三个“类”组成-串口初始化
(communication_init)、数据发送(message_send)、数据接收(message_receive)。

串口初始化完成对串口关键参数配置后的初始化操作,接收和发送模块分别为单独的功能模块,调用时均会创立独立线程,线程池时刻检索端口连接及忙闲状态,保障数据收发的准确性和稳定性。

软件的组成结构如图 1 所示。

终端设备操控模块,是采用串口向终端发送at指令,以控制终端的行为,目前的at指令能够模拟几乎所有手机按键操作指令,除此以外,at指令亦能够将终端模式打开到专业版本模式下,并且可通过at指令直接获取工程模式下参数。

一般情况下,终端将直接反馈ok,error等信息作为操作执行的回应。

通信数据分析模块是针对特殊终端在非at指令下产生的通信相关数据的收集及分析,能够通过这些数据获悉通信网络的状况。

串口通信模块
串口设置界面截图
串口的本质功能是作为 cpu 和串行设备间的编码转换器。

串口数据均为二进制数据流,亦可视为十六进制编码,目前windows api 提供的串口控件,均具有数据转化功能,可直接采用,对于串口的连接需要配置信息,最重要的参数是波特率、数据位、停止位和奇偶校验位。

串口初始化时,需要配置相关的信息,串口适配成功后方可进
行连接和收发,由于每台电脑或者外设对自身串口的默认设置不尽相同, 所以在进行通信之前一定要设置好这些参数, 使通信双方的串口配置一致, 才能确保通信的正常。

对于终端常见的gps设备波特率一般为4800,工程类手机一般根据手机型号的不同波特率不尽相同,如57600、115200等。

以下为串口初始化编码():
串口接收代码段()
终端串口及协议
一部测试终端或工程终端,at命令为必须的协议之一,但是生产厂商在实现网络通信的前提下,会应运生成手机物理层协议,该协议包含物理层数据交互命令,返回数据详细格式说明等。

为明确阐述,以最常见的工程终端为例绘图如下:
终端串口协议层次图
终端设备操控模块
对于终端的at command命令,根据终端的不同命令格式不同,目前很多终端均采用统一的通用格式,但是该命令通过命令文档可以知道,这样的命名数目庞大,如果想用枚举的方式将这些at command命令通通编写既浪费时间,应用起来也很繁琐,如何让所
有的at command命令准确简洁的使用呢,就需要编写一个将at command命令的字符串封装成一个完成的帧格式的函数。

这样用户可以任意的输入正确的at command命令然后发送,就可以轻松的操作终端了。

这个封装的过程要参照at command命令统一的帧结构去确定。

终端设备操控模块流程图
终端手机在接到at command命令后,除了执行相应的操作外,还会有相应的回复信息,比如“ok”“error”等,必须将从手机上收到的关于at command命令的回复的信息进行处理,然后显示。

通信数据分析模块
通信数据分析模块通过串口收到相关数据,根据终端特殊指令进行数据的解析,分析入库。

对于手机终端,一般为手机协议、空口协议。

gps设备为gps协议。

如下摘取协议段:
gps协议段-摘自gps论坛
摘自《3gpp ts 04.04 v8.1.2 (2002-05)》
根据终端自身协议,对数据进行拆分的过程称为解析,解析后
的数据均具有特殊的含义,如图gps协议中第二个数据代表的为经度信息。

手机终端解析后的数据均是通信网络参数,代表网络通信过程中的相关指标,再根据通信理论进行深入分析,即可得网络状况。

如下为gps解析分析代码()
综述:基于windows api的实现与终端的串口通信,可探究终端更底层的数据传输机制、传输参数、网络参数等,是科研及终端类软件二次开发的必要技术,相关领域研究意义深远。

参考文献:
[1] 崔红志, 索岩基. 基于 a pi 的 win32 串口通信编程技术[j] .科技信息, 2010(7): 1-2.
[2] 张威.gsm网络优化原理与工程.人民邮电出版社,2003(10)
[3] 3gpp ts 04.08 v7.9.1(2000-11)
[4] 3gpp ts 04.04 v8.1.2 (2002-05)
[5] 基于windows api的异步串口通信软件设计.百度文库。

相关文档
最新文档