游子的博客
慈母手中线,游子身上衣, 临行密密缝,意恐迟迟归, 谁言寸草心,报得三春晖。 数据读取中,请稍候......
posts - 337,  comments - 546,  trackbacks - 0

我写了串口通讯测试程序,可以接收到设备发来的数据,但发不出去。
 HANDLE hCom;
 DWORD dwError;
 hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
 if (hCom == (HANDLE)0xFFFFFFFF)
 {
  dwError = GetLastError();
  MessageBox(CString(dwError));
 }
 DCB dcb;
 GetCommState(hCom, &dcb);
 dcb.BaudRate = 115200; //波特率为9600
 dcb.ByteSize = 7; //数据位数为7位
 dcb.Parity = EVENPARITY; //偶校验
 dcb.StopBits = 2; //两个停止位
 dcb.fBinary = TRUE;
 dcb.fParity = TRUE;
 if (!SetCommState(hCom, &dcb))
 {
  MessageBox("串口设置出错!");
 }
 SetupComm(hCom, 1024,1024); //设置缓冲
 PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); 

 //设置超时
 COMMTIMEOUTS to;
 memset(&to, 0, sizeof(to));
 to.ReadIntervalTimeout = 10;
 SetCommTimeouts(hCom, &to);
 char buf[1024];
 unsigned long wCount=0;
 int i = 0;
 for(;;)
 {
  ReadFile(hCom, buf,sizeof(buf), &wCount, NULL);
   printf("recv %s",buf);
  sprintf(buf,"%s", "this is from pc");
  WriteFile(hCom, buf, sizeof(buf), &wCount, NULL);//发送数据
  Sleep(111);
 }
 return 0;
以上代码中,可以收到设备发来的数据,但执行到 WriteFile(hCom, buf, sizeof(buf), &wCount, NULL);就停了;如果把dcb.ByteSize = 7; 改成8,就可以运行下去,但此时设备并没有收到数据,PC机也收不到设备发来的数据了。
真是奇怪,有没有高手啊?

posted on 2006-08-21 15:11 游子 阅读(313) 评论(2)  编辑 收藏 引用 所属分类: 软件

FeedBack:
# re: 串口通讯问题
2006-08-21 17:46 | 游子
不是我程序的问题,我把程序拷到别人的机器,正常。
于是我把自己的机器重启一下,也正常了。
鸟机器!  回复  更多评论
  
# re: 串口通讯问题
2006-08-22 16:38 | 游子
我通过别人写的一个PC程序往该嵌入式设备发数据,总是让设备中断出现问题:
task 0 "Interrupt[0]" stopped at 0x12345679 by user breakpoint
不知道那个程序做了什么?我没有源码,看不到。很晕.  回复  更多评论
  
只有注册用户登录后才能发表评论。

欢迎大家扔鸡蛋!送鲜花!

博客可以收入过千吗?

<2006年8月>
日一二三四五六3031
12345678910111213141516171819202122232425262728293031123456789

常用链接

留言簿(8)

随笔分类(314)

随笔档案(337)

文章分类(7)

文章档案(10)

相册

收藏夹(1)

其它

友情链接

数字电视

生活、旅游

自己的链接

计算机

搜索

  •  

积分与排名

  • 积分 - 403155
  • 排名 - 9

最新评论

阅读排行榜

评论排行榜