我用一根串口线连接两台机器,98 AS 2K 会出现接受到的字符为“乱码”,2K AS 2K 确可以正常接受数据?
m_hFile = CreateFile( "COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,                    FILE_FLAG_OVERLAPPED,
NULL );
     ......
WriteFile( m_hFile , "hello", 5, &iLen, &m_OverLap );
     ......

解决方案 »

  1.   

    使用Microsoft Communications Control试试。
      

  2.   

    2KD 的字符是UNICODE,而98不是
    所以你把WriteFile中的"hello"改为_T("hello")就可以了
      

  3.   

    改成_T()没有用,_T()这个宏依赖于是否以UNICODE的方式编译,本身就有可能创建UNICODE字符串。
    我是在两台机器上同时执行同个程序,从98上发过来的字符都是正常的,但是98的机器上受到来自2K的字符却是乱码。这应该是和2K的UNICODE字符集有关系,但我不知道该如何解决。
      

  4.   

    假如你的缓冲区都使用BYTE类型的话就不会有问题了。
      

  5.   

    不对,WriteFile应该没有UNICODE和ASCII版本的区别
      

  6.   

    WriteFile( m_hFile , "hello", 5, &iLen, &m_OverLap );
    字符串长度是6个字节吧,会不会是这里的问题
      

  7.   

    我不明白的一点就是,同一个程序,放在两台win2k的机器上,是可以正确发送接受数据,如果你们有条件的话,试试吧,我是用了3台机器试了,或许我忽略了什么,实在是很郁闷!
      

  8.   

    http://expert.csdn.net/Expert/topic/1149/1149448
      

  9.   

    在98 下没问题,在NT要用串行文件读写函数  WriteFileEx RandFileEx用于端口文件操作