{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## TESTS 20190410"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import serial\n",
    "import time\n",
    "import datetime\n",
    "import pandas as pd\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "plt.style.use('seaborn-deep')\n",
    "import numpy as np\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test Notes\n",
    "\n",
    "### Configuration ###\n",
    "\n",
    "* NAL Power: `External 28VDC`\n",
    "* NAL Serial GND: `Connected to External B-`\n",
    "* CPF Power: `Off`\n",
    "* CPF Electronics: `In housing`\n",
    "\n",
    "\n",
    "\n",
    "### Log ###\n",
    "* `2019-04-10T14:52` Now 112 is sourced from test points and comms are through the laptop\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def print_msg(filename, in_msg):\n",
    "    if len(in_msg.decode('utf-8').rstrip()) is 0: \n",
    "        return\n",
    "    now = datetime.datetime.now()\n",
    "    line = f\"MSG {now.strftime('%Y%m%d')} {now.strftime('%H%M%S')} {in_msg.decode('utf-8').rstrip()}\\n\"\n",
    "    with open(filename, 'a') as f:\n",
    "        f.write(line)\n",
    "        print(line.rstrip())\n",
    "        \n",
    "\n",
    "def print_csq(filename, in_msg):\n",
    "    if len(in_msg.decode('utf-8').rstrip()) is 0: \n",
    "        return\n",
    "    now = datetime.datetime.now()\n",
    "    line = f\"CSQ {now.strftime('%Y%m%d')} {now.strftime('%H%M%S')} {in_msg[5:6].decode('utf-8').rstrip()}\\n\"\n",
    "    with open(filename,'a') as f:\n",
    "        f.write(line)\n",
    "        print(line.rstrip())\n",
    "\n",
    "def print_cier(filename, in_msg):\n",
    "    if len(in_msg.decode('utf-8').rstrip()) is 0: \n",
    "        return\n",
    "    now = datetime.datetime.now()\n",
    "    line = f\"CIEV {now.strftime('%Y%m%d')} {now.strftime('%H%M%S')} {in_msg[8:9].decode('utf-8').rstrip()}\\n\"\n",
    "    with open(filename,'a') as f:\n",
    "        f.write(line)\n",
    "        print(line.rstrip())\n",
    "        \n",
    "def serial_exchange(num_tries=10):\n",
    "    MAX_RETRIES = 1\n",
    "    with serial.Serial('COM4', \n",
    "                       baudrate=19200,\n",
    "                       bytesize=serial.EIGHTBITS, \n",
    "                       stopbits=serial.STOPBITS_ONE, \n",
    "                       parity=serial.PARITY_NONE, \n",
    "                       timeout=5) as ser:\n",
    "        \n",
    "        filename = datetime.datetime.now().strftime(\"%Y%m%dT%H%M%S_csqlog.txt\")  \n",
    "        out_message = ser.write(b'ATEN\\r')\n",
    "        in_message = ser.readline()\n",
    "        print_msg(filename, in_message)\n",
    "        in_message = ser.readline()\n",
    "        print_msg(filename, in_message)\n",
    "        \n",
    "        out_message = ser.write(b'AT+CIER=1,1,0\\r')\n",
    "        in_message = ser.readline()\n",
    "        print_msg(filename, in_message)\n",
    "        in_message = ser.readline()\n",
    "        print_msg(filename, in_message)\n",
    "        \n",
    "        #Get a bunch of CSQs\n",
    "        last_len = 0;\n",
    "        req_new_csq = True\n",
    "        df = pd.DataFrame(columns=['date','csq', 'cier'])\n",
    "        \n",
    "        \n",
    "        while True:\n",
    "          \n",
    "            if req_new_csq is True:\n",
    "                ser.write(b'AT+CSQ\\r')\n",
    "                req_new_csq = False\n",
    "                num_tries -= 1\n",
    "          \n",
    "            in_message = ser.readline()\n",
    "            print_msg(filename, in_message)\n",
    "          \n",
    "            if len(in_message) is 0: \n",
    "                last_len+=1\n",
    "            else:\n",
    "                last_len = 0\n",
    "            #figure out if its a CSQ or CIEV:0 message\n",
    "            if len(in_message) >= 4:\n",
    "                if in_message[0:5] == b'+CSQ:':\n",
    "                    print_csq(filename, in_message)\n",
    "                    now = datetime.datetime.now()\n",
    "                    row = {'date':now,'csq':int(in_message[5:6].decode('utf-8'))}\n",
    "                    df = df.append(row, ignore_index=True)\n",
    "                    df.to_csv(filename[:-3]+'csv',index=False)\n",
    "                    req_new_csq = True;\n",
    "                if in_message[0:8] == b'+CIEV:0,':\n",
    "                    print_cier(filename, in_message)\n",
    "                    now = datetime.datetime.now()\n",
    "                    row = {'date':now,'cier':int(in_message[8:9].decode('utf-8'))}\n",
    "                    df = df.append(row, ignore_index=True)\n",
    "                    df.to_csv(filename[:-3]+'csv',index=False)\n",
    "                    \n",
    "                    \n",
    "            if last_len > MAX_RETRIES:\n",
    "                break;\n",
    "            if num_tries < 0: \n",
    "                break;\n",
    "        \n",
    "        return df\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSG 20190410 145254 ATEN\n",
      "MSG 20190410 145254 OK\n",
      "MSG 20190410 145254 OK\n",
      "MSG 20190410 145254 +CIEV:0,2\n",
      "CIEV 20190410 145254 2\n",
      "MSG 20190410 145300 +CSQ:3\n",
      "CSQ 20190410 145300 3\n",
      "MSG 20190410 145300 OK\n",
      "MSG 20190410 145300 +CIEV:0,3\n",
      "CIEV 20190410 145300 3\n",
      "MSG 20190410 145304 +CSQ:3\n",
      "CSQ 20190410 145304 3\n",
      "MSG 20190410 145304 OK\n",
      "MSG 20190410 145313 +CSQ:3\n",
      "CSQ 20190410 145313 3\n",
      "MSG 20190410 145313 OK\n",
      "MSG 20190410 145322 +CSQ:3\n",
      "CSQ 20190410 145322 3\n",
      "MSG 20190410 145322 OK\n",
      "MSG 20190410 145322 +CSQ:3\n",
      "CSQ 20190410 145322 3\n",
      "MSG 20190410 145322 OK\n",
      "MSG 20190410 145330 +CSQ:3\n",
      "CSQ 20190410 145330 3\n",
      "MSG 20190410 145330 OK\n",
      "MSG 20190410 145339 +CSQ:2\n",
      "CSQ 20190410 145339 2\n",
      "MSG 20190410 145339 OK\n",
      "MSG 20190410 145339 +CIEV:0,2\n",
      "CIEV 20190410 145339 2\n",
      "MSG 20190410 145348 +CSQ:1\n",
      "CSQ 20190410 145348 1\n",
      "MSG 20190410 145348 OK\n",
      "MSG 20190410 145348 +CIEV:0,1\n",
      "CIEV 20190410 145348 1\n",
      "MSG 20190410 145348 +CSQ:1\n",
      "CSQ 20190410 145348 1\n",
      "MSG 20190410 145348 OK\n",
      "MSG 20190410 145356 +CSQ:2\n",
      "CSQ 20190410 145356 2\n",
      "MSG 20190410 145356 OK\n",
      "MSG 20190410 145356 +CIEV:0,2\n",
      "CIEV 20190410 145356 2\n",
      "MSG 20190410 145357 +CSQ:2\n",
      "CSQ 20190410 145357 2\n",
      "MSG 20190410 145357 OK\n",
      "MSG 20190410 145405 +CSQ:5\n",
      "CSQ 20190410 145405 5\n",
      "MSG 20190410 145405 OK\n",
      "MSG 20190410 145405 +CIEV:0,5\n",
      "CIEV 20190410 145405 5\n",
      "MSG 20190410 145405 +CSQ:5\n",
      "CSQ 20190410 145405 5\n",
      "MSG 20190410 145405 OK\n",
      "MSG 20190410 145413 +CSQ:0\n",
      "CSQ 20190410 145413 0\n",
      "MSG 20190410 145413 OK\n",
      "MSG 20190410 145413 +CIEV:0,0\n",
      "CIEV 20190410 145413 0\n",
      "MSG 20190410 145422 +CSQ:0\n",
      "CSQ 20190410 145422 0\n",
      "MSG 20190410 145422 OK\n",
      "MSG 20190410 145430 +CSQ:0\n",
      "CSQ 20190410 145430 0\n",
      "MSG 20190410 145430 OK\n",
      "MSG 20190410 145439 +CSQ:0\n",
      "CSQ 20190410 145439 0\n",
      "MSG 20190410 145439 OK\n",
      "MSG 20190410 145448 +CSQ:0\n",
      "CSQ 20190410 145448 0\n",
      "MSG 20190410 145448 OK\n",
      "MSG 20190410 145448 +CSQ:1\n",
      "CSQ 20190410 145448 1\n",
      "MSG 20190410 145448 OK\n",
      "MSG 20190410 145448 +CIEV:0,1\n",
      "CIEV 20190410 145448 1\n",
      "MSG 20190410 145456 +CSQ:2\n",
      "CSQ 20190410 145456 2\n",
      "MSG 20190410 145456 OK\n",
      "MSG 20190410 145456 +CIEV:0,2\n",
      "CIEV 20190410 145456 2\n",
      "MSG 20190410 145457 +CSQ:2\n",
      "CSQ 20190410 145457 2\n",
      "MSG 20190410 145457 OK\n",
      "MSG 20190410 145505 +CSQ:3\n",
      "CSQ 20190410 145505 3\n",
      "MSG 20190410 145505 OK\n",
      "MSG 20190410 145505 +CIEV:0,3\n",
      "CIEV 20190410 145505 3\n",
      "MSG 20190410 145506 +CSQ:3\n",
      "CSQ 20190410 145506 3\n",
      "MSG 20190410 145506 OK\n",
      "MSG 20190410 145514 +CSQ:2\n",
      "CSQ 20190410 145514 2\n",
      "MSG 20190410 145514 OK\n",
      "MSG 20190410 145514 +CIEV:0,2\n",
      "CIEV 20190410 145514 2\n",
      "MSG 20190410 145523 +CSQ:3\n",
      "CSQ 20190410 145523 3\n",
      "MSG 20190410 145523 OK\n",
      "MSG 20190410 145523 +CIEV:0,3\n",
      "CIEV 20190410 145523 3\n",
      "MSG 20190410 145532 +CSQ:1\n",
      "CSQ 20190410 145532 1\n",
      "MSG 20190410 145532 OK\n",
      "MSG 20190410 145532 +CIEV:0,1\n",
      "CIEV 20190410 145532 1\n",
      "MSG 20190410 145540 +CSQ:4\n",
      "CSQ 20190410 145540 4\n",
      "MSG 20190410 145540 OK\n",
      "MSG 20190410 145540 +CIEV:0,4\n",
      "CIEV 20190410 145540 4\n",
      "MSG 20190410 145549 +CSQ:3\n",
      "CSQ 20190410 145549 3\n",
      "MSG 20190410 145549 OK\n",
      "MSG 20190410 145549 +CIEV:0,3\n",
      "CIEV 20190410 145549 3\n",
      "MSG 20190410 145557 +CSQ:3\n",
      "CSQ 20190410 145557 3\n",
      "MSG 20190410 145557 OK\n",
      "MSG 20190410 145606 +CSQ:2\n",
      "CSQ 20190410 145606 2\n",
      "MSG 20190410 145606 OK\n",
      "MSG 20190410 145606 +CIEV:0,2\n",
      "CIEV 20190410 145606 2\n",
      "MSG 20190410 145615 +CSQ:1\n",
      "CSQ 20190410 145615 1\n",
      "MSG 20190410 145615 OK\n",
      "MSG 20190410 145615 +CIEV:0,1\n",
      "CIEV 20190410 145615 1\n",
      "MSG 20190410 145623 +CSQ:0\n",
      "CSQ 20190410 145623 0\n",
      "MSG 20190410 145623 OK\n",
      "MSG 20190410 145623 +CIEV:0,0\n",
      "CIEV 20190410 145623 0\n",
      "MSG 20190410 145632 +CSQ:0\n",
      "CSQ 20190410 145632 0\n",
      "MSG 20190410 145632 OK\n",
      "MSG 20190410 145641 +CSQ:0\n",
      "CSQ 20190410 145641 0\n",
      "MSG 20190410 145641 OK\n",
      "MSG 20190410 145649 +CSQ:0\n",
      "CSQ 20190410 145649 0\n",
      "MSG 20190410 145649 OK\n",
      "MSG 20190410 145658 +CSQ:1\n",
      "CSQ 20190410 145658 1\n",
      "MSG 20190410 145658 OK\n",
      "MSG 20190410 145658 +CIEV:0,1\n",
      "CIEV 20190410 145658 1\n",
      "MSG 20190410 145707 +CSQ:0\n",
      "CSQ 20190410 145707 0\n",
      "MSG 20190410 145707 OK\n",
      "MSG 20190410 145707 +CIEV:0,0\n",
      "CIEV 20190410 145707 0\n",
      "MSG 20190410 145715 +CSQ:0\n",
      "CSQ 20190410 145715 0\n",
      "MSG 20190410 145715 OK\n",
      "MSG 20190410 145724 +CSQ:1\n",
      "CSQ 20190410 145724 1\n",
      "MSG 20190410 145724 OK\n",
      "MSG 20190410 145724 +CIEV:0,1\n",
      "CIEV 20190410 145724 1\n",
      "MSG 20190410 145733 +CSQ:0\n",
      "CSQ 20190410 145733 0\n",
      "MSG 20190410 145733 OK\n",
      "MSG 20190410 145733 +CIEV:0,0\n",
      "CIEV 20190410 145733 0\n",
      "MSG 20190410 145736 +CSQ:0\n",
      "CSQ 20190410 145736 0\n",
      "MSG 20190410 145736 OK\n",
      "MSG 20190410 145741 +CSQ:0\n",
      "CSQ 20190410 145741 0\n",
      "MSG 20190410 145741 OK\n",
      "MSG 20190410 145744 +CSQ:0\n",
      "CSQ 20190410 145744 0\n",
      "MSG 20190410 145744 OK\n",
      "MSG 20190410 145753 +CSQ:0\n",
      "CSQ 20190410 145753 0\n",
      "MSG 20190410 145753 OK\n",
      "MSG 20190410 145757 +CSQ:0\n",
      "CSQ 20190410 145757 0\n",
      "MSG 20190410 145757 OK\n",
      "MSG 20190410 145757 +CSQ:0\n",
      "CSQ 20190410 145757 0\n",
      "MSG 20190410 145757 OK\n",
      "MSG 20190410 145802 +CSQ:0\n",
      "CSQ 20190410 145802 0\n",
      "MSG 20190410 145802 OK\n",
      "MSG 20190410 145806 +CSQ:0\n",
      "CSQ 20190410 145806 0\n",
      "MSG 20190410 145806 OK\n",
      "MSG 20190410 145806 +CSQ:0\n",
      "CSQ 20190410 145806 0\n",
      "MSG 20190410 145806 OK\n",
      "MSG 20190410 145810 +CSQ:0\n",
      "CSQ 20190410 145810 0\n",
      "MSG 20190410 145810 OK\n",
      "MSG 20190410 145811 +CSQ:0\n",
      "CSQ 20190410 145811 0\n",
      "MSG 20190410 145811 OK\n",
      "MSG 20190410 145811 +CSQ:0\n",
      "CSQ 20190410 145811 0\n",
      "MSG 20190410 145811 OK\n",
      "MSG 20190410 145816 +CSQ:0\n",
      "CSQ 20190410 145816 0\n",
      "MSG 20190410 145816 OK\n",
      "MSG 20190410 145818 +CSQ:0\n",
      "CSQ 20190410 145818 0\n",
      "MSG 20190410 145818 OK\n",
      "MSG 20190410 145818 +CSQ:0\n",
      "CSQ 20190410 145818 0\n",
      "MSG 20190410 145818 OK\n",
      "MSG 20190410 145823 +CSQ:0\n",
      "CSQ 20190410 145823 0\n",
      "MSG 20190410 145823 OK\n",
      "MSG 20190410 145823 +CSQ:0\n",
      "CSQ 20190410 145823 0\n",
      "MSG 20190410 145823 OK\n",
      "MSG 20190410 145827 +CSQ:0\n",
      "CSQ 20190410 145827 0\n",
      "MSG 20190410 145827 OK\n",
      "MSG 20190410 145829 +CSQ:0\n",
      "CSQ 20190410 145829 0\n",
      "MSG 20190410 145829 OK\n",
      "MSG 20190410 145829 +CSQ:0\n",
      "CSQ 20190410 145829 0\n",
      "MSG 20190410 145829 OK\n",
      "MSG 20190410 145833 +CSQ:0\n",
      "CSQ 20190410 145833 0\n",
      "MSG 20190410 145833 OK\n",
      "MSG 20190410 145836 +CSQ:0\n",
      "CSQ 20190410 145836 0\n",
      "MSG 20190410 145836 OK\n",
      "MSG 20190410 145845 +CSQ:0\n",
      "CSQ 20190410 145845 0\n",
      "MSG 20190410 145845 OK\n",
      "MSG 20190410 145849 +CSQ:0\n",
      "CSQ 20190410 145849 0\n",
      "MSG 20190410 145849 OK\n",
      "MSG 20190410 145849 +CSQ:0\n",
      "CSQ 20190410 145849 0\n",
      "MSG 20190410 145849 OK\n",
      "MSG 20190410 145853 +CSQ:3\n",
      "CSQ 20190410 145853 3\n",
      "MSG 20190410 145853 OK\n",
      "MSG 20190410 145853 +CIEV:0,3\n",
      "CIEV 20190410 145853 3\n",
      "MSG 20190410 145858 +CSQ:3\n",
      "CSQ 20190410 145858 3\n",
      "MSG 20190410 145858 OK\n",
      "MSG 20190410 145906 +CSQ:0\n",
      "CSQ 20190410 145906 0\n",
      "MSG 20190410 145906 OK\n",
      "MSG 20190410 145906 +CIEV:0,0\n",
      "CIEV 20190410 145906 0\n",
      "MSG 20190410 145911 +CSQ:0\n",
      "CSQ 20190410 145911 0\n",
      "MSG 20190410 145911 OK\n",
      "MSG 20190410 145919 +CSQ:0\n",
      "CSQ 20190410 145919 0\n",
      "MSG 20190410 145919 OK\n",
      "MSG 20190410 145924 +CSQ:2\n",
      "CSQ 20190410 145924 2\n",
      "MSG 20190410 145924 OK\n",
      "MSG 20190410 145924 +CIEV:0,2\n",
      "CIEV 20190410 145924 2\n",
      "MSG 20190410 145932 +CSQ:0\n",
      "CSQ 20190410 145932 0\n",
      "MSG 20190410 145932 OK\n",
      "MSG 20190410 145932 +CIEV:0,0\n",
      "CIEV 20190410 145932 0\n",
      "MSG 20190410 145933 +CSQ:0\n",
      "CSQ 20190410 145933 0\n",
      "MSG 20190410 145933 OK\n",
      "MSG 20190410 145941 +CSQ:1\n",
      "CSQ 20190410 145941 1\n",
      "MSG 20190410 145941 OK\n",
      "MSG 20190410 145941 +CIEV:0,1\n",
      "CIEV 20190410 145941 1\n",
      "MSG 20190410 145949 +CSQ:3\n",
      "CSQ 20190410 145949 3\n",
      "MSG 20190410 145949 OK\n",
      "MSG 20190410 145949 +CIEV:0,3\n",
      "CIEV 20190410 145949 3\n",
      "MSG 20190410 145950 +CSQ:3\n",
      "CSQ 20190410 145950 3\n",
      "MSG 20190410 145950 OK\n",
      "MSG 20190410 145958 +CSQ:1\n",
      "CSQ 20190410 145958 1\n",
      "MSG 20190410 145958 OK\n",
      "MSG 20190410 145958 +CIEV:0,1\n",
      "CIEV 20190410 145958 1\n",
      "MSG 20190410 145958 +CSQ:1\n",
      "CSQ 20190410 145958 1\n",
      "MSG 20190410 145958 OK\n",
      "MSG 20190410 150007 +CSQ:2\n",
      "CSQ 20190410 150007 2\n",
      "MSG 20190410 150007 OK\n",
      "MSG 20190410 150007 +CIEV:0,2\n",
      "CIEV 20190410 150007 2\n",
      "MSG 20190410 150007 +CSQ:2\n",
      "CSQ 20190410 150007 2\n",
      "MSG 20190410 150007 OK\n",
      "MSG 20190410 150015 +CSQ:2\n",
      "CSQ 20190410 150015 2\n",
      "MSG 20190410 150015 OK\n",
      "MSG 20190410 150016 +CSQ:2\n",
      "CSQ 20190410 150016 2\n",
      "MSG 20190410 150016 OK\n",
      "MSG 20190410 150024 +CSQ:1\n",
      "CSQ 20190410 150024 1\n",
      "MSG 20190410 150024 OK\n",
      "MSG 20190410 150024 +CIEV:0,1\n",
      "CIEV 20190410 150024 1\n",
      "MSG 20190410 150024 +CSQ:2\n",
      "CSQ 20190410 150024 2\n",
      "MSG 20190410 150024 OK\n",
      "MSG 20190410 150024 +CIEV:0,2\n",
      "CIEV 20190410 150024 2\n",
      "MSG 20190410 150033 +CSQ:2\n",
      "CSQ 20190410 150033 2\n",
      "MSG 20190410 150033 OK\n",
      "MSG 20190410 150034 +CSQ:2\n",
      "CSQ 20190410 150034 2\n",
      "MSG 20190410 150034 OK\n",
      "MSG 20190410 150042 +CSQ:1\n",
      "CSQ 20190410 150042 1\n",
      "MSG 20190410 150042 OK\n",
      "MSG 20190410 150042 +CIEV:0,1\n",
      "CIEV 20190410 150042 1\n",
      "MSG 20190410 150051 +CSQ:0\n",
      "CSQ 20190410 150051 0\n",
      "MSG 20190410 150051 OK\n",
      "MSG 20190410 150051 +CIEV:0,0\n",
      "CIEV 20190410 150051 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MSG 20190410 150059 +CSQ:4\n",
      "CSQ 20190410 150059 4\n",
      "MSG 20190410 150059 OK\n",
      "MSG 20190410 150059 +CIEV:0,4\n",
      "CIEV 20190410 150059 4\n",
      "MSG 20190410 150100 +CSQ:4\n",
      "CSQ 20190410 150100 4\n",
      "MSG 20190410 150100 OK\n",
      "MSG 20190410 150108 +CSQ:3\n",
      "CSQ 20190410 150108 3\n",
      "MSG 20190410 150108 OK\n",
      "MSG 20190410 150108 +CIEV:0,3\n",
      "CIEV 20190410 150108 3\n",
      "MSG 20190410 150117 +CSQ:0\n",
      "CSQ 20190410 150117 0\n",
      "MSG 20190410 150117 OK\n",
      "MSG 20190410 150117 +CIEV:0,0\n",
      "CIEV 20190410 150117 0\n",
      "MSG 20190410 150125 +CSQ:2\n",
      "CSQ 20190410 150125 2\n",
      "MSG 20190410 150125 OK\n",
      "MSG 20190410 150125 +CIEV:0,2\n",
      "CIEV 20190410 150125 2\n",
      "MSG 20190410 150134 +CSQ:3\n",
      "CSQ 20190410 150134 3\n",
      "MSG 20190410 150134 OK\n",
      "MSG 20190410 150134 +CIEV:0,3\n",
      "CIEV 20190410 150134 3\n",
      "MSG 20190410 150134 +CSQ:3\n",
      "CSQ 20190410 150134 3\n",
      "MSG 20190410 150134 OK\n",
      "MSG 20190410 150141 +CSQ:3\n",
      "CSQ 20190410 150141 3\n",
      "MSG 20190410 150141 OK\n",
      "MSG 20190410 150143 +CSQ:3\n",
      "CSQ 20190410 150143 3\n",
      "MSG 20190410 150143 OK\n",
      "MSG 20190410 150150 +CSQ:5\n",
      "CSQ 20190410 150150 5\n",
      "MSG 20190410 150150 OK\n",
      "MSG 20190410 150150 +CIEV:0,5\n",
      "CIEV 20190410 150150 5\n",
      "MSG 20190410 150159 +CSQ:3\n",
      "CSQ 20190410 150159 3\n",
      "MSG 20190410 150159 OK\n",
      "MSG 20190410 150159 +CIEV:0,3\n",
      "CIEV 20190410 150159 3\n",
      "MSG 20190410 150207 +CSQ:2\n",
      "CSQ 20190410 150207 2\n",
      "MSG 20190410 150207 OK\n",
      "MSG 20190410 150207 +CIEV:0,2\n",
      "CIEV 20190410 150207 2\n",
      "MSG 20190410 150209 +CSQ:2\n",
      "CSQ 20190410 150209 2\n",
      "MSG 20190410 150209 OK\n",
      "MSG 20190410 150216 +CSQ:3\n",
      "CSQ 20190410 150216 3\n",
      "MSG 20190410 150216 OK\n",
      "MSG 20190410 150216 +CIEV:0,3\n",
      "CIEV 20190410 150216 3\n",
      "MSG 20190410 150217 +CSQ:3\n",
      "CSQ 20190410 150217 3\n",
      "MSG 20190410 150217 OK\n",
      "MSG 20190410 150226 +CSQ:3\n",
      "CSQ 20190410 150226 3\n",
      "MSG 20190410 150226 OK\n",
      "MSG 20190410 150235 +CSQ:3\n",
      "CSQ 20190410 150235 3\n",
      "MSG 20190410 150235 OK\n",
      "MSG 20190410 150243 +CSQ:3\n",
      "CSQ 20190410 150243 3\n",
      "MSG 20190410 150243 OK\n",
      "MSG 20190410 150252 +CSQ:3\n",
      "CSQ 20190410 150252 3\n",
      "MSG 20190410 150252 OK\n"
     ]
    }
   ],
   "source": [
    "df = serial_exchange(500)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the CSV\n",
    "test_letter = 'N'\n",
    "filename = '20190410T145254_csqlog.csv'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = pd.read_csv(filename)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 150 entries, 0 to 149\n",
      "Data columns (total 3 columns):\n",
      "date    150 non-null object\n",
      "csq     107 non-null float64\n",
      "cier    43 non-null float64\n",
      "dtypes: float64(2), object(1)\n",
      "memory usage: 3.0+ KB\n"
     ]
    }
   ],
   "source": [
    "df2.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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nZY+1WnpUn2WPtVp6VJ95peTk7PK3fcvab0ykYQ1bdqUadMive/gXmP8+PF06dIl6jDKFdVp6VOdli7VZ+lTnZYu1Wd+Zra45LV0OVJEREQkEkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCQo0ym2Bme/0jJycn8hiSfTTKbBL1yyoiIrLXKhMDeO8J3y5bQo+Bo6MOo0TpGZSJOAHGDukddQgiIiJ7LbWEiYiIiERASZiIiIhIBJSEiYjs5dauXUt2djbZ2dnUr1+fRo0axaa3bt2a9H6ee+45VqxYkXDZf//7Xw4//HCys7M55JBDuOuuuwD46KOPmDx58i7HPH36dN59990S11u8eDFdunShZcuWtGrViscffzy27IcffuC4446jefPmnHTSSaxduxaAOXPmcOSRR1K1alUefvjhfPsbMmQIrVq1olWrVjz22GNFljt58mRatGhBVlYW999/f6Hlf/jDH6hVq1aR2998881kZmYWWmfz5s3069ePrKwsjjzySL755ptC2+7cuZOTTjqJWrVq0bt34m4bxZU/f/58qlevHjsHBgwYAMD69evp3r07LVq0oFWrVvzpT3/ape3jde/enezs7ITbf/DBB6Snp8e2v+eee2LLHnjgAVq1akXr1q0555xz2LJlS2ybQw89lNatW3PxxRezfft2AO69997Yflq1akWlSpVirzPA9u3badu2bb56KmpfZZGSMBGRvVx6ejq5ubnk5uZyxRVXcN1118Wmq1SpkvR+ikvCLrjgAp599llyc3OZPXs2ffv2BXYvCdu+fXvSSVjlypV5+OGHmTt3Lp9++ikPPfQQ//vf/wC45557OOWUU/jqq6845phjGDx4MAB169blscce47rrrsu3r9zcXIYPH860adPIzc3ljTfeYOHChYXK3LZtG48++ijvv/8+c+bM4YUXXoiVCTBlyhQ2bNhQbNy9evVKWC9///vfqV+/PvPnz2fAgAHccssthdYxM2666SaGDRuWcN/JlN+iRYvYOfDEE0/E9vvHP/6RL7/8kunTp/Pxxx8zbty4pLfPM3LkyGITUICuXbvGts9L9hYvXszTTz9NTk4Os2bNYvPmzbz66qvs2LGDCy+8kFdffZXZs2dTv359XnrpJSBIZvP2c/fdd9OtWzfS09Nj5QwZMoTWrVvHpovbV1mkJExEpAwbPnw4hx12GNnZ2Vx55ZXs3LmT7du3c95559GmTRtat27No48+yiuvvEJubi5nnXVWwha0lStXUr9+fQAqVqxIy5YtWbBgAUOHDuX+++8nOzubSZMmMWbMGA4//HDat2/PiSeeyPfffw/AoEGDuPzyyznhhBM4++yzufPOO3nppZfIzs7mtddeKzL+hg0bxlpcatasycEHH8yyZcsAGDNmDBdccAEQJImjRwc/SsrIyKBjx45UqpT/t2Xz5s3jyCOPpHr16lSuXJnOnTszatSoQmVOnjyZJk2acMABB1C1alXOPPNMxowZAwQJ5B//+EfuvffeYuv9yCOPjNVXvPiYzzzzTN57771C65gZxx13HGlpaYWWJVt+ImlpaRx77LEAVK1alfbt27N06dJd2se6det49NFHEyaPydi2bRubN29m+/bt/PTTTzRs2JDvv/+etLQ0mjVrBsAJJ5zA66+/Xmjbl19+mbPPPjs2vXjxYsaNG8dFF10Um5fsvsoKJWEiImXU7NmzGTVqFJMmTSI3N5ft27czYsQIcnJyWLVqFbNmzWL27Nmcf/75seQrLxkr2IJ27bXX0rx5c/r06cM//vEPtmzZQrNmzejfvz833ngjubm5/Pa3v6Vz585MnjyZGTNm0KdPHx588MHYPmbMmMGbb77Jq6++ym233cY555xDbm4u/fr1Y8qUKVxxxRXFHs/XX3/N7Nmz6dSpExBcjtx///0BaNSoEcuXLy92+zZt2jB+/Hh+/PFHNm7cyDvvvMOSJUsKrbds2TLq1asXm87MzIwlfo888gh9+/YlIyOj2LKKsmzZMho3bgxAlSpVqFGjBmvWrEl6+6LKHzVqFHfeeWdsev78+bRv354uXbowadKkQvtZvXo1b7/9Nt26ddul7f/0pz/xxz/+kerVqxcb58SJE2nXrh3du3dn7ty5ABxwwAFcc801NG7cmAYNGlCvXj26detGRkYGP/30EzNmzMDdef311wu9Lhs2bOCDDz6gT58+sXnXXnst999/P2YWm5fMvsoS3aJCRKSM+uCDD5g6dSodO3YEYNOmTTRu3JiTTjqJL7/8kmuuuYbu3btz4oknlrivO+64g/POO4/333+fF154gVdeeYUPPvig0HrffPMNZ555JitWrGDLli0cdNBBsWW9evWiWrVqCfd/+OGHc/jhhxdZ/rp16+jbty+PPfZYwhYiIN8/40Rat27NwIEDOf7440lLS6N9+/aFWssA3D3hvpcuXcro0aMZP358wnWSUdS+k1Fc+aeffjqnn346ECSN33zzDbVr1+azzz6jb9++zJs3L1Zv27Zt46yzzuL666/ngAMOSHr7L7/8kqVLl3Laaacxf/78IuPs1KkTixYtIi0tjTfffJM+ffrw9NNP88MPPzB27FgWLlxIzZo16du3LyNGjOB3v/sd//rXv7j66qvZunUrxx9/fKHXZcyYMRx77LGxS5GjR4+mcePGZGdn5zsPK1SoUOK+yhK1hImIlFHuzsUXXxzrU/Pll1/y5z//mTp16jBz5kyOPvpoHn30US6//PKk9peVlcWVV17JRx99xGeffZavg3SeAQMGcN111zFr1iyefPJJNm/eHFtWo0aN3TqOrVu30qdPHy688EJ69uwZm1+nTh1WrlwJBC1MiS7/FXTZZZcxffp0JkyYQHp6Os2bN2fRokWxzt9Dhw4lMzMzdhkVguSnYcOGTJ8+na+++opmzZqRlZXFunXraNGiBVu3bo1tH9+alEhmZmasZWbr1q1s3LgxXx+n4hRVfkHVqlWjdu3aABx22GEccMABsaTJ3bnkkkto3bo1V111VcJyitr+008/ZcqUKTRt2pQuXbowd+5cjjvuuELbp6enxxK+0047jQ0bNrBhwwbef/99mjdvTt26dalSpQqnn356rJXt6KOPZuLEiXz22WccffTRNG/ePN8+R4wYke9S5KRJk3jjjTdo2rQp5557Lu+//37sMm9J+ypLlISJiJRRxx9/PCNHjmTVqlVAcPnum2++YeXKlbg7Z5xxBnfccQfTp08HYL/99mP9+vUJ9/XWW2/FWl/+97//UbVqVfbbb79C26xdu5ZGjRrh7gwfPrzI2IorK567c+GFF5Kdnc0111yTb1nPnj1jZQwfPpxevXqVuL+85GrRokWMGTOGs846i6ZNm8YS1f79+3PEEUewePFiFi9ezJYtWxg5ciQ9e/akZ8+erFixgkWLFjF//nxq1qzJl19+SZUqVWLb33bbbcWWHx/zyJEjk2qFjN82UfkFrVy5kh07dgDBZcWvv/6aAw88EIBbbrmFzZs388ADDxRZTlHbX3XVVXz77bcsWrSI8ePH07JlSz788MNC28f/uGPy5MlUqlSJtLQ0mjRpwqeffsqmTZtwdz788EMOOeQQ4OfXZfPmzQwePDjfpenVq1czadIkTjvttNi8wYMHs3TpUhYtWsSLL77IiSeeGKvX4vZV1igJExEpo9q0acNf/vIXjj/+eNq2bcuJJ57Id999x5IlS+jcuTPZ2dlceuml/PWvfwXgoosuon///gk75g8bNowWLVqQnZ3NhRdeyL/+9S8qVKhAr169GDlyJO3bt2fSpEncfvvtnH766Rx77LHF9pvq1q0bn3/+Oe3bt+e1114rsk/YJ598wssvv8y4ceNirU15ndlvvfVW3nrrLZo3b86ECRO48cYbgaDlKjMzk0cffZTbb7+dzMxMfvrpJwB69+5Ny5Yt6d27N88880zCVqjKlStz9dVXc8IJJ9CyZUvOPffchC1OxRk4cCBNmzZl3bp1ZGZmcvfddwNBS9zy5cvJysri8ccfj9V9QUceeSRnn3027733HpmZmQmTnXjxfbo+/vhj2rZtS3Z2NmeddRb/+Mc/SE9PZ9GiRdx3333Mnj2bQw89lOzsbJ5//vmkty/OE088wdChQ4Gg1apVq1ZkZ2dz3XXX8corrwBw1FFH0bNnT9q3b0+bNm2oVKkSl1xyCQB/+9vfOOSQQ2jXrh19+/alc+fOsX2//vrrnHLKKSX2Q8tT3L7KGtvd6957UseOHX3atGkpLcPMysRwQL3aw5gZUUeRnLFDeu92v4o9afz48XTp0iXqMMoV1WnpUn2WPtVp6VJ95mdmOe7esaT11BImIiIiEgElYSIiIiIRUBImIiIiEgElYSIie7k9MXbkueeey4EHHhjb7zHHHLNLMQ4aNKjQOI4Fvfvuuxx66KG0adOGDh06MH78+NiyqVOn0rp1a7KysvINR/TKK6/QsmVLKlSoQG5ubmz+li1buOCCC2jTpg3Z2dlMmDChyHLvvvtusrKyOPjggwvd+yzR2ITxihvnccGCBRx22GFkZWXx+9//nm3bthXavrhxLjMzM2PxF3UPNXfnyiuvJCsri3bt2sXqICcnhyOOOILWrVvTtm3bIkclGDp0KPvvv3/sdc3rqJ/s9nlGjBiBmcXK//TTT2nXrh3Z2dm0a9eO//73v7F1ixq/c9CgQfnO3bwfYBR3Xrz44ou0adOGtm3b0r17d3788cdi4yxryu4dzkRE9hF5Y0cC3H777aSlpXHDDTfs8n6ee+45Dj300CLvt/XQQw8VmYyUhnr16vHWW2/RoEEDPv/8c3r06BG7p9YVV1zB888/T8eOHTnppJMYN24cJ5xwAm3atGH06NFcfPHF+fb19NNPU6VKFWbNmsWKFSvo0aMHU6dOLXRj1JkzZ/LGG28wd+5clixZwsknn5zvtg95YxPm/bqyoLxxHtevX19orMcbb7yRm266iX79+tG/f3+GDRvGpZdemm+dvHEui0py/vOf/xQ7TuObb77JkiVLmD9/PhMnTmTAgAH897//JS0tjZdeeolmzZqxdOnSWL3tt99+hfZxzjnnFEoAd2X7devW8eSTT8ZuCgzQrl07cnJyqFSpEt9++y2tW7fmlltuYebMmbHxOytVqsSJJ55Ijx49YrfQuPHGG7n22mvz7b+o82Lr1q0MHDiQL774gtq1azNw4ECefPJJBg0aVGR9lTVqCRMRKcNKa+zIogwaNIhLLrmEY489lt/85jf5Bnu+8847adGiBSeccAJfffVVifs69NBDadCgARDcXmPDhg1s27aNJUuWsHnzZjp16oSZcd5558XGiWzZsmW+u/Lnib+RaP369alRowYzZhT+6fiYMWM4++yzqVKlCs2aNaNJkybk5OQAiccmLKiocR537NjBhAkTYnehjx/bMl5R41wma8yYMZx//vlAcJPSFStWsHLlSlq0aBEbPzEzM5M6derE7heXjF3Z/tZbb+XWW2+latWqsXm/+tWvYse0adMmIGi1S3b8znhFnRfujruzceNG3J3169fTsGHDpI+xLFASJiJSRpXm2JEA1113XexSUd4/fghu3jpu3DgmT57Mbbfdxo4dO/jss894/fXXyc3N5bXXXuOzzz6LrR9/T6mijBw5ksMPP5zKlSvnG28R8o/lWJR27doxevRoduzYwYIFC5gxY0aR40QWte9EYxMma+XKldStW5eKFSsmHXNBZka3bt3o0KEDzz77bGx+fP0lUzd5d6Vv2rQpEIz/+Pbbb8eWjxw5krZt23LmmWcmjLHg9vGmTp3K999/z8knn5xwu1atWtGuXTuuv/56KlasWOL4nY888ght27alf//+CUdkiD8vqlatyuOPP07Lli1p2LAh8+fP58ILLyy0TVmW8iTMzCqa2QwzGxtOH2hmU8zsKzN7xcwK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AkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKQsiTMzKqZ2Wdm9rmZzTGzO8L5B5rZFDP7ysxeMbMqqYpBREREZG+VypawLUA3d28HZAMnm9kRwH3AQ+7eHFgNXJLCGERERET2SilLwjywIZysHD4c6Aa8Fs4fDvROVQwiIiIieytz99Tt3KwikANkAU8A9wOT3T0rXN4YeMfdWyfY9jLgMoCMjIwOI0aMSFmcADk5OaRnZKW0jNJQ61ew5qeoo0jO2u/m06FDh6jDKNGGDRtIS0uLOoxyRXVaulSfpU91WrpUn/l17do1x907lrReSpOwWCFmtYBRwG3A8wWSsLfdvU1x23fs2NGnTZuW6hjpMXB0SssoDb3aw5gZUUeRnLFDerMnzq9favz48XTp0iXqMMoV1WnpUn2WPtVp6VJ95mdmSSVhe+TXke6+BhgPHAHUMrNK4aJM4Ns9EYOIiIjI3iSVv47cP2wBw8yqA8cD84CPgX7hahcAY1IVg4iIiMjeqlLJq+y2BsDwsF9YBWCku481s7nACDO7G5gBPJvCGERERET2SilLwtx9JtA+wfyvgcNSVa6IiIhIWaA75ouIiIhEQEmYiIiISASUhImIiIhEQEmYiIiISASUhImIiIhEQEmYiIiISASUhImIiIhEQEmYiIiISASUhImIiIhEQEmYiIiISASUhImIiIhEQEmYiIiISASUhInIPqtRZhPMbK9/5OTkRB5DMo9GmU2ifklFypRKUQcgIhKVb5ctocfA0VGHUaL0DMpEnGOH9I46BJEyRS1hIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhEoNgkzs6v2VCAiIiIi+5KSWsIu3iNRiIiIiOxjdDlSREREJAIl3ay1rZmtSzDfAHf3mimISURERKTcKykJm+Xu7fdIJCIiIiL7EF2OFBEREYlASUnYq3skChEREZF9TEmXIyub2W1FLHN3v6u0AxIRERHZF5SUhG1IMO9XQH+gDqAkTERERGQ3FJuEufuDec/NbD/gGoJ7h40AHixqOxEREREpXkktYZhZbWAgcA4wHDjU3VenOjARERGR8qzYJMzM7gf6AH8H2rh7osuTIiIiIrKLSvp15PVAQ2AQ8K2ZrQsf64u4iauIiIiIJKGkPmG6j5iIiIhICpR0ObJ2gVkOrHF3T11IIiIiIuVfSR3zcwgSL4ubt5+Z5QL93X1RqgITERERKc9Kuhx5YKL5ZtYHeBo4ORVBiYiIiJR3u9Xny93fAOqVciwiIiIi+4zdSsLMLG13txURERGRkjvmD0ww+9dAT+DxlEQkIiIisg8oqWP+fgWmHVgBnOvus1ITkoiIiEj5V1LH/DvynoeXIN3dN6Y8KhEREZFyrsR+XWb2BzP7BlgMfGNmi83sytSHJiIiIlJ+FZuEmdkg4DSgi7vXcfc6QFfglHCZiIiIiOyGklrCzgP6uPvXeTPC52cC56cyMBEREZHyrMTLke6+OcG8TcDOlEQkIiIisg8oKQlbambHFZwZzluempBEREREyr+SblHxf8AYM5vIz+NIdgKOAnqlODYRERGRcqukJGwLcCFwENCKYCDvCcCzQKHLlCIiIiKSnJKSsIeBW939ufiZZtYxXHZaqgITERERKc9K6hPW1N1nFpzp7tOApsVtaGaNzexjM5tnZnPM7Jpwfm0zG2dmX4V/f73b0YuIiIiUUSUlYdWKWVa9hG23A9e7+yHAEcAAM2sJ3Ax86O7NgQ/DaREREZF9SklJ2FQzu7TgTDO7hKCjfpHcfbm7Tw+frwfmAY0IOvQPD1cbDvTe1aBFREREyrqS+oRdC4wys3P4OenqCFQBTk+2EDNrCrQHpgAZ7r4cgkTNzOrtYswiIiIiZZ65e8krmXUFWoeTc9z9o6QLCAb+/gS4x93fMLM17l4rbvlqdy/UL8zMLgMuA8jIyOgwYsSIZIvcLTk5OaRnZKW0jNJQ61ew5qeoo0jO2u/m06FDh6jDKNGGDRtIS0uLOoxypazUqd73pausvOeh7JyjZYXqM7+uXbvmuHvHktZLKgnbXWZWGRgLvOfuQ8J5XxKMRbnczBoA4929RXH76dixo0+bNi1lcYZx0WPg6JSWURp6tYcxM6KOIjljh/QmledXaRk/fjxdunSJOoxypazUqd73pausvOeh7JyjZYXqMz8zSyoJK3HYol8QgBHcT2xeXgIW+jdwQfj8AmBMqmIQERER2VuV1CfslziKYADwWWaWG867FbgXGBl27v8GOCOFMYiIiIjslVKWhLn7RII77CdSaDxKERERkX1Jyi5HioiIiEjRlISJiIiIREBJmIiIiEgElISJiIiIREBJmIiIiEgElISJiIiIREBJmIiIiEgElISJlBGNMptgZmXikZOTE3kMyTxERKKUyjvmi0gp+nbZkjIxziFAegZlItaxQ3pHHYKI7MPUEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhIiIiIhFQEiYiIiISASVhkjIVKlbGzPb6R05OTuQxJPMQEZHypVLUAUj5tXPHNnoMHB11GCVKz6BMxDl2SO+oQxARkVKkljARERGRCCgJExEREYmAkjARERGRCCgJExEREYmAkjARERGRCCgJExEREYlAypIwM3vOzL43s9lx82qb2Tgz+yr8++tUlS8iIiKyN0tlS9gw4OQC824GPnT35sCH4bSIiIjIPidlSZi7TwB+LDC7FzA8fD4c0N0nRUREZJ+0p/uEZbj7coDwb709XL6IiIjIXsHcPXU7N2sKjHX31uH0GnevFbd8tbsn7BdmZpcBlwFkZGR0GDFiRMriBMjJySE9IyulZZSGWr+CNT9FHUVy1n43X3VaispKfYLqtLSVpfrs0KFD1GEkZcOGDaSlpUUdRrmh+syva9euOe7esaT19nQS9iXQxd2Xm1kDYLy7tyhpPx07dvRp06alLM4wtjIxfmCv9jBmRtRRJGfskN6q01JUVuoTVKelrSzVZyr/p5Sm8ePH06VLl6jDKDdUn/mZWVJJ2J6+HPlv4ILw+QXAmD1cvoiIiMheIZW3qHgZ+BRoYWZLzewS4F7gBDP7CjghnBYRERHZ51RK1Y7d/ewiFh2XqjJFREREygrdMV9EREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREpFhYqVMbMy8cjJyYk8hmQelatUjzyG8lSfjTKbRP02yadS1AGIiEj5sHPHNnoMHB11GElJz6BMxDp2SO8yEWdZqs+9iVrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkAkrCRERERCKgJExEREQkApEkYWZ2spl9aWbzzezmKGIQERERidIeT8LMrCLwBHAK0BI428xa7uk4RERERKIURUvYYcB8d//a3bcCI4BeEcQhIiIiEpkokrBGwJK46aXhPBEREZF9hrn7ni3Q7AzgJHfvH06fBxzm7lcXWO8y4LJwsgXw5R4NdO9VF1gVdRDljOq09KlOS5fqs/SpTkuX6jO/A9x9/5JWqrQnIilgKdA4bjoT+LbgSu7+d+DveyqossLMprl7x6jjKE9Up6VPdVq6VJ+lT3VaulSfuyeKy5FTgeZmdqCZVQF+B/w7gjhEREREIrPHW8LcfbuZXQW8B1QEnnP3OXs6DhEREZEoRXE5End/G3g7irLLAV2iLX2q09KnOi1dqs/SpzotXarP3bDHO+aLiIiIiIYtEhEREYmEkrAyRMM9lS4ze87Mvjez2VHHUh6YWWMz+9jM5pnZHDO7JuqYyjozq2Zmn5nZ52Gd3hF1TOWBmVU0sxlmNjbqWMoDM1tkZrPMLNfMpkUdT1miy5Fl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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "bins = np.arange(7)-0.5\n",
    "\n",
    "fig = df2.csq.hist(figsize=(10,5), align='mid', bins=bins, edgecolor=\"black\")\n",
    "bins = np.arange(7)-0.5\n",
    "fig.set_xlabel(\"CSQ REPLY (RSSI)\")\n",
    "fig.set_ylabel(\"COUNT\")\n",
    "fig.set_title(f\"Test {test_letter}: Housing Open, Internal Power From TP, External Comms\")\n",
    "#Determine Test Length\n",
    "date_str = f\"Test Start: {df2.date[0]}\\nTest End: {df2.date.iloc[-1]} \"\n",
    "plt.text(3,40,date_str);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Time')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Plot CSQ over time\n",
    "import matplotlib.dates as mdates\n",
    "ax = df2.plot(kind='line',x='date',y='csq', figsize=(10,5))\n",
    "ax.xaxis.set_major_locator(plt.MaxNLocator(4))\n",
    "ax.set_title(f\"Test {test_letter} Time Series\")\n",
    "ax.set_ylabel(\"CSQ (RSSI)\")\n",
    "ax.set_xlabel(\"Time\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
