2012-03-30 3 views
0

Как я могу разделить этот штрих-код на разделитель групп с помощью Progress? Я пробовал chr (29) без везения.Как разбить входные коды ASCII с помощью Progress 4GL?

штриха-кода отсканирована в Notepad ++: http://i.imgur.com/8DmPZ.png

штрих-кода отсканирован в поле ввода: 2409271405202120330017100282

Благодаря.

def var c as char no-undo. 
def var i as int no-undo. 

update c format "x(50)". 

do i = 1 to length(c): 
    message substr(c, i, 1) = chr(29). 
end. 
+0

Как выглядит ваш текущий код? –

ответ

0

Проблема заключается в том, что GS является неопределенным контрольным кодом. Поэтому вам нужно признать это.

Добавьте следующую запись вашего терминала в protermcap для определения GS, как F13:

: (F13) = \ 035: \

(восьмеричный код для GS является \ 035 и F13 является неопределенным Функциональная клавиша - так что комбинация должна работать. У меня нет сканера для тестирования, но это работает для управляющих кодов, которые я могу ввести в свою клавиатуру ...)

Затем используйте код:

define variable bc as character no-undo format "X(50)". 

update bc editing: 
    if lastkey = 313 then 
    apply ".". /* 313 is the code for F13 */ 
    else 
    apply lastkey. 
end. 

Это должно вызывать "." вместо ГС. Это позволит вам разбирать строку, используя «.». а не GS.

0

Это дикая догадка, но я думаю, ENTRY (ввод-NUM, штрих-код-строки, "группа-строка-разделитель")?

0

Это работает для меня:

/* create a test file (otherwise not needed...) 
*/ 

output to "barcode.dat". 
put control "240927140520" chr(29) "2120330017" chr(29) "100282". 
output close. 

/* if you already have barcode.dat start here 
*/ 

define variable m as memptr no-undo. 
define variable bc as character no-undo. 

set-size(m) = 100. 
input from "barcode.dat" binary no-convert. 
import unformatted m. 
input close. 

bc = get-string(m, 1). 

display 
    entry(1, bc, chr(29)) format "x(12)" skip 
    entry(2, bc, chr(29)) format "x(12)" skip 
    entry(3, bc, chr(29)) format "x(12)" skip 
. 
+0

Благодарим вас за ответ, но, к сожалению, это не касается моих потребностей. Он работает, если я читаю штрих-код из файла, но мне нужно его прочитать из поля ввода кадра (im работает с символьным приложением). Прогресс игнорирует управляющие коды ascii? –

+0

Я добавил образец кода к моему вопросу, который не работает при чтении штрих-кода. –

+0

Я оставлю этот ответ здесь, так как он работает для ввода файлов. Теперь, когда мы знаем, что ваша настоящая проблема - это ввод с клавиатуры, см. Мой другой ответ. –

Смежные вопросы