Have you tried cron?
Assuming you can run the script from the terminal, as user pi (i.e. No sudo required), and it runs correctly:
From the terminal (CLI; don't enter the $ in column 1 - it's the shell prompt):
$ crontab -e
You may be prompted to choose an editor for your crontab; nano or pico are reasonable choices if you're not familiar with the other ...
Yes, there is a way to reset the serial port, by closing it and opening it again. This will also reset the Arduino.
However, I would rather try to understand what's wrong with the communication. You already have a timeout which should apply to all read/write operations.
Print raw strings (make sure you can distinguish strings with and without \n) which you ...
Finding read-only partitions can be done by looking at /proc/mounts:
egrep " ro,|,ro " /proc/mounts
Fixing is a different story. If your partitions become read-only because you often have filesystem errors, then the easiest way would be to enable journalling and unconditional filesystem checks on boot, instead of trying to fix the filesystem which ...
I'm not sure what error your are having, but check out this page for information about running programs on the rasrpberry pi on startup.