大侠救我!串口通信波特率大的时候数据就出错

qq_heilongjiang 2013-01-24 10:11:55
我用开发板(wince系统)向串口发数据,用115200的波特率的时候,数据就出错,用比他小的波特率就没有问题,怎么回事呀,快要疯了~~&&…%¥#…

正确的数据:7E 00 00 28 00 00 00 00 00 00 00 00 00 00 00 7E
错误的数据:7E 00 00 28 00 80 00 00 00 00 80 00 00 00 00 FE
下面附上串口设置代码:
	cto_main.ReadIntervalTimeout = 0;
cto_main.ReadTotalTimeoutMultiplier = 0;
cto_main.ReadTotalTimeoutConstant = 0;
cto_main.WriteTotalTimeoutMultiplier = 0;
cto_main.WriteTotalTimeoutConstant = 0;
SetCommTimeouts (hPort_main, &cto_main);//设定超时
if (hThread_main)
CloseHandle (hThread_main);
PurgeComm(hPort_main,PURGE_TXCLEAR|PURGE_RXCLEAR);


hPort_main=CreateFile(mainSerialPort+_T(":"), GENERIC_READ|GENERIC_WRITE,0, NULL, OPEN_EXISTING,0, NULL);

if(hPort_main==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T( "open com port error ! "));

}
GetCommState (hPort_main, &PortDCB_main);
PortDCB_main.BaudRate= CBR_115200; //配置串口
PortDCB_main.DCBlength= sizeof (DCB);
//PortDCB_main.BaudRate= CBR_9600;
PortDCB_main.fBinary = TRUE;
PortDCB_main.fParity= FALSE;
PortDCB_main.ByteSize= 8;
PortDCB_main.Parity= NOPARITY;
PortDCB_main.StopBits= ONESTOPBIT;

if(!SetCommState(hPort_main, &PortDCB_main))
{
AfxMessageBox(_T( "Set com port error ! "));
}


写串口的代码:
	DWORD dwBytesWrite=nLen;
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hPort_main,&dwErrorFlags,&ComStat);
bWriteStat=WriteFile(hPort_main,pBuf,dwBytesWrite,& dwBytesWrite,NULL);
if(!bWriteStat)
{
AfxMessageBox(_T("写通信板串口失败!"));
}
PurgeComm(hPort_yt, PURGE_TXABORT|
PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
...全文
1990 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fang 2013-01-28
  • 打赏
  • 举报
回复
这个波特率是和平台相关的,如果手册上没提供波特率范围,有晶振频率、和波特率发生器的位数这个可用波特率是可以算出来的,当然这个可用波特率和允许误差有很大关系。
schlafenhamster 2013-01-24
  • 打赏
  • 举报
回复
"我用开发板(wince系统)向串口发数据,用115200的波特率的时候,数据就出错" 通信距离 长 ? 用 双绞线 试试
hdg3707 2013-01-24
  • 打赏
  • 举报
回复
wince系统是否支持115200的波特率,这个很重要.你每帧的数据量不大,和缓冲区无关.另外,通信是双方的事,当出问题时不要光想是自己的问题或是别人的问题,这时就需要双方配合,共同处通信处于最佳状态,光指望一个人想解决是不现实的,就算是解决了也是挖肉补疮式的做法,或者效率低,或者是有隐患
qq_heilongjiang 2013-01-24
  • 打赏
  • 举报
回复
怎么回事呢,是缓冲区大小的问题吗,wince能不能扩大串口的缓冲区大小呢,我用setupComm函数调用不成功
jimette 2013-01-24
  • 打赏
  • 举报
回复
xumaojun 2013-01-24
  • 打赏
  • 举报
回复
很多可能是系统板子不支持这么高的波特率,先看看板子的相关说明,串口最大支持多大的波特率。否则瞎忙活了。
西热力江 2013-01-24
  • 打赏
  • 举报
回复
波特率是根据平台来设置的,不是你想设说少就设多少的
schlafenhamster 2013-01-24
  • 打赏
  • 举报
回复
38400 行吗 ?
qq_heilongjiang 2013-01-24
  • 打赏
  • 举报
回复
引用 5 楼 dzy198239 的回复:
00二进制为00000000, 80 二进制为10000000, 7E二进制为01111110, FE 二进制为11111110。 我估计是波特率太高时,硬件不支持。
硬件最多支持115200的
qq_heilongjiang 2013-01-24
  • 打赏
  • 举报
回复
引用 4 楼 schlafenhamster 的回复:
"我用开发板(wince系统)向串口发数据,用115200的波特率的时候,数据就出错" 通信距离 长 ? 用 双绞线 试试
通信的距离不长啊,就是用一根U转串的线,连开发板串口和电脑u口
dzy198239 2013-01-24
  • 打赏
  • 举报
回复
00二进制为00000000, 80 二进制为10000000, 7E二进制为01111110, FE 二进制为11111110。 我估计是波特率太高时,硬件不支持。
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

2,640

社区成员

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

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