FP WinPro 解析ASCII报文 点击:265 | 回复:6



工控闯天涯

    
  • 精华:0帖
  • 求助:7帖
  • 帖子:7帖 | 21回
  • 年度积分:943
  • 历史总积分:1003
  • 注册:2020年5月25日
发表于:2022-10-25 22:07:51
楼主
求助帖50分-已结帖

Snipaste_2022-10-25_14-58-03.png

如图,将两个+号后的ASCII转成10进制 1.154和2.433

1分不嫌少!


楼主最近还看过



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10219回
  • 年度积分:3353
  • 历史总积分:48938
  • 注册:2005年4月22日
发表于:2022-10-26 10:15:24
1楼

第一步:使用MID指令截取你需要转换的字符串。

第二步:使用STRING_TO_REAL指令将转换后的数据转换为REAL。


HAVE FUN!

关育谋

  • [版主]
  • 精华:5帖
  • 求助:22帖
  • 帖子:738帖 | 5640回
  • 年度积分:68
  • 历史总积分:84034
  • 注册:2004年5月28日
发表于:2022-10-26 10:40:07
2楼

严谨一点的话,首先要判断特定字符,如果这个字符串中有这个特定字符的话,再进行判断
再比如说,判断字符串中是否有RMA,如果有再进行截取,然后从截取的字符串第5个或者第4个(取决于+是特定字符还是正负号)字符开始进行转换。

工控闯天涯

  • 精华:0帖
  • 求助:7帖
  • 帖子:7帖 | 21回
  • 年度积分:943
  • 历史总积分:1003
  • 注册:2020年5月25日
发表于:2022-10-26 22:14:04
3楼

初次使用FPWinPro指令不太熟,各位大神能否抽时间写个简单的例程

冲出枪林弹雨

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 62回
  • 年度积分:438
  • 历史总积分:1059
  • 注册:2015年9月04日
发表于:2022-10-30 23:37:28
4楼

(* 声明字符串 *)

str := 'abcd+1234.5678';


(* 从字符串中寻找 ‘+’的位置 *)

viPos := FIND(IN1 := str, IN2 :='+');


(* 从开始位置提取设定长度的strResult *)

strResult := MID(IN := str, L := viLen, P := viPos);


(* 将获取的strResult转换为浮点数 *)

rReselt := STRING_TO_REAL(strResult);


冲出枪林弹雨

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 62回
  • 年度积分:438
  • 历史总积分:1059
  • 注册:2015年9月04日
发表于:2022-10-30 23:41:59
5楼

360截图20221030233704529.jpg

做了一个小例子,可以参考这个思路,将第一个和第二个+号后的数据取出来,做转换;

在实际用的过程中,还要判断每次收到数据的完整性和正确性,做个简单的校验;另外将获取的数据做上下限判断后再使用,防止异常数据造成程序出错

Smile-lyc

  • [管理员]
  • 精华:127帖
  • 求助:50帖
  • 帖子:3482帖 | 22331回
  • 年度积分:1963
  • 历史总积分:145694
  • 注册:2006年8月04日
发表于:2022-12-14 09:46:10
6楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。

3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。




热门招聘
相关主题

官方公众号

智造工程师