欢迎来到天天文库
浏览记录
ID:1552505
大小:62.00 KB
页数:2页
时间:2017-11-12
《本人有一个用mfc实现的串口程序,初始化如下》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、本人有一个用MFC实现的串口程序,初始化如下:ResetData();fp=fopen("output.txt","w+");if(m_MSComm.GetPortOpen())//如果串口是打开的,则行关闭串口m_MSComm.SetPortOpen(FALSE);m_MSComm.SetCommPort(1);//选择COM1m_MSComm.SetInBufferSize(1024);//接收缓冲区的大小m_MSComm.SetOutBufferSize(512);//发送缓冲区的大小m_MSComm.SetInputLen(0);//设置当前接收区数据
2、长度为0,表示全部读取m_MSComm.SetInputMode(1);//以二进制方式读写数据m_MSComm.SetRThreshold(21);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件m_MSComm.SetSettings("19200,n,8,1");//波特率19200无检验位,8个数据位,1个停止位if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开m_MSComm.SetPortOpen(TRUE);//打开串口elseAfxMessageBox("OpenSerialPortFailu
3、re!");inta;a=m_MSComm.GetInBufferCount();//将输入缓冲区内等待读取的字节数赋给am_MSComm.GetInput();//先预读缓冲区以清除残留数据向接受机发送了字符串“01qS”的程序如下:inti;intmm,nn;CByteArrayarray;array.RemoveAll();array.SetSize(4);for(i=0;i<4;i++){array.SetAt(i,tdata[1][i]);//unsignedchartdata[3][4]={{'H'},{'0','1','q','S'},{'0',
4、'1','r','S'}};}if(!m_MSComm.GetPortOpen())m_MSComm.SetPortOpen(TRUE);//发送数据m_MSComm.SetOutput(COleVariant(array));//删除数据,释放内存array.RemoveAll();array.FreeExtra();接收机有两种板子,分别采用射频技术和蓝牙技术。当采用射频板子时,发现板子能正确接受数据,PC随后接受到板子发来的一系列数据(说明上面的程序是对的)。但当替换为蓝牙板子时,板子不能接受到正确的数据,而且二者的数据格式和波特率完全相同。本人用串口调
5、试软件sscom32对蓝牙板子进行测试,如下设置后能板子正确接受到PC发来的命令,由于板子接受到“01qS”的命令后会向PC机发送数据,但sscom32并没有接受到数据。但当我选中RTS后,sscom32接受到了蓝牙板子的数据并在上面的数据框中显示:这表明蓝牙板子已和sscom32正常通信了。请问是否是因为我上面的程序没有添加流控制协议才导致和蓝牙板子通信的失败,还是别的原因?请问如何解决,对上面的程序如何修改?急用,不胜感激!
此文档下载收益归作者所有