精华内容
下载资源
问答
  • VB和单片机串口通信程序实例

    热门讨论 2008-08-30 16:45:01
    VB和单片机串口通信程序实例VB和单片机串口通信程序实例VB和单片机串口通信程序实例
  • VB串口通信程序设计典型实例,详细介绍B串口通信程序设计开发。
  • 在VS2008环境下开发,配置config.ini文件,一个设置为“发送端",另一个设置为"接收端”,用串口线链接两个PC机串口,可通信。其实是一个半成品,仅供菜鸟学习参考,如有不足之处,也请批评指正!
  • VB串口通信程序设计典型实例[教程]

    热门讨论 2012-08-08 18:37:10
    利用VB开发串口通信程序既可以使用MSComm控件也可以调用Windows API函数实现。不过,只要MSComm控件可以被选用,我们推荐选择此控件实现,因为MSComm控件的功能和API调用一样强,甚至比它还好且使用起来更加简单。 ...
  • VB串口通信实例讲解

    2012-05-09 22:01:52
    VB串口通信实例讲解,系统讲解各个模块作用以及如何设置,还有源程序,特别适用于初学者。
  • 简单实用的串口通讯程序,基于VB6.0开发环境 ,使用控件
  • 串口通讯
  • VB串口通信源码210个

    千次下载 热门讨论 2013-10-15 11:32:27
    039、VB串口通信程序,可以读取串口并显示保存数据,且能显示数据曲线 040、VB串口通信的源码,学习的好资料 041、VB串口通信调试器的源码程序 042、VB串口通信设计视频演示源码 043、VB串口通信示例 044、VB串口通信...
  • 1、PC机与PC机串口通信程序设计 2、PC机与单片机串口通信程序设计 3、PC机与智能仪器串口通信程序设计 4、PC机与PLC串口通信程序设计 5、PC机与PLC串口通信程序设计 6、PC机与GSM短信模块串口通信程序设计 7、PC机与...
  • VB串口通信编程源码.rar

    热门讨论 2010-07-05 10:48:08
    VB串口通信编程源码.rar GE plc 串口通讯,VB编制,读取内存单元 HD 6P RFID发卡器、考勤卡钟 串口通讯接口程序 VB 源码 master440变频器的上位机程序,vb编写的源码 ...VB串口通信 6路10位AD转换数据采集源程序
  • vb串口调试程序

    2014-04-16 23:10:35
    VB6.0编程工具,编写串口调试工具,用于串口通信实例
  • vb串口通讯25个实例

    2015-12-18 15:18:32
    vb串口通讯25个实例。利用VB COMMCOM控件读串口数据源码。利用上位机(VB)界面,控制下位机(单片机)彩灯运行。巧用VB.net编写串口程序。三菱FX系列PLC编程口通讯和VB源程序范例。实现计算机串口通信,用vb编写,可以...
  • VB与PLC的串口通信程序实例,采用自由口通讯协议,支持西门子200系列PLC
  • 利用Visual Basic 6.0开发Windows平台串口通信程序的常用方法,并结合实际应用给出利用各种方法开发通信程序的关键代码。
  • VB串口控制仪器的实例

    热门讨论 2011-03-11 14:43:38
    实例使用VB6.0编写,利用RS232串口通信,来控制测试仪器的程序. 目前常见测试设备的仪器通讯方式有:GPIB,RS232,USB,以太网等,本实例是针对AGILENT 34401A数字复用电表做的简易控制程序(SCPI语言). 供初学者参考.
  • VB串口通信实例,具有很强代表意义,代码简练易懂,功能强大。
  • 和大家一起来探讨一下VB.NET通信程序及其在windows平台下的通信软件设计方法,结合具体实例给出了基本的通信程序,希望对大家有帮助。1992年crescent software inc.公司专为vb设计mscomm.vbx用户通信控件,它提供了...
  • 提供了所有几十个测控实例的完整源程序,这些程序均在Windows XP环境下编译通过,并经过实际的测试,其中很多程序具有非常高的实用价值。
  • VB数据采集与串口通信 提供了所有测控实例的完整源程序,这些程序均在Windows XP环境下编译通过,并经过实际的测试,其中很多程序具有非常高的实用价值。
  • Proteus而强大的单片机仿真功能, 给单片机的学习 者和使用者带来了极大的便利。在前期开发中, 利用仿 真技术可以检查出大部分的理论...的虚拟串口元件的使用, 以及它与的通信 方式, 同时给出一个综合性较强的仿真实例
  • vb,vc上位机程序实例

    2011-03-11 14:08:31
    上位机完成的串口通信程序,我没得积分了。....
  • VB与PC机串口通讯实例

    2010-04-17 18:47:04
    PC机与单片机串口通信VB源代码,包括VB界面程序和51单片机程序
  • Delphi西门子PPI协议S7-200VB的PLC通信控件实例,调试时请注意:1、请先运行目录中的安装控件,程序自动注册siemens.ocx控件,到C:\WINDOWS目录下。  2、delphi下控件的安装请参考图片中的安装步骤。  注意:在...
  • 1 引言  在很多情况下,远程监控和工业自动化领域系统经常采用串并口通信编程,其中串行接口被广泛地应用于工程实践的长距离通信...本文对和串口通信相关的32位Windows API函数进行了介绍,并给出了相应的程序实例

    引言

            在很多情况下,远程监控和工业自动化领域系统经常采用串并口通信编程,其中串行接口被广泛地应用于工程实践的长距离通信中。运用Windows通信API可以在Windows环境下进行串口编程,不用对硬件直接进行操作,并通过VCVBDelphi等语言进行调用,大大方便了对数据的处理。本文对和串口通信相关的32Windows API函数进行了介绍,并给出了相应的程序实例。

    2  Windows API简介

        Win32 API作为 Microsoft 32位平台(包括:Windows 9xWindows NT3.14.05.0WindowsCE)的应用程序编程接口,它是构筑所有32Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。APIwindows的核心,从事Windows应用程序开发,离不开对Win32 API函数的调用。只有充分理解和利用API函数,才能深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性。


    3 Windows API相关串口通信函数介绍

        在32位的Windows系统中,串口通信是作为文件处理的,串口操作一般为的打开、关闭、读取、写入等操作,相应的Windows API 函数如下。

    3.1 打开和关闭串口

    打开串口

        在Windows系统中串口通信会话以调用CreateFile ( )函数开始。CreateFile ( )函数可以读写访问串口,并返回一个句柄,并在以后的端口操作中使用。

        CreateFile ( )函数声明如下:    

    HANDLE CreateFile(    
    LPCTSTR lpszNAME, // 指定要打开的串口逻辑名    
    DWORD fdwAccess, // 指定串口访问的类型    
    DWORD fdwShareMode, // 指定端口的共享属性    
    LPSECURITY_ATTRIBUTES lpsa, // 引用安全属性结构SECURITY_ATTRIBUTES   
    DWORD fdwCreate, // 指定CreateFile( )正在被已有的文件调用时应采取的措施    
    DWORD fdwAttrsAndFlags, // 描述端口的各种属性    
    HANDLE hTemolateFile // 指向模板文件的句柄    
    ) 

        其中安全属性结构SECURITY_ATTRIBUTES结构声明如下:    

    typedef struct_SECURITY_ATTRIBUTES
    {    
    DWORD nLength; // 指明该结构的长度    
    LPVOID lpSecurityDescriptor; // 指向一个安全描述字符    
    BOOL bInheritHandle; // 表明句柄是否能被继承    
    }SECURITY_ATTRIBUTES;   


        调用CreateFile ( )函数打开COM1串口操作如下所示:    

    HANDLE hCom;
    hCom = CreateFile("COM1",           // Specify port device: default "COM1"
    GENERIC_READ | GENERIC_WRITE,       // Specify mode that open device.
    0,                                  // the devide isn't shared.
    NULL,                               // the object gets a default security.
    OPEN_EXISTING,                      // Specify which action to take on file. 
    0,                                  // default.
    NULL);   
    if(hCOM==INVALID_HANDLE_VALUE)    
    {    
        dwError=GetLastError( );        // Error   
    }

          一旦串口处于打开状态,就可以分配一个发送缓冲区和接收缓冲区,并且通过调用SetupComm( )函数实现其他初始化工作。

            SetupComm( )函数声明如下:    

    BOOL SetupComm(    
    HANDLE Hfile, // 由CreatFile ( )返回的指向已打开端口的句柄句柄    
    DWORD dwInQueue, // 输入缓冲区大小    
    DWORD dwOutQueue // 输出缓冲区大小    
    ); 

     2 关闭串口

           关闭串口通过调用CloseHandle ( )函数关闭由CreatHandle ( )函数返回的句柄来完成。

          CloseHandle ( )函数声明如下:

    BOOL CloseHandle(    
    HANDLE hObject // 需关闭的设备句柄    
    );   

    3.2 串口配置和串口属性

           在用CreatFile ( )函数打开串口后,系统将根据上次打开串口时设置的值来初始化串口,可以集成上次打开操作后的数值,包括设备控制块(DCB)和超时控制结构(COMMTIMEOUTS)。如果是首次打开串口,Windows会使用缺省配置。

    串口配置

           Windows 2000 中使用GetCommState( )函数获取串口的当前配置,使用SetCommState ( )函数重新分配串口资源的各个参数。

       GetCommState ( )函数声明如下:    

    BOOL GetCommState(    
    HANDLE hFile, // 由CreatFile ( )函数返回的指向已打开的串口的句柄    
    LPDCB lpDCB // 指向device-control block structure 的指针    
    );    

          其中DCB的结构声明如下:    

    typedef struct_DCB{    
    DWORD DCBlength;  // DCB块大小    
    DWORD BaudRate;  // 数据传输率    
    DWORD fBinary:1;  // 二进制模式,不检验EOF    
    DWORD fParity:1;  // 允许奇偶校验    
    DWORD fOutCtsFlow:1;  // CTS输出流控制    
    DWORD fOutDsrFlow:1;  // DSR输出流控制    
    DWORD fDtrContorl:2;  // DTR流控制类型    
    DWORD fDsrSensitivity:1;  // 对DTR信号线是否敏感    
    DWORD fTXContinueOnOxff:1;  // XOFF continue Tx    
    DWORD fOutX:1;  // XON/XOFF输出流控制    
    DWORD fInX:1;  // XON/XOFF输入流控制    
    DWORD fErrorChar:1;  // 错误替换    
    DWORD fNull:1;  // 是否丢弃接收到的NULL字符    
    DWORD fRtsControl:2;  // RTS流控制    
    DWORD fAbortOnError:1;  // 发送错误,指定是否终止读、写操作    
    DWORD fDummy2:17;  // 保留    
    WORD wReserved;  // 现在不用    
    WORD XonLim;  // XOFF字符发送之前接收到缓冲区中可允许的最小字节数    
    WORD XoffLim;  // XOFF字符发送之前缓冲区中可允许的最小可用字节数    
    BYTE ByteSize;  // 端口当前使用的数据位数    
    BYTE Parity;  // 当前使用的奇偶校验法    
    BYTE StopBits;  // 当前使用的停止位数    
    char XonChar;  // 发送和接收的XON字符值    
    char XoffChar;  //发送和接收的XOFF字符值    
    char ErrorChar;  // 用来替代接收到的奇偶校验发生错误的字符    
    char EofChar;  // 表示数据的结束    
    char EvtChar;  // 事件字符    
    WORD wReserved1;  // 保留的位    
    }DCB;

          

    如果GetCommState ( )函数调用成功,则返回值不为零。若函数调用失败,则返回值为零,可以调用GetLastError ( )函数来获取进一步的错误信息。

        如果应用程序需要修改配置,可以通过调用GetCommState ( )函数获得当前的DCB结构,然后更改DCB结构中的参数,调用SetCommState ( )函数配置修改过的DCB来配置端口。

        SetCommState ( )函数声明如下:    

    BOOL SetCommState (    
    HANDLE hFile, // 由CreatFile ( )函数返回的已打开的串口的句柄 
    LPDCB lpDCB // 指向DCB结构的指针    
    ); 


    2  串口属性

    串口的属性通过GetCommProperties ( )函数获得.

    GetCommProperties ( )函数声明如下:

    BOOL GetCommProperties(    
    HANDLE hFile, //返回句柄    
    LPCOMMPROP lpCommProp //指向COMMPROP的结构    
    );   

        其中lpCommProp指向一个COMMPROP的结构,串口的性能从COMMPROP中返回。

    3  通信设备配置

            Windows API提供了CommConfigDialog ( )函数对通信设备进行配置,从中改变数据传输速率、数据位、奇偶校验方法、停止位和流控制方法。

           CommConfigDialog ( )函数的声明如下:    

    BOOL CommConfigDialog(    
    LPTSTR lpszName, // 要配置的端口名  
    HWND hWnd, // 拥有对话框的窗口句柄    
    LPCOMMCONFIG lpCC // 指向一个COMMCONFIG结构    
    ); 
       

           当CommConfigDialog ( )函数返回时,选定的设置在COMMFIG的DCB参数中返回,对已打开的串口,对端口设置进行更改通过SetCommState ( )函数来改变。

            Windows API提供了CommConfigDialog ( )函数对通信设备进行配置,从中改变数据传输速率、数据位、奇偶校验方法、停止位和流控制方法。

    CommConfigDialog ( )函数的声明如下:    
    BOOL CommConfigDialog(    
    LPTSTR lpszName, // 要配置的端口名  
    HWND hWnd, // 拥有对话框的窗口句柄    
    LPCOMMCONFIG lpCC // 指向一个COMMCONFIG结构    
    );
        

          当CommConfigDialog ( )函数返回时,选定的设置在COMMFIG的DCB参数中返回,对已打开的串口,对端口设置进行更改通过SetCommState ( )函数来改变。


    3.3  读写串口

    1  读串口操作

           一般在程序中使用Win32 API ReadFile ( )函数从串口中读取数据。

           ReadFile ( )函数声明如下:

    BOOL ReadFile(     
    HANDLE hFILE, // 指向由CreatFile ( )函数产生的句柄    
    LPVOID lpbuffer, // 指向一个缓冲区    
    DWORD nNumberOfBytesToRead, // 读取的字节数   
    LPDWORD lpNumberOfBytesToRead, // 指向调用该函数读出的字节数    
    LPOVERLAPPED lpOverlapped // 一个OVERLAPPED结构    
    );    


    2  写串口操作

           一般在程序中使用Win32 API WriteFile ( )函数向串口中写数据。

           WriteFile ( )函数声明如下:

          

    BOOL WriteFile(     
    HANDLE hFILE, // 指向由CreatFile( )函数产生的句柄    
    LPVOID lpbuffer, // 指向一个缓冲区    
    DWORD nNumberOfBytesToWrite, // 向串口设备写入的字节数    
    LPDWORD lpNumberOfBytesToWritten, // 指向调用该函数已写入的字节数    
    LPOVERLAPPED lpOverlapped // 一个OVERLAPPED结构    
    );  

    3  异步I/O操作

            读、写串口操作中的OVERLAPPED结构用于在Windows中进行异步I/O操作,使应用程序可以在前台、后台同时执行不同的任务,并由GetOverLappedResult ( )函数获取结果。

           OVERLAPPED结构类型声明如下:

    Typedef struct_OVERLAPPED{    
    DWORD Internal; // 指出一个和系统相关的状态    
    DWORD InternalHigh; // 指出发送或接收的数据长度    
    DWORD Offset;    
    DWORD OffsetHigh; // Offset和OffsetHigh指明文件传送的开始位置和字节偏移量    
    HANDLE hEvent; // 指定一个I/O操作完成后出发的事件    
    }OVERLAPPED;    

            异步I/O操作可以由GetOverLappedResult ( )函数来获取结果。    

            GetOverLappedResult ( )函数声明如下:    

    BOOL GetOverLappedResult(    
    HANDLE hFILE, // 标识通信句柄,开始调用重叠结构ReadFile、WriteFile    
    LPOVERLAPPED lpOverlapped, // 启动异步操作时指定的OVERLAPPED结构    
    LPDWORD lpNumberOfBytesTransferred, // 接收读、写操作实际传递的字节数    
    BOOL bWait // 指定函数是否等待挂起的异步操作完成。    
    );    


    4  超时设置

            Windows 2000中读写串口引入了超时结构。超时结构直接影响读和写的操作行为,当事先设定的超时间隔消逝时,ReadFile ( )、WriteFile ( )操作将被无条件结束。

            超时结构定义如下

    typedef struct_COMMTIMEOUTS{    
    DWORD ReadIntervalTimeout;     
    DWORD ReadTotalTimoutMultiplier;     
    DWORD ReadTotalTimouConstant;     
    DWORD WriteTotalTimoutMultiplier;     
    DWORD WriteTotalTimoutConstant;     
    } COMMTIMEOUTS,*LPCOMMTIMEOUTS;    

           其中:ReadIntervalTimeout以ms为单位指定通信线路上两个字符到达之间的最大时间间隔;ReadTotalTimoutMultiplier以ms为单位指定一个系数,该系数用来计算读操作的总超时时间;ReadTotalTimouConstant以ms为单位指定一个常数,该常数用来计算读操作的总超时时间;WriteTotalTimoutMultiplier以ms为单位指定一个系数,该系数用来计算写操作的总超时时间;WriteTotalTimoutConstant以ms为单位指定一个常数,该常数用来计算读写作的总超时时间。

            Windows API GetCommTimeOuts ( )函数来获得当前超时参数。    

            GetCommTimeOuts ( )函数声明如下:    

    BOOL GetCommTimeOuts (    
    HANDLE hFILE, // 标识通信设备,CreatFile ( )函数返回该句柄    
    LPCOMMTIMEOUTS lpCommTimeouts // 指向一个COMMTIMEOUTS结构,返回超时信息    
    );    

           如果想获得进一步的错误信息,可以调用GetLastError ( )函数来获取。

     

    5  通信状态和通信错误

        如果在串口通信中发生错误,如发生终端、奇偶错误等,I/O操作将会终止。如果程序要进一步执行I/O操作,必须调用ClearCommError ( )函数。ClearCommError ( )函数有两个作用,一是清除错误条件,一是确定串口通信状态。

    ClearCommError ( )函数声明如下:    
    BOOL ClearCommError(    
    HANDLE hFILE, // 由CreatFile ( )函数返回的句柄    
    LPDWORD lpErrors, // 指向一个指明错误类型的掩码填充的32位变量    
    LPCOMSTAT lpStat // 指向一个COMSTAT结构接收设备的状态    
    );    


    3.4  程序实例

          下面的程序为打开并初始化端口:

    HANDLE hCom;    
    DWORD dwError;    
    DCB dcb;    
    COMMTIMEOUTS TimeOuts;    
    hCom=CreateFile(“COM1”, //对串口1进行操作    
    GENERIC_READ | GENERIC_WRITE, //允许读和写    
    0, //独占方式    
    NULL,    
    OPEN_EXISTING,    
    FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, //重叠方式    
    NULL    
    );    
    if(hCom==INVALID_HANDLE_VALUE)    
     {  dwError=GetLastRrror( );    
    . …//错误处理    
    }    
    SetupComm(hCom,1024,1024) //缓冲区的大小为1024    
    TimeOuts.ReadIntervalTimeout=1000;    
    TimeOuts.ReadTotalTimoutMultiplier=500;    
    TimeOuts.ReadTotalTimouConstant=5000;    
    TimeOuts.WriteTotalTimoutMultiplier=500;    
    TimeOuts.WriteTotalTimoutConstant=5000;    
    SetCommTimeouts(hCom,&TimeOuts); // 设置超时    
    GetCommState(hCom,&dcb);    
    dcb.BaudRate=2400; // 数据传输速率为2400    
    dcb.ByteSize=8; // 每个字符为8位    
    dcb.Parity=NOPARITY; // 无校验    
    dcb.StopBits=ONESTOPBIT; // 一个停止位    
    SetCommState(hCom,&dcb);    


    4  结束语

            Win32 API作为 Windows平台的应用程序编程接口,是windows的核心。通过充分理解和利用API函数,可以使我们深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性,为我们在工程实践中进行串口通信编程提供方便。



    参考:http://wenku.baidu.com/view/85339b85ec3a87c24028c43a.html

    其他相关帖子:http://www.cnblogs.com/xi52qian/archive/2011/08/30/2159675.html

                  http://blog.csdn.net/zhaozidong86/article/details/5884503


    展开全文
  • fx1n 232通信程序,网上分想的,有时会死机。我也不知是什么 问题,
  • 第6章 vb串口通信程序设计典型实例 172 6.1 pc与pc串口通信程序设计 172 6.1.1 pc与pc串口通信程序设计目的 172 6.1.2 pc与pc串口通信程序设计用软、硬件 172 6.1.3 pc与pc串口通信程序硬件线路图 172...
  • 第6章 vb串口通信程序设计典型实例 172 6.1 pc与pc串口通信程序设计 172 6.1.1 pc与pc串口通信程序设计目的 172 6.1.2 pc与pc串口通信程序设计用软、硬件 172 6.1.3 pc与pc串口通信程序硬件线路图 172...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

vb串口通信程序实例