initialize a USB device

USB GPIO board on Ubuntu 16.04LTS server. When system reboots, the tty assigned to the device is random and unpredictable. Only successful way I have found to initialize the device is to connect to it with "screen /dev/ttyACM0" or 1 or whatever it turns out to be. Once that is done, my bash scripts work fine with the device, but they will NOT work unless I connect to the device manually first time with the screen command. I am trying to automate the startup so I dont have to do the manual screen command. Any advice or suggestions would be appreciated.

ETA: There are really two problems here. One is finding my device (which ttyACM# is it? For another thread!). My important issue is the initialization of the device. Here's the pertinent part of my script:

#!/bin/bash
ttyID=ttyACM0
stty -F /dev/${ttyID} -cstopb -crtscts cs8 9600 #CONFIGURE SERIAL PORT
exec 3</dev/${ttyID}                     #REDIRECT SERIAL OUTPUT TO FD 3
cat <&3 > /tmp/ttyDump.dat &             #FD 3 TO FILE, persist
PID=$!                                   #SAVE PID TO KILL CAT
#  echo "Process ID is $PID"
printf "ver\r" > /dev/${ttyID}      #SEND COMMAND STRING TO SERIAL PORT
sleep .2s                           #WAIT FOR RESPONSE
kill $PID >/dev/null 2>/dev/null    #KILL CAT PROCESS
# 2>/dev/null directs stderror to /dev/null
exec 3<&- 2>/dev/null               #FREE FD 3
# output will have echo of command plus blank lines, value
# we need is on second line, but first char is garbage
# GRAB CAPTURED DATA, use only line 2, remove first char
RESULT=$(cat /tmp/ttyDump.dat)
SIZE=${#RESULT}
echo "Length is $SIZE"
echo "Result is $RESULT"

This script runs without error, but length value is zero and result is blank until I first go to terminal and enter "screen /dev/ttyACM0", then hit return a time or two and type "ver" hit enter and get back the version of the device. Now my script pasted above works (and will continue to work as long as the machine is not rebooted or the USB unplugged), length comes back with a value and result has the version number.

My question is: what is "screen /dev/ttyACM0" doing to initialize the device, which obviously my script is NOT doing, and how might I add this to my script to automate doing it?