本帖最后由 u013644930 于 2015-03-12 20:57:21 编辑

解决方案 »

  1.   

    typedef int (_stdcall *preadVB)(int PLCaddr,int Vaddr,int length,CString buff)
    这个应该不匹配
    typedef int (_stdcall *preadVB)(int PLCaddr,int Vaddr,int length,unsigned char* buff)........
    unsigned char buf[1024];
    if (mreadVB(2, Vaddr, length,buf)>0)
      

  2.   

    改过之后明显改善,只是依然不能四个字节以字符形式在编辑框中显示,难道是“tmp +=rxdata + ",";  //加入接收编辑框对应字符串”或者是“ m_b = tmp;”的问题?那要怎么改呢?调试中buff[]各字节的值都正确,循环中rxdata的值也正确,只是tmp总是显示最后一个字节的值。好在每个字节的值单独提取没问题了。但是四个字节的字符串连接显示该怎么办呢?希望能再帮次忙!哦,对了,tmp的转换数据格式对tmp重新赋值了,因此只显示最后一个字节。对吧?失误!
      

  3.   


    你这个应该是串口使用modbus协议吧。读回的数据应该是数值格式,你应该查看下位机的说明书的通信部分的数据格式是什么,再按数据格式解释