hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
|
宏指令中怎么取一個字符的前幾位,后幾位,和中間幾位。如'0123456789'怎么取12345,12345678,6789。怎么編寫宏指令,謝謝。 |
|
---|---|---|
|
hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
|
都看了幾遍手冊了,沒有能實現的函數,望指點 |
|
---|---|---|
|
tyw123456
級別: 家園常客
|
你這個問題有問題,你所說的123456789是十進制數,但是我們實際用或者你設數字元件的時候都沒有十進制元件選用的也就是說我們看到的0123456789實際上是觸摸屏內部將16位或是32位的數值轉化過的數值,實際上他在內部123456789是075BCD15 也就是一個32位的字符,然后你要獲取的只能說獲取這個數的高16位或低16位,然后轉換為16位的時候,你又可以獲取他的高8位和低八位了,指令是什么LOWORO HIWORO LOBIYE HIBIYE,我忘了, 你所說的獲取高中低字是不正確的,這些字符處理的最低是一個八位二進制的數據,假設你說按高中低的話也就是 00000000 00000000 00000000 這樣的一段24位二進制字符 |
|
---|---|---|
|
lixianji_007
級別: 工控俠客
|
圖片:
函數庫里有這個函數的,不過威綸的宏指令手冊里沒有講解,做了個樣例仿真一下可以的; 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
級別: 家園常客
|
圖片:
試了一下,沒有達到那種效果啊,還是我對數字元件的設置有錯,我設置的是32位浮點數,感覺不對吧,數值元件的數值又不是每一個數都是一個8位二進制,怎么可以填充的滿10個CHAR 函數呢 |
|
---|---|---|
|
lixianji_007
級別: 工控俠客
|
這個是字符串截取,不是浮點數的截取,如果要10進制數的截取的話可以用算術運算解決,如數據是123456,要取前4位的話就除以100,取商;如要取后4位的話就用減法;也可用邏輯運算和算術運算配合的方法實現。 |
|
---|---|---|
|
hblovetian
新手,望各位大哥大姐指點。
級別: 略有小成
|
就是要這樣的效果,謝謝。我這個是和電子秤通訊讀里面的數據,數據全是ASCII碼。比如現在稱顯示凈重500KG,接收的數據就是wn500.000kg,然后我就是想取500.00進行加減運算。不知取出的ASCI碼直接不轉換能按照10進制的方式運算嗎?比如第一次是500(ASCII碼),第二次700(ASCII碼),可以直接700-500=200,得出第二次加了200kg的東西嗎?因為用的自由口通訊,用INPUT接收的數據第一位(起始位)和第十位(停止位)都在里面,,每次發送讀取數據,接收的數據都比上一次錯2個位置。 |
|
---|---|---|
|