一个类似于读卡机的程序,如何能实现打开一个com口,并读入数据的功能?

解决方案 »

  1.   

    CreateFile();打开
    ReadFile();或DeviceIoControl()读数据
      

  2.   

    两个函数的用法见MSDN或相关资料。
      

  3.   

    http://images.163.com/images/it/books/vc/chap12/chap12_3.htm
    是一个很好的教程
      

  4.   

    网上有专门写好的串口类,你只要通过open,read write就可以轻松高定
      

  5.   

    现在是这样:
    if((hComDev = (HWND )CreateFile(COMADDR, GENERIC_READ|GENERIC_WRITE,0,
    NULL, OPEN_EXISTING, 0, NULL))==INVALID_HANDLE_VALUE)  
    {
    str.Format("Error opening COM%d port!", G_CardPort);
    AfxMessageBox(str);
    return ;
    }接下来该如何读入数据?
      

  6.   

    MOV AH ,2
    MOV DX ,0
    INT 14H
      

  7.   

    楼上的写的什么?能说明白点吗?to:rainlight(蓝色的海) 
    你说的那个网站里没有告诉我如何读数据啊??
      

  8.   

    这是重叠方式
    DWORD CMytry1Dlg::ReadComm(char *buf, DWORD dwLength)
    {
    DWORD length=0;
    COMSTAT ComStat;
    DWORD dwErrorFlags; ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
    ReadFile(m_hCom,buf,length,&length,&m_osRead);//读
            //m_hCom是你用CreateFile返回的句柄
    return length;
    }
      

  9.   

    用MSCOMM或者用CreateFile("COM1",............)
    再用ReadFile 和WriteFile读写;
      

  10.   

    COM口已打开,然后读取:
    while (MyApp->G_bReading)

        if (WaitCommEvent(MyApp->G_hComDev[iCurrent], &dwEvent, NULL))
        {
            ClearCommError(MyApp->G_hComDev[iCurrent], &dwError, &cs);
            …………
            …………
        }

    发现总进不了if的语句里,请教原因。
    是否我WaitCommEvent用得不对?