
PRO
dbeard
USA
Asked
— Edited
Can anyone point me in the direction to find a way to tell how much time there is between two dates.
For example Date1 = 10/29/2016 10:30:54 PM and Date2 = 10/28/2016 7:00:01 AM
How many days, hours, minutes, and seconds before date 1.
That's a major refactoring!
I tried that before but does not work as the OP wants. does not handle days, months, years.
Code:
Check the output:
Code:
The $diff in this case is 884.22:57:58. That's
- 884 days
- 22 hours
- 57 minutes
- 58 seconds
I just added a fmttimespan() to EZ-Script for the next release. It will allow formatting of a timespan (which is what a datetime subtraction/addition creates)
yes it was more an exercise i can't do that in my day job
I like to test concepts:
Goto / Return (like a function call)
Working with an array to minimize variable usage
Reusing a (function call)
everything went well.
yes i could parse the big number (days), but i would need to calculate the leap years, to extract years, then how many leap years in between, so i decided to do it from scratch.
I have been fiddling with the idea of making user defined functions in ez-script. It would be a control where you can define the function and parameters.
My first thought was to make the function be ez-script. But lately i've been leaning toward the idea of having the function be c# to give additional functionality. That means you could create the c# code for the internal function and be
a) extra fast
b) have control over the ARC architecture just like a plugin
I'm glad you raised that topic.
Plugin:
the concept is neat, but as you know does not work on Mobile and Windows Universal Apps
user functions:
I would do it first in EZ-Script, as you know C# CodeDom/Generation is not allowed on IOS Apps.
that way you can use user functions everywhere.
if the function is a mere EZ-Script and defined on a per project basis, there would be no version control and outdated/bugger functions would be difficult to manage across projects.
I'll think a bit on what an EZ-Script user function with online version management simlar to a plugin would look like. hmmm...
Can you elaborate.
And maybe even a simple parser... $string=(left($string),10,5)
Something like this would set $string as the 10th character in and read for 5 characters after.... This way you can pick the data you want out of the incoming serial data
Why are you ever GetByteAt() anyway? That's not a serial specific function - it's a function to get a byte(character) within a string
Code:
Code:
What ever is in the buffer (if anything) would be read into $data... The complexity is removed... And It would be up to the user to pick out and/or convert the data he wants using maybe simple parser....
This is the reason you have..
Code:
You can't trust that you ha
(see what i did there?)
Additionally, using UARTRead() with binary/byte data is not recommended. UARTRead(), as the documentation dictates, is for ASCII String data.
Use UARTReadBinary(), which puts the data into an array.
To read all contents in one line, use this...
Code:
or for ASCII Read all, it's
Code:
Here's the info from the EZ-Script manual in ARC:
[feature]
UARTRead( boardIndex, port, numBytes )
Receive ASCII bytes from the Peripheral UART Receive Buffer of the EZ-B v4. The UART receive buffers on the EZ-B v4 are 5,000 bytes.
To know how many bytes are available, use the UARTAvailable() function.
The Board Index is the EZ-B index starting at 0.
The port can be 0, 1 or 2.
Look near at the UART Port section lower in this document for the EZ-B Pin’s associated with each UART Port.
Example: UARTRead(0, 0, 10)
Example: UARTRead(0, 0, UARTAvailable(0, 1))
UARTReadBinary( boardIndex, port, numBytes, variable )
Receive binary bytes from the Peripheral UART Receive Buffer of the EZ-B v4 into the variable as an array. The UART receive buffers on the EZ-B v4 are 5,000 bytes.
To know how many bytes are available, use the UARTAvailable() function.
The Board Index is the EZ-B index starting at 0.
The port can be 0, 1 or 2.
Look near at the UART Port section lower in this document for the EZ-B Pin’s associated with each UART Port.
Example: UARTReadBinary(0, 0, 10, $variable)
Example: UARTReadBinary(0, 0, UARTAvailable(0, 1), $variable)
UARTReadAvailable( boardIndex, port )
Receive all available ASCII bytes from the Peripheral UART Receive Buffer of the EZ-B v4. The UART receive buffers on the EZ-B v4 are 5,000 bytes.
The Board Index is the EZ-B index starting at 0.
The port can be 0, 1 or 2.
Look near at the UART Port section lower in this document for the EZ-B Pin’s associated with each UART Port.
Example: UARTReadAvailable(0, 0)
Example: UARTReadAvailable(0, 0)
[/feature]
Actually, I wouldn't use it for any application other than debugging. Because you do need to know how much data is in the buffer. And you should only read as much data as your expected packet size is and leave the other packets in the buffer to process on the next loop.