если ничего не поможет - посмотри в сторону https://erlang.org/doc/man/socket.html - это на уровень ниже TCP, но если приходит кривой TCP пакет там ты его увидишь
кстати - проверяешь на линухе и на винде на физически разных машинах? Если да, то есть вероятность, что просто при перетыкании всего хозяйства в другую машину где-то неконтакт образовывается - если это связано с RS232 это может быть проблема
и кстати, по приему середины пакета - с таких адаптеров после соединения надо бы вычитать с таймаутом данные, чтобы удостовериться, что в буфере у него ничего не осталось после предыдущего соединения.