VisualC++网络编程案例实战之串口通信编程应用(精选)
用Visual C++实现串口通讯

学校logo[请输入论文题目]专业:[请输入专业]班级:[请输入班级]学生姓名:[请输入姓名]指导教师:[请输入指导教师]完成时间:2013年3月29日用VC 6.0实现串行通信的三种方法---- 摘要:本文介绍了在Windows平台下串行通信的实现机制,讨论了根据不同的条件用Visual C++ 设计串行通信程序的三种方法,并结合实际,实现对温度数据的接收监控。
---- 在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。
依据不同的条件实现对串口的灵活编程控制是我们所需要的。
---- 在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10S向主机发送一次采样数据,主机向单片机发送相关的控制命令,实现串行数据接收,处理,记录,显示,实时绘制曲线。
串行通信程序开发环境为VC++ 6.0。
---- Windows下串行通信---- 与以往DOS下串行通信程序不同的是,Windows不提倡应用程序直接控制硬件,而是通过Windows操作系统提供的设备驱动程序来进行数据传递。
串行口在Win 32中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数,通过了解这些函数的使用,可以编制出符合不同需要的通信程序。
与通信设备相关的结构有COMMCONFIG ,COMMPROP,COMMTIMEOUTS,COMSTA T,DCB,MODEMDEVCAPS,MODEMSETTINGS共7个,与通信有关的Windows API函数共有26个,详细说明可参考MSDN帮助文件。
以下将结合实例,给出实现串行通信的三种方法。
---- 实现串行通信的三种方法---- 方法一:使用VC++提供的串行通信控件MSComm 首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project --> Add to Project --> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。
用VisualBasic实现串口通信的三种方法

comm2. InBufferSize = 512 ′设置接收缓冲区为 512 字节
comm2. SThreshold = 1
′发送缓冲区空触发发送事件
comm2. RThreshold = 0
′禁止接收事件
′打开 COM1 ,COM2
comm1. Portopen = True
comm2. Portopen = True
以上五种属性对串口完成基本的设置和操作 ,下面的三 种属性是描述如何利用 VB 提供的事件驱动机制来实现通 信。
CommEvent :返回通信过程中产生的错误信息及事件 ,了 解通信状况 。
SThreshold :设置并返回不触发 OnComm 事件时发送缓冲 区被允许的最少字符数 。当缓冲区的字符少于设置的值时 , 则触发 OnComm 事件 ,并把 CommEvent 设为 MSCOMMM—EV— SEND。当 SThreshold = 0 则禁止发送触发 OnComm 事件 , 当 SThreshold = 1 则发送缓冲区为空时就触发 OnComm 事件 。利 用这一属性 ,就可完成发送数据后的一系列操作 。如 :对刚发 送的数据进行处理 ,当串口是和 MODEM 通信时 ,发送完数据 后可进行拆除线路联接 、挂机等操作 。
′读取接收缓冲区的所有字符
comm1. OutBufferSize = 512 ′设置发送缓冲区为 512 字节
comm1. InBufferSize = 512 ′设置接收缓冲区为 512 字节
comm1. SThreshold = 0
′禁止发送事件
comm1. RThreshold = 1 ′每一个字符到接收缓冲区都
WINDOWS 的 HELP 文件 WINSDK. HLP 中包含了完整的 WINDOWS API 函数信息 ,可用该文件查看联机函数 、数据结 构及错误信息 。
vc串口编程实例 -回复

vc串口编程实例-回复VC串口编程实例,是指使用VC(Visual C++)进行串口编程的实例。
串口编程是指通过串口(在计算机中又称通信端口)与外部设备进行数据的收发和通信。
串口编程在很多应用中都非常常见,例如与嵌入式设备、传感器、单片机等进行通信。
本文将以串口编程为主题,详细介绍如何在VC中进行串口编程的步骤和相关实例。
第一步,准备工作。
在进行串口编程之前,需要准备好一些必要的工作和工具。
首先,我们需要一台计算机和一个可用的串口接口。
然后,我们需要安装一个适合的集成开发环境(IDE)。
在本例中,我们选择使用VC进行编程。
确保已经安装好VC及其相关的开发工具和库。
第二步,创建工程。
在VC中创建一个新的工程。
在创建工程的界面中,选择“Windows桌面应用程序”作为项目类型。
输入一个项目名称,选择工作空间的目录。
点击“确定”按钮创建工程。
第三步,设置串口参数。
在VC中进行串口编程,首先需要设置串口的参数,包括波特率、数据位、停止位和校验位等。
通过设置这些参数,我们可以控制串口的通信速度和数据的可靠性。
在VC的代码中使用DCB 结构体来设置这些参数。
下面是一个示例代码段:c++DCB dcbSerialParams = { 0 };dcbSerialParams.DCBlength = sizeof(dcbSerialParams); GetCommState(hSerial, &dcbSerialParams); 获取串口配置参数dcbSerialParams.BaudRate = 9600; 设置波特率dcbSerialParams.ByteSize = 8; 设置数据位dcbSerialParams.StopBits = ONESTOPBIT; 设置停止位dcbSerialParams.Parity = NOPARITY; 设置校验位SetCommState(hSerial, &dcbSerialParams); 设置串口配置参数在上述代码中,首先定义一个DCB结构体变量dcbSerialParams,用于保存串口参数。
Visual Basic串口通信程序设计实例

第6章Visual Basic串口通信程序设计典型实例利用Visual Basic开发串口通信程序既可以使用MSComm控件也可以调用Windows API 函数。
不过,只要MSComm可以被选用,它几乎总是我们推荐的选择,因为MSComm的功能和API调用一样好甚至比它还好且使用起来更加简单。
在本章提供的串口通信程序设计中,除了PC机与PC机串口通信外,PC机与单片机、PC机与智能仪表、PC机与PLC、PC机与GSM短信模块等串口通信任务的实现均采用MSComm控件。
6.1 PC机与PC机串口通信程序设计当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。
本设计通过两台PC机串口三线连接,介绍了利用API函数和MSComm控件设计串口通信程序的方法,包括字符与文件的发送与接收。
6.1.1 设计目的1)掌握PC机与PC机串口通信的线路连接方法。
2)利用MSComm控件和VB-API函数实现PC机与PC机串口通信的程序设计方法。
6.1.2 设计用软、硬件本设计用到的硬件和软件清单见表6-1。
6.1.3 硬件线路线路说明:在计算机通电前,按图6-1所示将2台PC机通过串口线连接起来:PC机A 串口COM1端口的TXD与PC机B串口COM1端口的RXD相连;PC机A串口COM1端口的RXD与PC机B串口COM1端口的TXD相连;PC机A串口COM1端口的GND与PC机B串口COM1端口的GND相连。
6.1.4 设计任务利用MSComm控件和Visual Basic API函数编写程序实现PC机与PC机串口通信。
图6-1 PC机与PC机串口通信线路任务要求:两台计算机互发字符并自动接收,如一台计算机输入字符串“Please return abc123”,单击“发送字符”命令,另一台计算机若收到,就输入字符串“abc123”,单击“发送字符”命令,信息返回到第一组的计算机。
深入分析VisualC++进行串口通信编程的详解

深⼊分析VisualC++进⾏串⼝通信编程的详解利⽤Visual C++在windows环境下设计异步串⾏通信程序可以使⽤不同的⽅法。
⼀种⽅法可以使⽤windows系统提供的串⾏⼝API函数;另⼀种⽅法可以直接使⽤Microsoft公司提供的ActiveX控件MSCOMM.OCX。
利⽤MSCOMM.OCX控件进⾏串⾏⼝程序设计相对⽐较简单,只要对该控件的属性、事件和⽅法进⾏设置和操作,就能完成简单的串⾏通信功能。
⽽直接使⽤windows系统提供的串⾏⼝API函数则相对较为灵活。
试验中,可根据⾃⼰的情况任意其中⼀种进⾏编程。
以下针对如何使⽤windows系统提供的串⾏⼝API函数进⾏编程做简要介绍在windows系统,串⾏⼝和其它通信设备都是作为⽂件进⾏处理的。
串⾏⼝的打开、关闭、发送和接收所⽤的函数都与操作⽂件的函数相同。
总体来说,利⽤Visual C++进⾏异步串⾏通信程序设计通常可以分为4个⼤阶段,它们是串⾏⼝打开阶段、串⾏⼝状态值读取和属性设置阶段、串⾏数据的发送与接收阶段,以及串⾏⼝关闭阶段。
在对串⾏⼝进⾏所有的操作之前,⾸先要将其打开。
串⾏⼝的打开可以使⽤CreateFile函数,CreateFile函数将返回⼀个句柄,在随后与该串⾏⼝相关的各种操作中使⽤。
与⽂件操作相同,在利⽤CreateFile打开串⾏⼝时,也可以将串⾏⼝指定为“读访问权限”、“写访问权限”或“读写访问权限”。
复制代码代码如下:HANDLE CreateFile(LPCTSTR lpFileNameDWORD dwDesiredAccessDWORD dwSharedModeLPSECURITY_ATTRIBUTES lpSecurityAttributesDWORD dwCreationDispositionDWORD dwFlagsAndAttributesHANDLE hTemplateFile);在调⽤成功时,CreateFile返回打开⽂件的句柄,该句柄将在以后与该串⼝相关的各个调⽤函数中使⽤。
VS编程,C#串口通讯,通过串口读取数据的一种方法

VS编程,C#串⼝通讯,通过串⼝读取数据的⼀种⽅法⼀、可能需要的软件:1、虚拟串⼝vspd(Virtual Serial Port Driver,⽤来在电脑上虚拟出⼀对串⼝,模拟通讯。
2、友善串⼝调试助⼿,⽤来发送、读取数据。
⼆、思路1、查询本机所有的串⼝2、判断需要的串⼝是否存在本机的串⼝中3、设置串⼝的参数,如波特率、奇偶校验等。
4、打开串⼝,5、通过串⼝读取数据,处理数据6、关闭当前窗⼝时,将串⼝⼀并关闭。
7、可以写⼀个定时器,来循环执⾏1、2两步,并判断串⼝是否打开,以保持串⼝通讯正常。
三,代码1、查询本机所有的串⼝///<summary>///获取本机串⼝列表///</summary>///<param name="isUseReg"></param>///<returns></returns>private List<string> GetComlist(bool isUseReg){List<string> list = new List<string>();try{if (isUseReg){RegistryKey RootKey = Registry.LocalMachine;RegistryKey Comkey = RootKey.OpenSubKey(@"HARDWARE\DEVICEMAP\SERIALCOMM");String[] ComNames = Comkey.GetValueNames();foreach (String ComNamekey in ComNames){string TemS = Comkey.GetValue(ComNamekey).ToString();list.Add(TemS);}}else{foreach (string com in SerialPort.GetPortNames()) //⾃动获取串⾏⼝名称list.Add(com);}}catch{MessageBox.Show("串⾏端⼝检查异常!", "提⽰信息");// System.Environment.Exit(0); //彻底退出应⽤程序}return list;}2、判断需要的串⼝是否存在本机的串⼝中///<summary>///判断是否存在当前串⼝///</summary>private void StartSerialPortMonitor(){List<string> comList = GetComlist(false); //⾸先获取本机关联的串⾏端⼝列表if (comList.Count == 0){MessageBox.Show("当前设备不存在串⾏端⼝!", "提⽰信息");// System.Environment.Exit(0); //彻底退出应⽤程序}else{string targetCOMPort = "COM8";//判断串⼝列表中是否存在⽬标串⾏端⼝if (!comList.Contains(targetCOMPort)){MessageBox.Show("提⽰信息", "当前设备不存在配置的串⾏端⼝!");//System.Environment.Exit(0); //彻底退出应⽤程序}}}3、设置串⼝的参数,如波特率、奇偶校验等。
Visual Basic串口通信程序设计实例

第6章Visual Basic串口通信程序设计典型实例利用Visual Basic开发串口通信程序既可以使用MSComm控件也可以调用Windows API 函数。
不过,只要MSComm可以被选用,它几乎总是我们推荐的选择,因为MSComm的功能和API调用一样好甚至比它还好且使用起来更加简单。
在本章提供的串口通信程序设计中,除了PC机与PC机串口通信外,PC机与单片机、PC机与智能仪表、PC机与PLC、PC机与GSM短信模块等串口通信任务的实现均采用MSComm控件。
6.1 PC机与PC机串口通信程序设计当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信.本设计通过两台PC机串口三线连接,介绍了利用API函数和MSComm控件设计串口通信程序的方法,包括字符与文件的发送与接收.6.1.1 设计目的1)掌握PC机与PC机串口通信的线路连接方法。
2)利用MSComm控件和VB-API函数实现PC机与PC机串口通信的程序设计方法。
6.1。
2 设计用软、硬件本设计用到的硬件和软件清单见表6-1。
6.1.3 硬件线路线路说明:在计算机通电前,按图6—1所示将2台PC机通过串口线连接起来:PC机A串口COM1端口的TXD与PC机B串口COM1端口的RXD相连;PC机A串口COM1端口的RXD与PC机B串口COM1端口的TXD相连;PC机A串口COM1端口的GND与PC机B串口COM1端口的GND相连。
6.1。
4 设计任务利用MSComm控件和Visual Basic API函数编写程序实现PC机与PC机串口通信。
216图6-1 PC机与PC机串口通信线路任务要求:两台计算机互发字符并自动接收,如一台计算机输入字符串“Please return abc123",单击“发送字符"命令,另一台计算机若收到,就输入字符串“abc123”,单击“发送字符”命令,信息返回到第一组的计算机。
基于VC的串行通信技术应用实例

基于VC的串⾏通信技术应⽤实例 在⼯业控制中,串⼝是常⽤的计算机与外部串⾏设备之间的数据传输通道,由于串⾏通信⽅便易⾏,所以应⽤⼴泛。
本⽂将介绍在Windows平台下串⾏通信的⼯作机制和⽤Visual C++设计串⾏通信程序的编程⽅法及通信⽅式。
VC中实现串⾏通信的编程技术 以下我们将介绍VC中⼏种实现串⾏通信的编程技术: 利⽤VC++的标准通信函数 利⽤VC++的标准通信函数_inp和_outp可实现串⼝通信。
下⾯是⼀个串⼝初始化的程序: void init_com(PORT) {char i; outp(PORT+3,0x80); outp(PORT,0x0C); outp(PORT+1,0); outp(PORT+3 ,0x3a); outp(PORT+3 ,0x03); i=inp(PORT+5) && 0xfe; outp(PORT+5,i);} 使⽤串⾏通信控件MSComm 串⾏通信控件MSCOmm32.OCX提供了使⽤RS-232来进⾏数据通信的所有协议,VC为该控件提供了标准的事件处理函数、过程,并通过属性和⽅法提供了串⾏通信的设置。
它使⽤户能够⽅便地访问Windows串⾏通信驱动程序的⼤多数特性,包括输⼊、输出缓冲区的⼤⼩及决定何时使⽤流控制命令挂起数据传输等。
在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串⼝属性进⾏设置,MSComm控件共有27个属性。
以下是通过设置控件属性对串⼝进⾏初始化的实例: BOOL CSampleDlg:: PortOpen() { BOOL m_Opened; ...... m_Serial.SetCommPort(2); // 指定串⼝号 m_Serial.SetSettings("4800,N,8,1"); // 通信参数设置 m_Serial.SetInBufferSize(1024); // 指定接收缓冲区⼤⼩ m_Serial.SetInBufferCount(0); // 清空接收缓冲区 m_Serial.InputMode(1); // 设置数据获取⽅式 m_Serial.SetInputLen(0); // 设置读取⽅式 m_Opened=m_Serail.SetPortOpen(1); // 打开指定的串⼝ return m_Opened;} 打开所需串⼝后,我们需要考虑串⼝通信的时机。