我初始化了串口。返回为 HANDLE  hComm={void}
我发送数据成功。
但是就是接收不到数据。返回长度为0;代码如下。char *data;
int nRendLen, nSendLen;
data = "at\r";
nSendLen = 3;   
WriteFile(hComm, data, (DWORD)nSendLen , &nRendLen, NULL);
nSendLen = 1024;
ReadFile(hComm,  data, (DWORD)nSendLen , &nRendLen, NULL);

解决方案 »

  1.   

    错了。我用
    BOOL ok = WriteFile(hComm, data, (DWORD)nSendLen , &nRendLen, NULL);
    返回ok=0;那就是发送也没有成功。
             HANDLE  hComm;
    DCB dcb;        
    COMMTIMEOUTS timeouts = {    
    100,        
    1,          
    500,        
    1,          
    100};        hComm = CreateFile(pPort,    
    GENERIC_READ | GENERIC_WRITE,    
    0,               
    NULL,            
    OPEN_EXISTING,   
    0,               
    NULL);            if(hComm == INVALID_HANDLE_VALUE) 
    return FALSE;         GetCommState(hComm, &dcb);         dcb.BaudRate = 9600;
    dcb.ByteSize = 8;
    dcb.Parity = 0;
    dcb.StopBits = 1; SetCommState(hComm, &dcb);         SetupComm(hComm, 4096, 1024);      SetCommTimeouts(hComm, &timeouts);  
    我的系统是2003.我看帮助里面说CreateFile适应与(me/98/95)。是不是哪里除了问题。
      

  2.   

    hComm = CreateFile("COM1",...)   返回{void} SetCommState(hComm, &dcb);      返回0   SetupComm(hComm, 4096, 1024);    返回1 SetCommTimeouts(hComm, &timeouts); 返回1
    请问高手CreateFile是不是失败了啊。
      

  3.   

    请问我要怎么样才能打开串口呢?
    我用终端控制器调试COM1的连接是好的。
      

  4.   

    可能是系统的问题了。
    可以问在2003里面有什么可以打开串口的函数么?我觉得CreateFile()不能打开啊。
      

  5.   

    我在CreateFile的第一个参数是填"\\\\.\\COM1",没有试过"COM1"
    m_hComm = CreateFile("\\\\.\\COM1",GENERIC_READ|GENERIC_WRITE, 
    FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
    只要BIOS中串口是允许状态,从来都没有失败。
      

  6.   

    同意 firstmouse(鼠先生) 
    应该用 "\\\\.\\COM1"
    另外,在WriteFile过后,
    最好 Sleep(X);等待串口上的设备响应。
    然后再ReadFile
      

  7.   

    谢谢, 
    可能是vc++.net不行。
    我把程序调到vc++6.0里面就没事了。在Vc++.net里面编译没有错。但就是打不开串口。有谁能告诉我为什么吗?
    妈的vc++.net洋不洋。土不土的,本以为在界面方面好用一些。操算了。不用他了。
      

  8.   

    .net下
    m_hCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
    是可以打开的