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

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

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

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

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

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

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

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