Navigation bar
  Start Previous page
 58 of 156 
Next page End 53 54 55 56 57 58 59 60 61 62 63  

52
BasicX Compatibility Note
In BasicX compatibility mode, enumerations may only be defined at the module level and
qualification of an enumeration is not supported.  Also, the values of enumeration members
are only 8-bits wide in BasicX while they are 16-bit values in ZBasic.
An alternate type conversion method is supported for compatibility reasons but is a bit awkward to use. 
For each defined enumeration, there is a special System Library conversion function just for that
enumeration whose name is To<enum> where <enum> is replaced with the enumeration name.  This
special conversion function takes only one parameter, that being the value to convert.
animal = ToMammal(3)
One drawback to this conversion method is that there is no way to qualify the enumeration with the
module name in which it is defined.  It is recommended that all new applications use the CType()
conversion function.
3.3 Serial Channels
All of the ZX series devices support up to 5 serial channels.  Channel 1 (COM1) is implemented using the
USART hardware on the microcontroller chip.  When the ZX begins running, COM1 is configured to run at
19.2K baud, 8 data bits, 1 stop bit.  Your program can send and receive data using the default
configuration by utilizing the console I/O routines like Console.Write(), Console.Read() and the related
Debug.Print command.
The four remaining serial channels are implemented in software.  This strategy allows a lot of flexibility in
choosing which pins are used for transmission and reception but it also imposes a processing overhead
on the system, even when characters are not being actively sent and received.  Because of this, only one
additional serial channel, COM3, is enabled for use by default.  If you wish to utilize additional serial
channels (COM4 to COM6) you must call the System Library routine ComChannels() to specify both the
number of channels desired and the maximum baud rate that may be used.  See the description of the
ComChannels() routine in the ZBasic System Library Reference manual for more details.
Since serial channels 3-6 rely on interrupts to achieve the necessary timing for serial I/O, if interrupts are
disabled for a substantial fraction of the bit time (the inverse of the baud rate) the integrity of the
transmitted or received characters may suffer.  Typically, the maximum acceptable interrupt disable time
is about 25% of the bit time of the fastest channel.  If the fastest channel is running at 9600 baud, the
interrupt disable time should be kept below 25µS or so.  Many of the I/O routines that utilize Timer1 (e.g.
PulseOut) disable interrupts in order to achieve precise timing.  Those that do disable interrupts have a
caveat to that effect in their respective descriptions in the ZBasic System Library Manual.
Some ZX devices have additional hardware-based serial channels.  See the descriptions of DefineCom(),
OpenCom() and CloseCom() in the ZBasic System Library Manual for more details on setting up and
using a serial channel.
3.4 Queues
A queue is a fundamental data structure that is widely used in computer programs.  Its primary
distinguishing feature is that data items are extracted from the queue in the same order in which they
were inserted.  This is called first-in, first-out or FIFO order.
One of the uses for a queue in ZBasic is as a temporary buffer for data going to and coming from one of
the serial channels.  Another common use is as a medium through which to pass data between tasks. 
The producer of the data puts data in the queue and the consumer of the data takes it from the queue.
  
ZBasic queues are of a fixed length, that length being determined at the time that the queue is prepared
for use using OpenQueue().  If the data producer inserts data faster than the consumer removes it, the
Previous page Top Next page