就象串口调试助手一样,不知如何通过串口发送一文件(.hex)。请高手指教。

解决方案 »

  1.   

    HANDLE CommFile;
    DCB CommDCB;
    // DWORD ErrorFlag;
    // COMSTAT ComState;
    DWORD iLength;
    BOOL rc;
       // CString oBuff;
        
    if((CommFile=CreateFile("COM2",GENERIC_WRITE,0,NULL,
    OPEN_EXISTING,0,NULL))== (HANDLE)-1) 
    {
    MessageBox("无法开放通讯口,请检查是否有此通讯口!","错误!",MB_ICONERROR);
    return;
    }
    SetupComm(CommFile,8192,8192); 
    GetCommState(CommFile, &CommDCB);
    /* CommDCB.BaudRate = 9600;
    // CommDCB.BaudRate =19200;
    CommDCB.ByteSize = 8; 
    CommDCB.Parity = NOPARITY; 
    CommDCB.StopBits = ONESTOPBIT; 
    */
    CommDCB.BaudRate = 19200;
    CommDCB.ByteSize = 8;
    CommDCB.Parity =  NOPARITY;
    CommDCB.StopBits = ONESTOPBIT;
    CommDCB.EvtChar = 0x0d;
    // BuildCommDCB("COM1: 96,n,8,1 ", &dcb);
    CommDCB.fDtrControl = DTR_CONTROL_ENABLE;
    CommDCB.fRtsControl = RTS_CONTROL_ENABLE;
    CommDCB.fInX = CommDCB.fOutX = 1;
        CommDCB.XonLim = CommDCB.XoffLim = 100 ;
    CommDCB.XonChar = 0x11;
    CommDCB.XoffChar = 0x13;
    CommDCB.fBinary = TRUE ;
    CommDCB.fParity = TRUE ;
        SetCommState(CommFile,&CommDCB); 
    iLength=40;
    rc = WriteFile(CommFile, &buffer,iLength,
    &iLength,NULL);
    //ClearCommError(CommFile,&ErrorFlag,&ComState);
    //iLength=ComState.cbOutQue; 
    CloseHandle(CommFile);
    MessageBox("传送完毕","传送成功",MB_OK);
      

  2.   

    其实和一般的TCP/IP传数据一样的打开文件 读取缓冲区大小的数据 然后发送不过最好是加上CRC校验这样可以检验你发送数据的正确性 然后发送 对方接收