13771165220
級別: 家園常客
|
比如發(fā)送的數(shù)據(jù)是ASC碼 #1,0,30000,1000,AB 比如這串數(shù)字意思是 #:打頭字母 1:站號 0:該站電機號 30000:電機定位地址 1000:電機定位速度 AB:校驗碼 其中的”,“是間隔符號也是一個ASC碼 返回數(shù)據(jù)先不管。 現(xiàn)在有這樣的問題,我需要在觸摸屏控制定位地址和定位速度。 但是如果我速度輸入3000的話就比原來的30000少一個ASC字符,這樣包括后面發(fā)送的指令數(shù)據(jù)地址都相當于左移了一位而且和校驗都不一樣了。 個人感覺還需去判斷輸入的數(shù)據(jù)轉(zhuǎn)為ASC后占幾個字符,感覺處理起來后續(xù)就比較麻煩。就算讓人家直接輸入ASC當數(shù)據(jù)也是比較麻煩。有誰有這方面的經(jīng)驗分享一下,大概思路也可以。 萬分感激。 |
---|---|
|
楓落云端
施主,腳抬一下
級別: 略有小成
|
方法1: 觸摸屏輸入為數(shù)字時,PLC把數(shù)字加一個很大的值,比如每次最大也就5位數(shù),先把 數(shù)字+100000,之后再用DBINDA轉(zhuǎn)為字符串,再用RIGHT截取5位字符串。(不管你輸入的是幾位,每次都可以保證截取到5位) 方法2: 觸摸屏輸入為字符型數(shù)據(jù)時,PLC直接用指令LEN檢測該字符串位多少位,再相應(yīng)補字符'0'或者補空格,用CONCAT指令連接字符。 樓主留言:大神,牛啊。我照你說的挨個指令試試,好多指令都沒用過。第一種覺得可行,第二種有點小麻煩,輸入123,1到最低位去了。 |
---|---|
|