• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 利用 MFC 實現串行通信

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    吉林大學 尚金瑞 在微軟公司推出的Visual C++中,不僅可以利用串行通信控件或調用 Windows API來進行串行通信,而且可以利用MFC CFile類來實現串行通訊。這種通信方式與訪問磁盤普通文件沒有太大不同。較簡單的實現方式是利用VC++中的MFC向導建立一個支持MFC
    吉林大學 尚金瑞

    在微軟公司推出的Visual C++中,不僅可以利用串行通信控件或調用Windows API來進行串行通信,而且可以利用MFC CFile類來實現串行通訊。這種通信方式與訪問磁盤普通文件沒有太大不同。較簡單的實現方式是利用VC++中的MFC向導建立一個支持MFC的工作臺工程,添入如下相關代碼即可。
    1)打開一個串口需使用:

    CFile file;

    CFileException e;

    file.Open (

    portName, //example "COM1","COM2"

    CFile::modeReadWrite,  

    &e);  

    2)關閉一個串口需使用:

    file.Close();

    3)從端口進行讀操作,需使用:

    char m_ReadBuff[UINT?。頬;

    UINT nByte=file.Read (

    &m_ReadBuff, //buffer to store byte

    UINT nCount //number of bytes to read

    );

    4)從端口進行寫操作,需使用:

    char m_WriteBuff[UINT?。頬;

    file.Write (

    &m_WriteBuff, //buffer to store byte

    UINT nCount //number of bytes to write

    );

    5)配置串口
    串行端口創建時,必須對其進行設置以匹配與其對話的設備。雖然可以通過操作系統設置這些參數,但也可以用Windows API 中的SetCommState()函數來設置它們。一般地,可用如下程序設置它們:
    DCB dcb;  

    ::GetCommState( (HANDLE)file.m_hFile, &dcb );

    dcb.BaudRate = 1200,…;  

    dcb.ByteSize = 7 or 8;  

    dcb.StopBits = 0,1,2=0,1.5,2;  

    dcb.Parity = 0-4=no,odd,even,mark,space;  

    ::SetCommState((HANDLE)file.m_hFile, &dcb );

    為了更好地控制端口可以利用SetCommTimeouts()函數打開或關閉超時功能,具體程序如下:

    COMMTIMEOUTS cto;

    ::GetCommTimeouts((HANDLE)file.m_hFile , &cto );  

    cto.ReadIntervalTimeout =0;

    cto.ReadTotalTimeoutMultiplier =0;

    cto.ReadTotalTimeoutConstant =0;

    cto.WriteTotalTimeoutMultiplier=0;

    cto.WriteTotalTimeoutConstant =0;

    ::SetCommTimeouts((HANDLE)file.m_hFile , &cto );
    采用上面的程序,利用MFC CFile類進行串行通信,代碼簡單、編程量小,可應用于在線監測、自動化控制等許多方面,對科研、生產有著廣泛的實用價值。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>