用API吧,没有几个。这个控件要手工添加到工程里,工程---添加----控件----找到mccomm控件----确定。

解决方案 »

  1.   

    楼上的人说的很详细!
    不过这个我做过,如果你是想通过传送一些数据(如ASCII)的话我有代码的
      

  2.   

    我给你个最简单的代码,那个控件不好用,呵呵。如果要复杂点的,比如用线程方式的,也可以给你。
     这段代码我正用于控制单篇机,效果不错,呵呵。
    // COM.cpp: implementation of the CCOM class.
    //
    //////////////////////////////////////////////////////////////////////#include "stdafx.h"
    #include "Radio.h"
    #include "COM.h"#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif//////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////CCOM::CCOM()
    {
    m_bConnected=FALSE;}CCOM::~CCOM()
    {
    if(m_hCom !=NULL)
    CloseHandle(m_hCom);}
    void CCOM::CloseConnect()
    {
    CloseHandle(m_hCom);
    }
    void CCOM::OpenConnect()
    {
    COMMTIMEOUTS TimeOuts;
    if(m_bConnected)
    return ; m_hCom=CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,                  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL , NULL); // 重叠方式 if(m_hCom==INVALID_HANDLE_VALUE)
    {
    AfxMessageBox("不能打开COM1");
    return ;
    }
    m_bConnected = TRUE;
    SetupComm(m_hCom,MAXBLOCK,MAXBLOCK);
    SetCommMask(m_hCom,EV_RXCHAR);
    TimeOuts.ReadIntervalTimeout=MAXDWORD;  TimeOuts.ReadTotalTimeoutMultiplier=0;  TimeOuts.ReadTotalTimeoutConstant=0; /* 设置写超时以指定WriteComm成员函数中的GetOverlappedResult函数的等待时间*/ TimeOuts.WriteTotalTimeoutMultiplier=50;  TimeOuts.WriteTotalTimeoutConstant=2000; SetCommTimeouts(m_hCom, &TimeOuts); DCB dcb;
        if(!GetCommState(m_hCom, &dcb))
    return; dcb.fBinary=TRUE; dcb.BaudRate=9600; // 波特率 dcb.ByteSize=8; // 每字节位数 dcb.fParity=TRUE;
    dcb.Parity=NOPARITY;
    dcb.StopBits=ONESTOPBIT;
    SetCommState(m_hCom, &dcb);
    }
    DWORD CCOM::WriteComm(BYTE* buf,DWORD len)
    {
    Sleep(200);
    BOOL fState;
        DWORD length=len;
        COMSTAT ComStat;
        DWORD dwErrorFlags;
        ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
        fState=WriteFile(m_hCom,buf,length,&length,NULL);
        if(!fState)
    {
    if(GetLastError()==ERROR_IO_PENDING)
    { // GetOverlappedResult(m_hCom,&m_osWrite,&length,TRUE);// 等待
    }
            else
    length=0;
    AfxMessageBox("写COM1出错");
    }
    return length;
    }
    DWORD CCOM::ReadComm(BYTE* buf,DWORD len)
    {
    Sleep(200);
    DWORD length=0; COMSTAT ComStat; DWORD dwErrorFlags; ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
    if(ComStat.cbOutQue>0)
    PurgeComm(m_hCom,PURGE_TXCLEAR); length=min(len, ComStat.cbInQue); ReadFile(m_hCom,buf,length,&length,NULL);
    return length;
    }