初学VC++。编写智能仪器通讯程序。如何使用API函数的WriteFile()将从编辑框输入的字符串转换为16进制数指令发送?如何使用ReadFile()接收仪表返回的16进制数据并显示在编辑框中?

解决方案 »

  1.   

    写2个函数来转换
    WriteFile和ReadFile用来写、读串口
      

  2.   

    你是用串口通信吗?
    如果是用串口,
    先用createfile创建打开串口,
    然后设置串口属性,在调用WriteFile,readFile等
      

  3.   

    下面是我的发送函数:
    BYTE lpOutBuffer[8];
    lpOutBuffer[0]=0x80;
    lpOutBuffer[1]=0x80;
    lpOutBuffer[2]=0x52;
    lpOutBuffer[3]=0x01;
    lpOutBuffer[4]=0x00;
    lpOutBuffer[5]=0x00;
    lpOutBuffer[6]=0x52;
    lpOutBuffer[7]=0x01; DWORD dwBytesWrite=8;
    COMSTAT ComStat;
    DWORD dwErrorFlags;
    BOOL bWriteStat;
    ClearCommError(hCom,&dwErrorFlags,&ComStat); bWriteStat=WriteFile(hCom,lpOutBuffer,
    dwBytesWrite,& dwBytesWrite,&m_osWrite);//写串口控制指令是发出去了。但是仪器返回的数据我接收到一串奇怪的字符。
    下面是读缓冲区指令:定义char str[10];仪表要返回10个字节的16进制数。
    bReadStat=ReadFile(hCom,str,dwBytesRead,&dwBytesRead,&m_osRead);//读串口
    m_back=str;//文本框显示
    str里面存的是16进制字符吗?是不是需要经过一些转换。怎么转换。
      

  4.   

    下面是我的发送函数:
    BYTE lpOutBuffer[8];
    lpOutBuffer[0]=0x80;
    lpOutBuffer[1]=0x80;
    lpOutBuffer[2]=0x52;
    lpOutBuffer[3]=0x01;
    lpOutBuffer[4]=0x00;
    lpOutBuffer[5]=0x00;
    lpOutBuffer[6]=0x52;
    lpOutBuffer[7]=0x01; DWORD dwBytesWrite=8;
    COMSTAT ComStat;
    DWORD dwErrorFlags;
    BOOL bWriteStat;
    ClearCommError(hCom,&dwErrorFlags,&ComStat); bWriteStat=WriteFile(hCom,lpOutBuffer,
    dwBytesWrite,& dwBytesWrite,&m_osWrite);//写串口控制指令是发出去了。但是仪器返回的数据我接收到一串奇怪的字符。
    下面是读缓冲区指令:定义char str[10];仪表要返回10个字节的16进制数。
    bReadStat=ReadFile(hCom,str,dwBytesRead,&dwBytesRead,&m_osRead);//读串口
    m_back=str;//文本框显示
    str里面存的是16进制字符吗?是不是需要经过一些转换。怎么转换。
      

  5.   

    异步读写会立即返回,因此需要判断返回值,并且在被挂起时还需要等待结束仔细研读下MSDN的帮助文档
    Serial Communications