Added test util for sending frames
Adjusted timeouts for slow uarts
This commit is contained in:
parent
1cc7f90595
commit
090cb3a201
|
@ -77,7 +77,7 @@ Initial value: 0x0
|
||||||
unless it is currently receiving a frame.
|
unless it is currently receiving a frame.
|
||||||
- Collision detection on the sender side is done by reading back each sent byte.
|
- Collision detection on the sender side is done by reading back each sent byte.
|
||||||
- Collision checking on receiver side, is done by checking the CRC and frame header.
|
- Collision checking on receiver side, is done by checking the CRC and frame header.
|
||||||
- If a frame has been started and there are no new bytes received for 20ms,
|
- If a frame has been started and there are no new bytes received for 50ms,
|
||||||
the frame is considered timed out and all received data can be dropped.
|
the frame is considered timed out and all received data can be dropped.
|
||||||
- Incoming messages are stored in a fifo until the application retrieves them.
|
- Incoming messages are stored in a fifo until the application retrieves them.
|
||||||
- The receive fifo has a size of at least 2 messages.
|
- The receive fifo has a size of at least 2 messages.
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env python2
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import serial
|
||||||
|
import crcmod.predefined
|
||||||
|
|
||||||
|
|
||||||
|
def send_byte(ser, byte):
|
||||||
|
ser.reset_input_buffer()
|
||||||
|
ser.write(byte)
|
||||||
|
read_byte = ser.read()
|
||||||
|
if read_byte != byte:
|
||||||
|
print "Written %s read %s" % (hex(ord(read_byte)), hex(ord(byte)))
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) != 3:
|
||||||
|
print "Usage %s <port> <payload>" % (sys.argv[0])
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
payload = sys.argv[2]
|
||||||
|
payload += chr(0) * (16 - len(payload))
|
||||||
|
|
||||||
|
ser = serial.Serial(sys.argv[1], 9600, timeout=0.40)
|
||||||
|
crc = crcmod.predefined.Crc('crc-8-maxim')
|
||||||
|
|
||||||
|
send_byte(ser, chr(0xAA))
|
||||||
|
send_byte(ser, chr(0xFE))
|
||||||
|
|
||||||
|
for byte in payload:
|
||||||
|
crc.update(byte)
|
||||||
|
send_byte(ser, byte)
|
||||||
|
|
||||||
|
crc_sum = crc.digest()
|
||||||
|
send_byte(ser, crc_sum)
|
||||||
|
|
||||||
|
print "Send sucessfully !"
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -15,7 +15,7 @@ def hexdump(data):
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(sys.argv) < 2:
|
if len(sys.argv) != 2:
|
||||||
print "Usage %s <port>" % (sys.argv[0])
|
print "Usage %s <port>" % (sys.argv[0])
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue