新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2020-6-8
- 在线时间
- 6 小时
|
1金钱
求助!
问题描述:程序里Parity变量为奇偶校验值的动态变量,0为无奇偶校验,1为偶校验,2为奇校验。通过菜单设置相应的校验类型,存入const u16 Parity[3]={0x0000,0x0400,0x0600};,默认值为0,即无奇偶校验,现在设置成1,偶校验后,断电重启,又恢复到默认值了。
请各位大神指点,在线等。
奇偶校验的菜单程序如下:
菜单5的奇偶校验
*更新时间:2019-6-28 9:21:06
*/
u8 Secondary_page_5_Parity(void)
{
u8 Parity=RS485Parameter[3];//将校验位赋值给动态变量
while(1)
{
if(ExitTimed==(600-1)) return 0;//如果没有任何按键按下的时候,等待60s自动上级界面
Flashing(0, 25, RS485Parameter[3], 36, Parity);
if(UP_LongPress==20)//向上翻页
{
UP_LongPress=22;//防止按一次多次进入
if(Parity==2) Parity=0;//总共8个次级界面,循环显示 ,Parity原值为0
else Parity++;//向上翻页
}
else if(DOWN_LongPress==20)//向下翻页
{
DOWN_LongPress=22;//防止按一次多次进入
if(Parity==0) Parity=2;//总共8个次级界面,循环显示 //(Parity==0)
else Parity--;//向下翻页
}
if(OK_LongPress==20)
{
OK_LongPress=22;
if(RS485Parameter[3]!=Parity)
{
if(Parity>0) RS485Parameter[1]=1;
else RS485Parameter[1]=0;
RS485Parameter[3]=Parity;//确定奇偶校验值
eMBInit(MB_RTU, RS485Parameter[4], 0, Baud_Rate[RS485Parameter[0]], MB_PAR_NONE); //现在串口1函数的参数写死在程序里面的,需要自己移植串口
eMBEnable();//更新
VariableUpdate=1;//变量更新标志
}
Flashing(1, 25, RS485Parameter[3], 36, Parity);
OK_Sign=1;
return 0;
}else if(SET_LongPress==20)
{
SET_LongPress=22;
Flashing(1, 25, RS485Parameter[3], 36, RS485Parameter[3]);
return 0;
}
}
}
|
-
实际硬件显示
|