hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 242 個
工控威望: 492 點
下載積分: 6069 分
在線時間: 142(小時)
注冊時間: 2010-11-04
最后登錄: 2024-09-16
查看hblovetian的 主題 / 回貼
樓主  發(fā)表于: 2017-03-29 22:27
宏指令中怎么取一個字符的前幾位,后幾位,和中間幾位。如'0123456789'怎么取12345,12345678,6789。怎么編寫宏指令,謝謝。
希望各位多多指點。謝謝!
xwk0711
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 189 個
工控威望: 370 點
下載積分: 1066 分
在線時間: 169(小時)
注冊時間: 2013-01-30
最后登錄: 2024-10-15
查看xwk0711的 主題 / 回貼
1樓  發(fā)表于: 2017-03-30 10:45
在說明書里面找類似能實現(xiàn)這樣功能的指令,自己再摸索
hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 242 個
工控威望: 492 點
下載積分: 6069 分
在線時間: 142(小時)
注冊時間: 2010-11-04
最后登錄: 2024-09-16
查看hblovetian的 主題 / 回貼
2樓  發(fā)表于: 2017-03-30 10:57
引用
引用第1樓xwk0711于2017-03-30 10:45發(fā)表的  :
在說明書里面找類似能實現(xiàn)這樣功能的指令,自己再摸索

都看了幾遍手冊了,沒有能實現(xiàn)的函數(shù),望指點
希望各位多多指點。謝謝!
tyw123456
級別: 家園?

精華主題: 1 篇
發(fā)帖數(shù)量: 113 個
工控威望: 797 點
下載積分: 313 分
在線時間: 256(小時)
注冊時間: 2016-09-13
最后登錄: 2024-09-23
查看tyw123456的 主題 / 回貼
3樓  發(fā)表于: 2017-03-30 11:18
你這個問題有問題,你所說的123456789是十進(jìn)制數(shù),但是我們實際用或者你設(shè)數(shù)字元件的時候都沒有十進(jìn)制元件選用的也就是說我們看到的0123456789實際上是觸摸屏內(nèi)部將16位或是32位的數(shù)值轉(zhuǎn)化過的數(shù)值,實際上他在內(nèi)部123456789是075BCD15 也就是一個32位的字符,然后你要獲取的只能說獲取這個數(shù)的高16位或低16位,然后轉(zhuǎn)換為16位的時候,你又可以獲取他的高8位和低八位了,指令是什么LOWORO HIWORO LOBIYE HIBIYE,我忘了, 你所說的獲取高中低字是不正確的,這些字符處理的最低是一個八位二進(jìn)制的數(shù)據(jù),假設(shè)你說按高中低的話也就是 00000000 00000000 00000000 這樣的一段24位二進(jìn)制字符
靜水深流
lixianji_007
級別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 242 個
工控威望: 2871 點
下載積分: 5483 分
在線時間: 769(小時)
注冊時間: 2011-08-27
最后登錄: 2024-10-25
查看lixianji_007的 主題 / 回貼
4樓  發(fā)表于: 2017-03-30 12:16
圖片:
函數(shù)庫里有這個函數(shù)的,不過威綸的宏指令手冊里沒有講解,做了個樣例仿真一下可以的;

macro_command main()
char a[10],b[10]   //定義
GetData(a[0],"TK6070iP",lw,20,10)  //讀取源字符串
StringMid(a[2],6,b[0] )    //從字符串lw20開始的第3個字符截取6個字符保存到b[0]開始地址;
SetData (b[0],"TK6070iP",lw,100,10)  //截取的字符串保存到lw100開始的地址
end macro_command
[ 此帖被lixianji_007在2017-03-30 12:22重新編輯 ]
本帖最近評分記錄:
  • 下載積分:+1(anke5410) 熱心助人!
  • 天下事有難易乎?為之,則難者亦易矣!不為,則易者亦難矣!
    tyw123456
    級別: 家園常客

    精華主題: 1 篇
    發(fā)帖數(shù)量: 113 個
    工控威望: 797 點
    下載積分: 313 分
    在線時間: 256(小時)
    注冊時間: 2016-09-13
    最后登錄: 2024-09-23
    查看tyw123456的 主題 / 回貼
    5樓  發(fā)表于: 2017-03-30 13:49
    圖片:
    引用
    引用第4樓lixianji_007于2017-03-30 12:16發(fā)表的  :
    函數(shù)庫里有這個函數(shù)的,不過威綸的宏指令手冊里沒有講解,做了個樣例仿真一下可以的;

    macro_command main()
    char a[10],b[10]   //定義
    GetData(a[0],"TK6070iP",lw,20,10)  //讀取源字符串
    .......

    試了一下,沒有達(dá)到那種效果啊,還是我對數(shù)字元件的設(shè)置有錯,我設(shè)置的是32位浮點數(shù),感覺不對吧,數(shù)值元件的數(shù)值又不是每一個數(shù)都是一個8位二進(jìn)制,怎么可以填充的滿10個CHAR 函數(shù)呢
    靜水深流
    lixianji_007
    級別: 工控俠客
    精華主題: 0
    發(fā)帖數(shù)量: 242 個
    工控威望: 2871 點
    下載積分: 5483 分
    在線時間: 769(小時)
    注冊時間: 2011-08-27
    最后登錄: 2024-10-25
    查看lixianji_007的 主題 / 回貼
    6樓  發(fā)表于: 2017-03-30 14:28
    這個是字符串截取,不是浮點數(shù)的截取,如果要10進(jìn)制數(shù)的截取的話可以用算術(shù)運算解決,如數(shù)據(jù)是123456,要取前4位的話就除以100,取商;如要取后4位的話就用減法;也可用邏輯運算和算術(shù)運算配合的方法實現(xiàn)。
    天下事有難易乎?為之,則難者亦易矣!不為,則易者亦難矣!
    hblovetian
    新手,望各位大哥大姐指點。
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 242 個
    工控威望: 492 點
    下載積分: 6069 分
    在線時間: 142(小時)
    注冊時間: 2010-11-04
    最后登錄: 2024-09-16
    查看hblovetian的 主題 / 回貼
    7樓  發(fā)表于: 2017-03-30 17:50
    引用
    引用第6樓lixianji_007于2017-03-30 14:28發(fā)表的  :
    這個是字符串截取,不是浮點數(shù)的截取,如果要10進(jìn)制數(shù)的截取的話可以用算術(shù)運算解決,如數(shù)據(jù)是123456,要取前4位的話就除以100,取商;如要取后4位的話就用減法;也可用邏輯運算和算術(shù)運算配合的方法實現(xiàn)。

    就是要這樣的效果,謝謝。我這個是和電子秤通訊讀里面的數(shù)據(jù),數(shù)據(jù)全是ASCII碼。比如現(xiàn)在稱顯示凈重500KG,接收的數(shù)據(jù)就是wn500.000kg,然后我就是想取500.00進(jìn)行加減運算。不知取出的ASCI碼直接不轉(zhuǎn)換能按照10進(jìn)制的方式運算嗎?比如第一次是500(ASCII碼),第二次700(ASCII碼),可以直接700-500=200,得出第二次加了200kg的東西嗎?因為用的自由口通訊,用INPUT接收的數(shù)據(jù)第一位(起始位)和第十位(停止位)都在里面,,每次發(fā)送讀取數(shù)據(jù),接收的數(shù)據(jù)都比上一次錯2個位置。
    希望各位多多指點。謝謝!