mirror of https://github.com/lumapu/ahoy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.8 KiB
118 lines
3.8 KiB
#works for python 3.7.3
|
|
|
|
import serial
|
|
import os
|
|
import argparse
|
|
import time
|
|
import datetime
|
|
import binascii
|
|
import threading
|
|
import sys
|
|
from binascii import hexlify
|
|
# my own libs
|
|
import _libs2.com_handling as cph
|
|
import _libs2.file_handling as fh
|
|
|
|
|
|
# 2022-02-11: init mb
|
|
|
|
|
|
#some global variables
|
|
__version_info__ = ('2022', '11', '13')
|
|
__version__ = 'app version: ' + '-'.join(__version_info__)
|
|
DEBUG = False
|
|
|
|
|
|
|
|
############################################################################################################################
|
|
# here the program starts
|
|
def main():
|
|
global DEBUG
|
|
global com_stop
|
|
ret = 0
|
|
err = 0
|
|
|
|
starttime = cph.millis_since(0)
|
|
parser = argparse.ArgumentParser(description='simple Hoymiles Terminal')
|
|
parser.add_argument('-p', type=str, default='/dev/ttyUSB0', help='Serial port')
|
|
parser.add_argument('-b', type=int, default=57600, help='baudrate of the rf-module')
|
|
parser.add_argument('-d', default=False, help='use parameter to print additional debug info', action='store_true')
|
|
parser.add_argument('-v', '--version', action='version', version="%(prog)s (" + __version__ + ")")
|
|
parser.add_argument('-l', type=str, default='', help='log-file path/name')
|
|
parser.add_argument('-i', default=True, help='have a simple AT-command line', action='store_true')
|
|
|
|
args = parser.parse_args()
|
|
DEBUG = args.d
|
|
#used later for Threads
|
|
tp = None
|
|
tf = None
|
|
com = None
|
|
logfile = None
|
|
|
|
|
|
#shows the used lib versions
|
|
fh.my_print('\n +++ starting AhoyUL Terminal ...')
|
|
fh.my_print('\n +++ %40s' % (__version__))
|
|
fh.my_print('\n +++ %40s' % (cph.__version_string__))
|
|
fh.my_print('\n +++ %40s' % (fh.__version_string__))
|
|
|
|
if DEBUG: fh.my_print('\n' + str(args))
|
|
|
|
#output file logging
|
|
com_port_name = (args.p).replace('/dev/','_').replace('/','_') #for Linux, no matter on Windows
|
|
if len(args.l) > 0:
|
|
tmp1, tmp2 = fh.get_dir_file_name(args.l, DEBUG)
|
|
logfile_name = cph.timestamp(3) + tmp2
|
|
tf = fh.start_logging_thread_open_file(tmp1, logfile_name, 'w+', DEBUG)
|
|
else:
|
|
# default path of logfile, always logging
|
|
tmp1, tmp2 = fh.get_dir_file_name('log/default_{0:s}.log'.format(com_port_name), DEBUG)
|
|
logfile_name = cph.timestamp(3) + tmp2
|
|
tf = fh.start_logging_thread_open_file(tmp1, logfile_name, 'w+', DEBUG)
|
|
|
|
com = serial.Serial(args.p, args.b, timeout=0.2, rtscts=False, dsrdtr=False)
|
|
com.rts = True
|
|
com.dtr = True
|
|
fh.my_print("\n +++ serial port is open: %s, baud: %d, rtscts: %s, rts: %s" % (com.portstr,com.baudrate,com.rtscts,com.rts))
|
|
|
|
|
|
#start urc com logging thread
|
|
tp = cph.openCom_startComReadThread(tp, com, DEBUG)
|
|
|
|
try:
|
|
# do init AT here
|
|
|
|
|
|
#start small AT-command terminal
|
|
if args.i == True:
|
|
result = cph.simple_terminal(com, DEBUG)
|
|
if result == False:
|
|
starttime_sec = cph.millis_since(0) / 1000
|
|
return -1
|
|
|
|
|
|
# todo: do some automated scripting and data sending to the AhoyUL board
|
|
|
|
|
|
#wait remeining data
|
|
TO_sec = 5
|
|
fh.my_print('\n +++ wait remaining data for %d sec' % (TO_sec,))
|
|
time.sleep(TO_sec)
|
|
|
|
except KeyboardInterrupt:
|
|
fh.my_print('\n +++ keyboard interrupt, end ...')
|
|
|
|
finally:
|
|
fh.my_print('\n +++ end, wait until finshed\n')
|
|
|
|
#cleanup
|
|
#stop comport reader thread
|
|
if tp: cph.stopComReadThread_closeCom(tp, com)
|
|
|
|
# if logging to file was enabled
|
|
#if len(args.l) > 0:
|
|
if tf: fh.stop_logging_thread_close_file(tf, DEBUG)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|