串行通信求助

zxyhddx 2005-09-09 03:38:02
下面是我的代码,请问大家为什么readfile读不到值.

m_handleSerialData=CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(m_handleSerialData==INVALID_HANDLE_VALUE)
return FALSE;
SetupComm(m_handleSerialData, 4096, 4096);


DCB dcb;
if(!GetCommState(m_handleSerialData, &dcb)) return FALSE;
dcb.Parity=NOPARITY;
// 硬件流控制设置
dcb.fOutxCtsFlow=FALSE;
dcb.fRtsControl=FALSE;
dcb.fDsrSensitivity=FALSE;
dcb.fDtrControl=FALSE;
dcb.fRtsControl=FALSE;
// XON/XOFF流控制设置
dcb.fInX=dcb.fOutX=FALSE;
//dcb.XonChar=XON;
//dcb.XoffChar=XOFF;
//dcb.XonLim=50;
//dcb.XoffLim=50;
dcb.DCBlength=sizeof(DCB);
//dcb.fBinary=TRUE;
dcb.BaudRate=CBR_115200; // 数据传输速率
dcb.ByteSize=8;// 每字节位数
dcb.Parity = NOPARITY;
dcb.StopBits=ONESTOPBIT;
BOOL b=SetCommState(m_handleSerialData, &dcb);




COMMTIMEOUTS timeout;
GetCommTimeouts(m_handleSerialData, &timeout);
timeout.ReadIntervalTimeout=MAXDWORD;
timeout.ReadTotalTimeoutMultiplier=0;
timeout.ReadTotalTimeoutConstant=0;

timeout.WriteTotalTimeoutMultiplier=10;
timeout.WriteTotalTimeoutConstant=10;

SetCommTimeouts( m_handleSerialData , &timeout );

char *buff="AT+CPOL";
memset(m_pbyteSerialData, 0x00, 4096);
m_dwSerialDataCount=strlen(buff);
int n=WriteFile(m_handleSerialData,buff,m_dwSerialDataCount,&m_dwSerialDataCount,NULL);
int m=ReadFile(m_handleSerialData, m_pbyteSerialData, 4094, &m_dwSerialDataCount, NULL);
...全文
248 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_rabbit 2005-09-09
  • 打赏
  • 举报
回复
try it
------------------------------------------------
GetCommTimeouts(devId[tdNo],&timeouts);
memset(&timeouts,0,sizeof(timeouts));
timeouts.ReadIntervalTimeout=MAXDWORD;
SetCommTimeouts(devId[tdNo],&timeouts);
zxyhddx 2005-09-09
  • 打赏
  • 举报
回复
补充一点,串口的打开,波特率的配置都正常,就是读数据出现超时情况,谢谢大家

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧