首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于RS232串口通信的有关问题,初次接触,大家帮忙看看,搞定马上结贴^

2014-07-24 
关于RS232串口通信的问题,初次接触,大家帮忙看看,搞定马上结贴^_^发在BCB里没有解决。。。不知道为什么cs.cbI

关于RS232串口通信的问题,初次接触,大家帮忙看看,搞定马上结贴^_^
发在BCB里没有解决。。。不知道为什么cs.cbInQue的值为40,而inbuff的值为5。传回来的数据少了很多。大家多多帮忙啊,谢谢~!
    String   Temp;
    char   SendData[20],inbuff[1024];
    DWORD   nBytesRead,dwError;
    COMSTAT   cs;
    unsigned   long   lrc,BS;
    DCB   dcb;
    memset(SendData,0,sizeof(SendData));
    memset(inbuff,0,sizeof(inbuff));
    Temp= "COM "+IntToStr(rdCom-> ItemIndex+1);
    hComm=CreateFile(Temp.c_str(),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
    if(hComm==INVALID_HANDLE_VALUE)
    {
        MessageBox(0, "打开通信端口错误! ", "信息提示 ",MB_OK);
        return;
    }
    GetCommState(hComm,&dcb);
    dcb.BaudRate=CBR_9600;
    dcb.ByteSize=8;
    dcb.Parity=NOPARITY;
    dcb.StopBits=ONESTOPBIT;
    if(!SetCommState(hComm,&dcb))
    {
        MessageBox(0, "通信端口设置错误! ", "信息提示 ",MB_OK);
        CloseHandle(hComm);
        return;
    }
    SendData[0]=0x1b;
    SendData[1]=0x10;
    SendData[2]=0x10;
    SendData[3]=0x00;
    SendData[4]=0x05;
    SendData[5]=0xc5;
    SendData[6]=0x93;
    SendData[7]= '\0 ';
    BS=7;
    WriteFile(hComm,SendData,BS,&lrc,NULL);
    Sleep(100);
    ClearCommError(hComm,&dwError,&cs);
    if(cs.cbInQue> sizeof(inbuff))
        PurgeComm(hComm,PURGE_RXCLEAR);
    Edit1-> Text=IntToStr(cs.cbInQue);
    ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);
    inbuff[cs.cbInQue]= '\0 ';
    Edit2-> Text=StrLen(inbuff);
    Memo1-> Text=String(inbuff);
    if(hComm!=INVALID_HANDLE_VALUE)
        CloseHandle(hComm);

[解决办法]
会不会是拨特率没设置对
[解决办法]
波特率设置最好一样
[解决办法]
不懂..学习
[解决办法]
你的串口参数是怎么设的,代码贴出来看看
[解决办法]
ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);

这里,最好把超时设置贴出来,很可能是读操作很快返回了。

热点排行