100分求mscomm传送十进制0的例子!!!

解决方案 »

  1.   

    ...//其他初始化
    m_serialPort.SetInputMode(1);//comInputModeBinary
    m_serialPort.SetPortOpen(TRUE);
    ...
    char szSend[2]={0};
    szSend[0] = '0';  //要传输的字符'0' 
    szSend[1] = '\0';VARIANT varSend;
    varSend.vt = VT_BSTR;
    varSend.bstrVal = ::SysAllocStringByteLen( szSend, sizeof(szSend) );m_serialPort.SetOutput( varSend );
      

  2.   

    找一个CSerialPort类,MSComm在VC中就已经不再需要了
      

  3.   

    用CreateFile读写串口比较方便。
    ----------------------------------------
    相信自己,相信明天!快给我分,不然我抢的啦^_^
    ----------------------------------------
                           时光.漫步
      

  4.   

    如果发送的第一个字节是'\0'就不能用 CHAR * 来做参数类型,要用下面的方法:
    const UINT n = 2;
    CByteArray baSend;
    baSend.SetSize(n);
    baSend[0]=0;
    baSend[1]=...;
    m_pMSComm->PutOutput(COleVariant(baSend));
      

  5.   

    if(m_MsComm1.GetPortOpen())//如果串口已经打开,则先关闭
    m_MsComm1.SetPortOpen(FALSE);
    m_MsComm1.SetCommPort(1);   //选择com串口 if( !m_MsComm1.GetPortOpen())
    m_MsComm1.SetPortOpen(TRUE);//打开串口
    else
    {
    AfxMessageBox("不能打开串口");
    return;
    } m_MsComm1.SetInputMode(1); //1:表示以二进制方式检取数据(若为0,则为文本方式)
    m_MsComm1.SetRThreshold(1); 
    //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
    m_MsComm1.SetInputLen(0);  //设置当前接收区数据长度为0
    m_MsComm1.GetInput();//先预读缓冲区以清除残留数据 BYTE sendData[1];//保存要发送的配时设置信息
    //int b=sizeof(char);
    sendData[0]=0;//要发送的字符 CByteArray m_Output;
    m_Output.RemoveAll();
    m_Output.SetSize(1);
    for(i=0;i<1;i++)
    {
       m_Output.SetAt(i,sendData[i]);
    }
    m_MsComm1.SetOutput(COleVariant(m_Output));