Omni insert delay between outgoing serial commands?

brentj

Member
I'm sending out ASCII strings via serial port to an Elk MV-480 board.
 
Each message is like 22 characters, longer than allowed message in Omnipro, So I split each into 3 omni messages. 
"start" with fixed first part of message"
"variable part" which differs based on which word is to be spoken
"end" which is just carriage return/line feed ^M^J
 
WHEN voice2
   THEN SEND *Voice Message Start* OUT SERIAL 3
   THEN SEND 103 "Drive" OUT SERIAL 3
   THEN SEND *Voice Message End* OUT SERIAL 3
   THEN SEND *Voice Message Start* OUT SERIAL 3
   THEN SEND 314 "Way" OUT SERIAL 3
   THEN SEND *Voice Message End* OUT SERIAL 3
 
 
 
 
If a trigger just sends one word, it's fine.
if a trigger is to send two or three words strung together, it's quirky on whether 2nd/3rd words get omitted or all 3 said.
 
A 1 second delay inserted between words by turning on a flag for a second seems to work around the quirkiness.
 
Any way to insert a 0.5 second delay?
 
Or otherwise keep the serial messages spaced apart a little?  I tried sending a few "200ms silence" commands to MV-480 between words but that didn't fix the issue. 
 
No way I'm missing to send 22 characters all at once without splitting into 2 (I did 3 for convenience, the way it breaks between fixed and variable parts of the message) messages?
 
Thanks!
Jeff
 
 
 
 
Still no luck on this.  frustrating.  If I send three sounds sometimes I hear one, two or three.  I can't predict.  anyone?  I really wish there was an easy "Delay 0.5 seconds" command to put in the program!
 
The Omni multitasks, so there is no reliable way to specify an order unless you make it happen. No 0.5 second delay, the smallest is 1 second.
 
Have you tried something like:
 
EVERY SECOND
   IF XYZ = 1
       THEN INCREMENT FLAG
 
IF FLAG = 1
   Do Something
 
IF FLAG = 2
   Do Something else
 
IF FLAG = 3
   Do Next Thing
 
This will launch actions at one second intervals.
 
Back
Top