в чем смысл передавать integer, как указатель (PChar)
у вас массив из 18 байт, а если в порт пришло больше 18 байт и вы читаете это в уже выделенную область памяти - что-нибудь попортите вне этой области (может значение n)
прикрепляю пример, там все передается