Byte formatting function b(Source {, Format})
Specifies byte sized (8-bit, values 0 to 255) data as an argument to a supporting hash function. The first argument specifies where to get the data (the source). The second, optional, argument specifies the actual display format. If the format is not specified, the format defaults to decimal, variable width.
While the obvious use of this is in the Print() hash function, it can also be used in such functions as SetCursor or HBar.
Source specifiers
The following are the allowable source specifiers
| Form | Meaning | Example |
|---|---|---|
=x | Contents of the X register | #HMI Print(b(=x)) |
=y | Contents of the Y register | #HMI Print(b(=y)) |
=h | Contents of the H register | #HMI Print(b(=h)) |
=m | Contents of the M register | #HMI Print(b(=m)) |
=s | Contents of the S register | #HMI Print(b(=s)) |
=i | Contents of the I register | #HMI Print(b(=i)) |
Constant | Contents of an EQUated constant | Foo EQU 56...#HMI Print(b(Foo)) |
| A number 0 – 255 | An immediate numeric value | #HMI Print(b(165)) |
*Label | Contents of a RAM byte (variable) | Temperature defBYTE...#HMI Print(b(*Temperature)) |
index/jndex modifiers
RAM variable references can also have index/jndex modifiers
| Form | What is sourced | Example code |
|---|---|---|
*+bb | Whatever is in RAM (byte) variable bb, with IasJ: applied | #HMI Print(b(*+Counter)) ;Force indexing |
*-bb | Whatever is in RAM (byte) variable bb, with NoJ: applied | #HMI Print(b(*-Counter)) ;Inhibit jndexing |
NOTE: The modifier (+ or -) must be after the asterisk. jndexing applies only to code running inside a MultiTrack task.
Format specifiers
The format argument specifies how the number is to be displayed. Valid format specifiers are:
| Form | Resulting format | Example | Result (the single quotes are NOT printed) |
|---|---|---|---|
| Blank (default) | Decimal, variable width | #HMI Print(b(56)) | '56' |
f | Decimal in fixed field width (3 characters) | #HMI Print(b(56, f)) | ' 56' |
v | Decimal in variable field width (as many characters positions as are needed. | #HMI Print(b(56, v)) | '56' |
2 | Decimal, in 2 character field, padded with 0. Intended for displaying RTC time. | #HMI Print(b(=h, 2)) | '06' |
h | Hexadecimal in a field of two character positions | #HMI Print(b(165, h))#HMI Print(b(10, h)) | 'A5''0A' |
| c | ASCII character | LoadX 65#HMI Print(b(=x,c)) | ‘A’ |