hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
|
宏指令中怎么取一個字符的前幾位,后幾位,和中間幾位。如'0123456789'怎么取12345,12345678,6789。怎么編寫宏指令,謝謝。 |
|
---|---|---|
|
hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
|
都看了幾遍手冊了,沒有能實現(xiàn)的函數(shù),望指點 |
|
---|---|---|
|
tyw123456
級別: 家園?
|
你這個問題有問題,你所說的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
級別: 工控俠客
|
圖片:
函數(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重新編輯 ] |
|
---|---|---|
本帖最近評分記錄:
|
tyw123456
級別: 家園常客
|
圖片:
試了一下,沒有達(dá)到那種效果啊,還是我對數(shù)字元件的設(shè)置有錯,我設(shè)置的是32位浮點數(shù),感覺不對吧,數(shù)值元件的數(shù)值又不是每一個數(shù)都是一個8位二進(jìn)制,怎么可以填充的滿10個CHAR 函數(shù)呢 |
|
---|---|---|
|
lixianji_007
級別: 工控俠客
|
這個是字符串截取,不是浮點數(shù)的截取,如果要10進(jìn)制數(shù)的截取的話可以用算術(shù)運算解決,如數(shù)據(jù)是123456,要取前4位的話就除以100,取商;如要取后4位的話就用減法;也可用邏輯運算和算術(shù)運算配合的方法實現(xiàn)。 |
|
---|---|---|
|
hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
|
就是要這樣的效果,謝謝。我這個是和電子秤通訊讀里面的數(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個位置。 |
|
---|---|---|
|