Конечно, похоже, что вы читаете данные с последовательного порта после каждой команды, чтобы дождаться подтверждения от устройства.Простое переключение в спящий режим не является гарантией того, что устройство обработало вашу команду и готово к дополнительному вводу.После отправки команды вы должны прочитать ответ устройства (через последовательный порт), чтобы убедиться, что оно обработало вашу команду, как ожидалось.Обычно устройства, которые принимают команды «AT», возвращают «OK» в новой строке после обработки команды.Если он возвращает ошибку, вы должны выбросить или вернуть false в зависимости от условия ошибки.Проверьте спецификации вашего устройства или попробуйте взаимодействовать с ним через терминал, чтобы увидеть, как оно реагирует.
Документация MSDN для SerialPort класса иллюстрирует, как читать с последовательного порта.*
Обратите внимание, что другой альтернативой может быть рефакторинг вашего метода для получения коллекции сообщений для отправки.Это упростит повторное использование одного и того же экземпляра SerialPort, а не его открытие, настройку и закрытие для каждого отправляемого сообщения.