D525主板多机通讯的问题

[复制链接]
查看11 | 回复4 | 2021-1-27 07:17:19 | 显示全部楼层 |阅读模式
上位机我使用miniD525主板,C++编程,为了仿RB8,我是这样做的
在Timer里
DCBdcb;
GetCommState(hCom,&dcb);
dcb.fParity=1;//指定奇偶校验使能
dcb.Parity=MARKPARITY;//1;//NOPARITY;//指定奇偶校验方法
SetCommState(hCom,&dcb);
//这里是发轮寻机号的代码
//然后
dcb;//设置串口信息
GetCommState(hCom,&dcb);
dcb.fParity=1;//指定奇偶校验使能
dcb.Parity=SPACEPARITY;//0;//NOPARITY;//指定奇偶校验方法
SetCommState(hCom,&dcb);
//在这里和下位机交换信息
上边的代码在我的PC上运行良好,可是移植到D525上就不行,串口也可以中断,但不能判断RB8
谁有这方面的经验?
另外我看系统属性里,D525的COM口校验位多了个"标志"选项,也就是说硬件上他是支持MARKPARITY/SPACEPARITY可为什么不行呢?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:17:19 | 显示全部楼层
晶振是12M,换成11。0592时可以,12M时误差是0。16,这难道还不可以吗?
回复

使用道具 举报

千问 | 2021-1-27 07:17:19 | 显示全部楼层
你的代码执行成功了吗?程序没有检查返回值,这是最起码的编程规范
回复

使用道具 举报

千问 | 2021-1-27 07:17:19 | 显示全部楼层
引用1楼的回复:晶振是12M,换成11。0592时可以,12M时误差是0。16,这难道还不可以吗?\
通讯的波特率和晶振是有关的
回复

使用道具 举报

千问 | 2021-1-27 07:17:19 | 显示全部楼层
引用2楼的回复:你的代码执行成功了吗?程序没有检查返回值,这是最起码的编程规范
设置DCB是没加判断,是想多条语句,多些执行时间,但是根据收发的数据判断,是执行成功,当然是粗略的看,但是在我的PC上是执行成功的,运行良好
现在又成这样了,我把晶震换成11。0592的当按计算出来的TH1,TL1为0F3H时,巡检下位机不成功,只有改成0F4H时,才成功,现在我是在地址通讯时TH1,TL1=0F4H,数据通讯时TH1,TL1=0F3H,但还是有些问题
想请问假如设置DCB是不成功的,那下一步该如何?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行