求教!串口通信接收不了数据
数据可以发出去,但是就是接收不到。。。。
代码:
BOOL CcomDlg::OnInitDialog()
{
//1 打开串口
hCom = CreateFile(_T("COM5"), GENERIC_WRITE|GENERIC_READ,0,NULL, OPEN_EXISTING,0,NULL);
if((HANDLE)-1 == hCom)
{
MessageBox(_T("打开串口失败"));
return FALSE;
}
//2 配置串口
DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = TWOSTOPBITS;
SetCommState(hCom, &dcb);
//3 设置缓冲区大小
SetupComm(hCom, 1000, 1000);
//4 设置读写超时
COMMTIMEOUTS TimeOuts;
TimeOuts.ReadIntervalTimeout = MAXDWORD;
TimeOuts.ReadTotalTimeoutConstant = 0;
TimeOuts.ReadTotalTimeoutMultiplier = 0;
TimeOuts.WriteTotalTimeoutConstant = 2000;
TimeOuts.WriteTotalTimeoutMultiplier = 500;
SetCommTimeouts(hCom, &TimeOuts);
//5 清空缓冲区
PurgeComm(hCom, PURGE_RXABORT|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_TXCLEAR);
/********************************************/
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CcomDlg::OnBnClickedBtnrecv()
{
char buff[100] = {0};
//memset(buff,'\0',100);
DWORD dwByteWrite = 100;
BOOL bReadState = 0;
//问题处:为什么一直读不到数据?????
bReadState = ReadFile(hCom, buff, dwByteWrite, &dwByteWrite, NULL);
if(!bReadState)
{
MessageBox(_T("读数据失败"));return;
}
m_staRecv = buff;
UpdateData(FALSE);
}
void CcomDlg::OnBnClickedBtnsend()
{
UpdateData(TRUE);
if(m_staSend.IsEmpty())
{
return;
}
DWORD wCount = 0;
BOOL bWriteState = WriteFile(hCom, m_staSend, m_staSend.GetLength(),&wCount,NULL);
if(!bWriteState)
{
MessageBox(_T("写数据失败"));return;
}
m_staSend = "";
UpdateData(FALSE);
}