WINDOWS CE下232串口的使用问题

近来做WINCE下RS232串口通讯,遇到串口数据无法送出来的问题 。郁闷啊!在网上找了很久资料,终于知道是什么原因了!并将相关通讯代码发上来,为同行提供一些借鉴!

我们使用的是研祥的EC3-1547的工控板,X86内核,使用WINCE.net!在使用串口通讯的过程中COM1无法发送/接收到任何数据,通过测试,可以确定串口完好,在使用研祥提供的串口测试工具进行测试时依然无法发送/收到数据,使用试波器对通讯过程的串口进行监测,无数据发送出来。观察WINCE的启动过程发现在启动过程中有系统的调试信息从COM1输出。研祥提供了其它定制的WINCE系统依然如此。最后在网上寻找相关资料,得到这样一个信息:通常情况下WINCE采用COM1做调试信息的输出用途,要在正式产品前去掉COM1的调试功能。

WINCE串口通讯代码:

//打开串口

 hHandel=CreateFile("COM1:",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
 if(hHandel==(HANDLE)-1)
 {
  return false;
 }

 //进行配置
 dcb.DCBlength=sizeof(DCB);
 GetCommState(hHandel,&dcb);
 dcb.Parity=NOPARITY;
 dcb.ByteSize=8;
 dcb.BaudRate=9600;
 dcb.StopBits=ONESTOPBIT;
 re=SetCommState(hHandel,&dcb);
 if(!re)
 {
  return false;
 }


 //超时设置
 COMMTIMEOUTS CommTimeouts;
 GetCommTimeouts (hHandel, &CommTimeouts);//取得时间参数
 CommTimeouts.ReadIntervalTimeout = MAXDWORD; //最大时间参数
 CommTimeouts.ReadTotalTimeoutMultiplier = 0; 
 CommTimeouts.ReadTotalTimeoutConstant = 3000;    //此处值真正有用
 CommTimeouts.WriteTotalTimeoutMultiplier = 0; 
 CommTimeouts.WriteTotalTimeoutConstant = 0; 
 SetCommTimeouts (hHandel, &CommTimeouts);
 //清空串口缓存
 PurgeComm(hHandel,PURGE_RXCLEAR);
 PurgeComm(hHandel,PURGE_TXCLEAR);

//发送

BYTE TempBuf[24];

DWORD dwBytesRead;

CString ErrorInfo;

 if(WriteFile(hHandel,TempBuf,sizeof(TempBuf),&dwBytesRead,NULL))
{

}

//接收

  if(ReadFile(hHandel,TempBuf,sizeof(TempBuf),&dwBytesRead,NULL))
 {
  //判断是否超时
  if(dwBytesRead<sizeof(TempBuf))
  {
   ErrorInfo.Format(_T("接收超时!")); 
   return false;
  }
  else
  {
  }
 }
 else
 {
  ErrorInfo.Format(_T("接收失败!")); 

return false;
 }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lujunql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值